Sean McArthur
cb3f39c2dc
feat(lib): update Tokio, bytes, http, h2, and http-body
2019-12-04 10:56:34 -08:00
James Le Cuirot
131962c86a
feat(client): filter remote IP addresses by family of given local IP address
...
It is not possible to connect to an IPv4 address from an IPv6 address or
vice-versa so don't waste time trying. If no remote addresses match then a
"missing connect error" will now occur.
2019-11-19 10:36:07 -08:00
Sean McArthur
9d9233ce7c
feat(client): change Resolve to be Service<Name>
...
Closes #1903
BREAKING CHANGE: The `Resolve` trait is gone. All custom resolves should
implement `tower::Service` instead.
The error type of `HttpConnector` has been changed away from
`std::io::Error`.
2019-11-12 13:08:39 -08:00
Sean McArthur
8b878a805a
perf(client): change HttpConnecting to hold Arc<Config> instead of inlined fields
2019-10-23 16:21:51 -07:00
Sean McArthur
f71304b449
refactor(client): use pin_project for Resolve futures
2019-10-23 14:37:03 -07:00
Sean McArthur
3ee47199d9
refactor(client): de-duplicate HttpConnector::call code
2019-10-22 17:50:13 -07:00
Sean McArthur
d67e49f149
feat(client): change Connect trait into an alias for Service
...
The `Connect` trait is now essentially an alias for
`Service<Destination>`, with a blanket implementation as such, and is
sealed.
Closes #1902
BREAKING CHANGE: Any manual implementations of `Connect` must instead
implement `tower::Service<Destination>`.
2019-10-22 14:40:23 -07:00
Steven Fackler
4179297ac9
feat(client): Add connect timeout to HttpConnector ( #1972 )
...
This takes the same strategy as golang, where the timeout value is
divided equally between the candidate socket addresses.
If happy eyeballs is enabled, the division takes place "below" the
IPv4/IPv6 partitioning.
2019-10-14 11:48:17 -07:00
Sean McArthur
5b348b821c
feat(lib): add optional tcp feature, split from runtime
...
The `HttpConnector` and `AddrListener` types which make use of
`tokio::tcp` have been made their own optional feature. This allows
using them without requiring the *full* tokio runtime.
2019-10-01 10:15:46 -07:00
Taiki Endo
053d6497bd
chore(dependencies): update tokio, h2, and tower-make
2019-09-23 12:45:37 -07:00
Weihang Lo
144893b409
Upgrade some lib tests to async/.await version ( #1882 )
...
* test(http): use async/.await
Signed-off-by: Weihang Lo <me@weihanglo.tw >
* test(pool): use async/.await
* test(pool): pass &mut Future into PollOnce
* test(client): tests/benches using async/.await
* test(client): change due to PR #1917
* test(client): change Delay to delay fucntion
Ref: https://github.com/tokio-rs/tokio/pull/1440
* test(client): remove warning triggers
2019-09-06 09:54:11 -07:00
Lucio Franco
eee2a72879
feat(client): provide tower::Service support for clients ( #1915 )
2019-08-30 12:54:22 -07:00
Alex Gaynor
eef407d60e
docs(client): Remove comment that had grown out of date ( #1918 )
2019-08-30 11:14:56 -07:00
Sean McArthur
049b5132db
feat(client): change GaiResolver to use a global blocking threadpool
...
BREAKING CHANGE: Calls to `GaiResolver::new` and `HttpConnector::new` no
longer should pass an integer argument for the number of threads.
2019-08-29 14:16:43 -07:00
Sean McArthur
5b1feb8a3c
refactor(lib): update to tokio alpha.4
2019-08-29 13:12:44 -07:00
Daniel Johnson
536779e16c
refactor(dns): migrate deprecated trim_{left,right} -> trim_{start,end}
2019-08-29 11:12:56 -07:00
Sean McArthur
49b12c415d
refactor(lib): fix remaining lint warnings (besides tests)
2019-08-22 13:57:50 -07:00
Sean McArthur
7b1d6d71b7
refactor(lib): fix many lint warnings
2019-08-21 11:58:02 -07:00
lzutao
fc7f81b67c
style(lib): use rust 2018 edition idioms ( #1910 )
2019-08-21 11:22:07 -07:00
lzutao
ae75b3a732
chore(lib): remove async_await feature gate ( #1909 )
...
`async_await` is stabilized in rust-lang/rust#63209 .
2019-08-21 11:09:14 -07:00
Douman
4920f5e264
chore(dependencies): Upgrade tokio
2019-08-19 09:00:21 -07:00
Kyle Huey
a503f8b336
fix(client): impl<T: Connect> Connect for Box<T> ( #1889 )
2019-08-14 14:10:40 -07:00
Weihang Lo
e90f0037d3
docs(client): HttpInfo doc test to async/await
2019-07-15 11:21:16 -07:00
Sean McArthur
5da17df97f
chore(lib): individually disable tests and examples that aren't updated
2019-07-12 13:44:03 -07:00
Sean McArthur
3524db9473
refactor(client): use a tokio-threadpool for the GaiResolver
2019-07-10 16:11:05 -07:00
Sean McArthur
8d4ae27b42
refactor(lib): remove build script detecting rust >= 1.34
2019-07-10 10:23:48 -07:00
Sean McArthur
8f4b05ae78
feat(lib): update to std::future::Future
...
BREAKING CHANGE: All usage of async traits (`Future`, `Stream`,
`AsyncRead`, `AsyncWrite`, etc) are updated to newer versions.
2019-07-09 15:55:22 -07:00
Sean McArthur
da9b0319ef
refactor(lib): update to 2018 edition
2019-07-09 15:16:01 -07:00
Dietmar Maurer
cf24765a22
style(client): HttpConnector: use consistent naming - s/buf/buffer/ ( #1840 )
...
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com >
2019-07-02 09:45:59 -07:00
Dietmar Maurer
386109c421
feat(client): HttpConnector: allow to set socket buffer sizes
...
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com >
2019-07-01 11:09:04 -07:00
Sean McArthur
01c03db7ea
chore(lib): add dyn keyword to trait objects ( #1820 )
...
Requires Rust 1.27.
2019-06-03 13:08:13 -07:00
Andy Moran
d1183a8027
feat(client): Implement TryFrom for Destination ( #1810 )
...
Add TryFrom<Uri> impl for Destination, for compiler version >= 1.34.
Closes #1808
2019-05-08 18:39:47 -07:00
Sean McArthur
c0e08a41cc
refactor(lib): improve client and h1 logs
2019-02-15 15:58:35 -08:00
Sean McArthur
18f022c70b
docs(lib): fix several broken links throughout docs
...
Closes #1749
Closes #1750
2019-01-24 11:20:22 -08:00
Sean McArthur
c328c62ec2
fix(client): parse IPv6 hosts correctly in HttpConnector
2019-01-23 11:24:26 -08:00
Sean McArthur
83dad03a81
test(client): update tests for http::Uri::host fix
2019-01-22 15:02:23 -08:00
Sean McArthur
c69d1094b3
refactor(lib): replace 'try' macro with '?'
2019-01-18 14:29:12 -08:00
Lucio Franco
c809542c83
feat(client): add Destination::try_from_uri constructor
...
This change adds a try_from_uri function for creating Destinations
outside of the hyper crate. The Destination can only be built if the
uri contains a valid authority and scheme as these are required to
build a Destination.
2019-01-15 09:45:30 -08:00
Linus Färnstrand
be5ec45571
feat(client): Add useful trait impls to Name
2019-01-11 10:01:28 -08:00
Sean McArthur
8842da9184
docs(client): touch ups for Client, Builder, and connect types
2019-01-10 12:18:16 -08:00
Linus Färnstrand
607c4da0b9
feat(client): add FromStr impl for Name
2019-01-10 09:39:26 -08:00
Sean McArthur
1d253b4d47
fix(rt): prevent fallback reactor thread from being created accidentally
...
Switches from `Handle::current()` to `Handle::default()`.
2018-12-18 12:44:08 -08:00
Sean McArthur
65788fe7fe
test(client): disable happy eyeballs tests except in CI
2018-12-05 10:57:37 -08:00
Jeff Labonte
69368f433f
refactor(client): update from deprecated Uri::port to port_part ( #1722 )
2018-11-26 10:06:40 -08:00
Sean McArthur
976a77a673
feat(client): add ALPN h2 support for client connectors
...
- Adds `Connected::negotiated_h2()` method to signal the connection must
use HTTP2. `Connect` implementations should set this if using ALPN.
If a connection to a host is detected to have been upgraded via ALPN,
any other oustanding connect futures will be canceled, and the waiting
requests will make use of the single HTTP2 connection.
The `http2_only` builder configuration still works the same, not
requiring ALPN at all, and always using only a single connection.
2018-10-31 14:51:29 -07:00
Sean McArthur
deaa5d1aa9
chore(client): fix infinite recursion in TokioThreadpoolGaiResolver::new
2018-10-23 13:34:47 -07:00
Sean McArthur
34d780acd0
feat(dns): export client::connect::dns module, and
...
`TokioThreadpoolGaiResolver` type.
2018-10-23 12:49:56 -07:00
Steven Fackler
1e8d6439cf
feat(dns): tokio_threadpool::blocking resolver
...
Unlike the default resolver, this avoids spawning extra dedicated
threads but only works on the multi-threaded Tokio runtime.
Closes #1676
2018-10-23 09:57:04 -07:00
Sean McArthur
6fe532da4c
feat(client): allow Connected::extra to be chained to connectors can be composed
2018-10-18 15:51:19 -07:00
Sean McArthur
2d5af177c1
feat(client): add Resolve, used by HttpConnector
...
This introduces a `Resolve` trait to describe asynchronous DNS
resolution. The `HttpConnector` can be configured with a resolver,
allowing a user to still use all the functionality of the
`HttpConnector`, while customizing the DNS resolution.
To prevent a breaking change, the `HttpConnector` has its `Resolve`
generic set by default to `GaiResolver`. This is same as the existing
resolver, which uses `getaddrinfo` inside a thread pool.
Closes #1517
2018-10-18 12:10:15 -07:00