Commit Graph

1894 Commits

Author SHA1 Message Date
Sean McArthur
bf4fe7c515 perf(h1): remove book keeping on final body writes 2018-05-07 12:48:21 -07:00
Sean McArthur
8f0e01f853 perf(h1): poll body less if is_end_stream 2018-05-07 12:09:15 -07:00
Sean McArthur
0d104deced perf(h1): remove unused error branches from writing body 2018-05-07 11:19:19 -07:00
Sean McArthur
325b7e519a perf(lib): improve parsing by using uninitialized httparse header array 2018-05-07 10:42:44 -07:00
Sean McArthur
fdcd2a4b17 perf(server): reduce task system wake up in new dispatcher 2018-05-07 10:35:26 -07:00
Sean McArthur
a3be110a55 feat(body): change Payload::Data to be a Buf
Closes #1508

BREAKING CHANGE: Each payload chunk must implement `Buf`, instead of
  just `AsRef<[u8]>`.
2018-05-07 10:06:28 -07:00
Sean McArthur
dfa7e17960 refactor(client): change last Weak::new to an Option<Weak> 2018-05-04 15:36:20 -07:00
Sean McArthur
04c74ef596 feat(client): rename FutureResponse to ResponseFuture
BREAKING CHANGE: Replace any references of
  `hyper::client::FutureResponse` to `hyper::client::ResponseFuture`.
2018-05-04 15:21:59 -07:00
Sean McArthur
ef14a1bd67 Merge pull request #1507 from bluetech/cp-parts-service
Fix example & cherry-pick server::conn::Parts.service to master
2018-05-04 13:03:57 -07:00
Sean McArthur
18c5f640e2 feat(server): add service property to server::conn::Parts
This allows getting the original service back.

Closes #1471

Cherry-pick of commit bf7c0bbf4f55fdf465407874b0b2d4bd748e6783 from the
0.11.x branch.
2018-05-04 13:22:31 +03:00
Ran Benita
f98f168f07 fix(examples): remove unused imports from examples/client.rs 2018-05-04 13:22:31 +03:00
Sean McArthur
7de3bc97c6 chore(examples): update server example name to echo 2018-05-03 12:08:49 -07:00
Sean McArthur
a16234fa26 docs(examples): add some comments in the client example 2018-05-03 12:00:44 -07:00
Sean McArthur
a5d2c639f5 Merge pull request #1505 from lnicola/body-from-stream
Add From<Box<Stream>> impl for Body
2018-05-03 11:46:10 -07:00
Sean McArthur
283d79db08 refactor(service): change service_fn to take Fn instead of FnMut 2018-05-02 13:46:33 -07:00
Sean McArthur
190a8501d6 docs(client): add module level docs for hyper::client 2018-05-02 13:32:46 -07:00
Laurentiu Nicola
45efba27df feat(body): add From<Box<Stream>> impl for Body 2018-05-02 21:50:37 +03:00
Sean McArthur
ab3c73fd84 fix(http2): force notify h2 client connection when all body streams drop 2018-05-01 12:45:36 -07:00
Sean McArthur
d3e4089062 Merge pull request #1500 from kw217/1498-add-local-bind
feat(client): support local bind for HttpConnector
2018-05-01 11:58:10 -07:00
Keith Wansbrough
b6a3c85d0f feat(client): support local bind for HttpConnector
Add `set_local_address` to the `HttpConnector`.
This configures the client to bind the socket to a local address of
the host before it connects to the destination. This is useful on
hosts which have multiple network interfaces, to ensure the request is
issued over a specific interface.

Closes #1498
2018-05-01 08:35:45 +01:00
Sean McArthur
792b55f5df Merge pull request #1502 from hyperium/tokio-timer
refactor(lib): change from futures-timer to tokio-timer
2018-04-30 20:43:47 -07:00
Sean McArthur
7a7453ba52 refactor(lib): change from futures-timer to tokio-timer 2018-04-30 19:11:05 -07:00
Sean McArthur
5e3b43af09 fix(client): prevent a checkout loop of pooled connections that aren't ready yet 2018-04-30 14:06:12 -07:00
Sean McArthur
11c92ff467 chore(tests): set a short timeout on the integration clients pool 2018-04-26 12:37:31 -07:00
Sean McArthur
d19d95af77 refactor(client): pass internal executor to h2 dispatcher 2018-04-25 17:55:45 -07:00
Sean McArthur
a4f4553487 chore(ci): enable logs in ci tests again... 2018-04-25 17:04:44 -07:00
Sean McArthur
604ebfbf6f perf(client): reduce an allocation per http2 connection 2018-04-25 16:40:34 -07:00
Sean McArthur
f44fa0e64e chore(body): fix broken import of Chunk internally 2018-04-24 16:57:00 -07:00
Matt Bilker
a02fec8c78 feat(client): add support for title case header names (#1497)
This introduces support for the HTTP/1 Client to write header names as title case when encoding
the request.

Closes #1492
2018-04-24 16:41:02 -07:00
Sean McArthur
2cd46664d5 docs(body): add more docs for Body and Payload 2018-04-24 16:30:38 -07:00
Sean McArthur
ad74f7a3e0 docs(body): add more details about Chunk 2018-04-24 16:07:09 -07:00
Sean McArthur
34522041dd chore(ci): remove logs from test output 2018-04-24 15:29:19 -07:00
Sean McArthur
988dc7c637 chore(ci): enable logs in tests, publish docs with nightly rustdoc 2018-04-24 14:37:32 -07:00
Sean McArthur
6906ced872 fix(client): handle race condition when sending while connection is closing 2018-04-24 13:58:10 -07:00
Sean McArthur
d127201ef2 feat(rt): make tokio runtime optional
A Cargo feature `runtime` is added, which is enabled by default, that
includes the following:

- The `client::HttpConnector`, which uses `tokio::net::TcpStream`.
- The `server::AddrStream`, which uses `tokio::net::TcpListener`.
- The `hyper::rt` module, which includes useful utilities to work with
  the runtime without needing to import `futures` or `tokio` explicity.

Disabling the feature removes many of these niceties, but allows people
to use hyper in environments that have an alternative runtime, without
needing to download an unused one.
2018-04-23 16:56:26 -07:00
Ori Avtalion
62a5c1188a docs(README): Use HTTPS, update website link (#1496) 2018-04-22 08:28:58 -07:00
Sean McArthur
21db71914c Merge pull request #1489 from estk/minimum_max_buf_size
Enforce minimum max buf size.
2018-04-20 14:18:00 -07:00
Evan Simmons
aac250f29d fix(server): panic on max_buf_size too small 2018-04-19 12:27:11 -07:00
Sean McArthur
4ea5472f90 perf(http2): improve Body::is_end_stream detection for http2 2018-04-18 16:42:55 -07:00
Sean McArthur
1328412f82 refactor(client): skip some pool housekeeping on shared h2 handles 2018-04-18 16:36:52 -07:00
Sean McArthur
38eba1540f perf(http2): reduce empty EOS frames if end is already known 2018-04-18 16:35:53 -07:00
Sean McArthur
a4eb612bd5 tests(http2): add bodies to parallel h2 tests 2018-04-18 16:34:44 -07:00
Sean McArthur
d04ca7b21a Merge pull request #1490 from hyperium/service2
feat(service): introduce hyper-specific `Service`
2018-04-18 14:11:36 -07:00
Sean McArthur
2dc6202fe7 feat(service): introduce hyper-specific Service
This introduces the `hyper::service` module, which replaces
`tokio-service`.

Since the trait is specific to hyper, its associated
types have been adjusted. It didn't make sense to need to define
`Service<Request=http::Request>`, since we already know the context is
HTTP. Instead, the request and response bodies are associated types now,
and slightly stricter bounds have been placed on `Error`.

The helpers `service_fn` and `service_fn_ok` should be sufficient for
now to ease creating `Service`s.

The `NewService` trait now allows service creation to also be
asynchronous.

These traits are similar to `tower` in nature, and possibly will be
replaced completely by it in the future. For now, hyper defining its own
allows the traits to have better context, and prevents breaking changes
in `tower` from affecting hyper.

Closes #1461

BREAKING CHANGE: The `Service` trait has changed: it has some changed
  associated types, and `call` is now bound to `&mut self`.

  The `NewService` trait has changed: it has some changed associated
  types, and `new_service` now returns a `Future`.

  `Client` no longer implements `Service` for now.

  `hyper::server::conn::Serve` now returns `Connecting` instead of
  `Connection`s, since `new_service` can now return a `Future`. The
  `Connecting` is a future wrapping the new service future, returning
  a `Connection` afterwards. In many cases, `Future::flatten` can be
  used.
2018-04-17 17:09:15 -07:00
Sean McArthur
71a15c25f5 Merge pull request #1488 from hyperium/server2
feat(server): re-design `Server` as higher-level API
2018-04-16 16:35:19 -07:00
Sean McArthur
c4974500ab feat(server): re-design Server as higher-level API
The `hyper::Server` is now a proper higher-level API for running HTTP
servers. There is a related `hyper::server::Builder` type, to construct
a `Server`. All other types (`Http`, `Serve`, etc) were moved into the
"lower-level" `hyper::server::conn` module.

The `Server` is a `Future` representing a listening HTTP server. Options
needed to build one are set on the `Builder`.

As `Server` is just a `Future`, it no longer owns a thread-blocking
executor, and can thus be run next to other servers, clients, or
what-have-you.

Closes #1322
Closes #1263

BREAKING CHANGE: The `Server` is no longer created from `Http::bind`,
  nor is it `run`. It is a `Future` that must be polled by an
  `Executor`.

  The `hyper::server::Http` type has move to
  `hyper::server::conn::Http`.
2018-04-16 14:29:19 -07:00
Sean McArthur
35c38cba6e Merge pull request #1487 from tee-too/issue-1473
feat(client): add support to set SO_NODELAY on client HTTP sockets
2018-04-16 09:52:51 -07:00
tee-too
016d79ed26 feat(client): add support to set SO_NODELAY on client HTTP sockets
Add configuration on `HttpConnector` to set `SO_NODELAY` on client
HTTP sockets.

Closes #1473
2018-04-16 13:28:46 +02:00
Sean McArthur
b0f44851ae Merge pull request #1432 from hyperium/h2
Initial HTTP/2 support for Client and Server
2018-04-13 15:10:10 -07:00
Sean McArthur
c119097fd0 feat(http2): add HTTP/2 support for Client and Server 2018-04-13 14:23:47 -07:00