Commit Graph

1962 Commits

Author SHA1 Message Date
Alexis Mousset
e3dc6c5511 docs(examples): Fix typo in client_json example comment
Fixes typo on comment about error types in client_json example.
2018-08-27 10:23:16 -07:00
Sean McArthur
abe8ddd637 chore(travis): set minimum rust version to 1.25 because of dependencies 2018-08-27 10:21:25 -07:00
Sean McArthur
168c7d2155 feat(server): add Server::with_graceful_shutdown method
This adds a "combinator" method to `Server`, which accepts a user's
future to "select" on. All connections received by the `Server` will
be tracked, and if the user's future finishes, graceful shutdown will
begin.

- The listener will be closed immediately.
- The currently active connections will all be notified to start a
  graceful shutdown. For HTTP/1, that means finishing the existing
  response and using `connection: clone`. For HTTP/2, the graceful
  `GOAWAY` process is started.
- Once all active connections have terminated, the graceful future
  will return.

Closes #1575
2018-08-23 11:30:44 -07:00
Sean McArthur
a3c44ded55 feat(client): add max_idle_per_host configuration option
Setting this will cap the amount of idle connections kept around for a
specific host. This defaults to no limit (`usize::MAX`).
2018-08-22 12:28:49 -07:00
lambdasqd
1448e4067b fix(server): properly handle keep-alive for HTTP/1.0
Change behaviour of connection or server response when the request is
version 1.0 and the Connection: keep-alive header is not present.

1. If the response is also version 1.0, then connection is closed if the
server keep-alive header is not present.
2. If the response is version 1.1, then the keep-alive header is added
when downgrading to version 1.0.

Closes #1614
2018-08-15 12:10:03 -07:00
Sean McArthur
bdbaa85f41 v0.12.8 2018-08-10 14:42:27 -07:00
Sean McArthur
195fbb2a37 fix(server): coerce responses with HTTP2 version to HTTP/1.1 when protocol is 1.x 2018-08-10 13:08:08 -07:00
Sean McArthur
853266d873 test(server): add http1_only server test 2018-08-10 13:08:08 -07:00
Sean McArthur
b459adb43a feat(server): add Builder::http1_keepalive method 2018-08-10 13:08:08 -07:00
Yusuke Sasaki
1e8cd5aaa6 chore(*): enable #[deny(warnings)] at only testing 2018-08-10 10:40:40 -07:00
Sean McArthur
0ea3b836f9 refactor(server): remove double nested listen errors in from_tcp 2018-08-08 11:23:37 -07:00
Yoshua Wuyts
bb4c5e24c8 feat(server): add Server::from_tcp constructor
Adds a constructor to build a `Server` from an `std::net::TcpListener`.

Closes #1602
2018-08-08 11:13:07 -07:00
Sean McArthur
6e8417e08f refactor(lib): use type macro to detect impl Trait 2018-08-07 21:00:02 -07:00
Niv Kaminer
9f8add6056 chore(client): place the use of new rust features behind cfg 2018-08-07 19:36:00 -07:00
Niv Kaminer
97f4243a59 refactor(headers): remove usage of deprecated ascii trait 2018-08-07 19:36:00 -07:00
Niv Kaminer
4290b8bba4 perf(client): replace usage of Box<Trait> with impl Trait 2018-08-07 19:36:00 -07:00
Sean McArthur
26f3a5ed31 feat(server): add remote_addr method to AddrStream 2018-08-07 16:46:46 -07:00
Sean McArthur
4020a2f8b9 chore(lib): disable all rustfmt for now while its unstable 2018-08-06 13:45:02 -07:00
Laurentiu Nicola
c837fb9c29 refactor(lib): replace Vec::set_len(0) with clear 2018-08-02 14:02:49 -07:00
Sean McArthur
069a32b1ac v0.12.7 2018-07-23 09:51:38 -07:00
Sean McArthur
6530a00a8e fix(http1): reduce closed connections when body is dropped
If a user makes use of `Body::is_end_stream` to optimize so as to not
need to do make a final poll just to receive `None`, previously the
connection would not have progressed its reading state to a finished
body, and so the connection would be closed.

Now, upon reading any chunk, the connection state will check if it
can know that the body would be finished, and progresses to a body
finished state sooner.

The integration tests were amplified by adding a naive hyper proxy
as a secondary test, which happens to make use of that optimization,
and thus caught the issue.
2018-07-23 09:39:19 -07:00
Sonny Scroggin
05c1179e82 docs(upgrade): fix link to upgrade example
Closes #1608
2018-07-20 22:25:07 -07:00
Sean McArthur
8a04a97464 v0.12.6 2018-07-11 17:20:20 -07:00
Sean McArthur
b41eabfe64 chore(readme): adjust note about instability around futures 2018-07-11 17:19:20 -07:00
Igor Gnatenko
7b54e9ccae chore(dependencies): update want to 0.0.6 2018-07-11 14:20:39 -07:00
Eli Snow
13862d11ad feat(client): add ability to include SO_REUSEADDR option on sockets
Closes #1599
2018-07-11 12:13:59 -07:00
Hrvoje Ban
02a9c29e2e feat(client): implement rfc 6555 (happy eyeballs)
Update client connector to attempt a parallel connection using
alternative address family, if connection using preferred address family
takes too long.

Closes: #1316
2018-07-10 13:43:03 -07:00
Sean McArthur
5b5e309095 feat(server): add Builder::http1_pipeline_flush configuration
However, you probably shouldn't use it! It's `doc(hidden)`, since it
isn't the truest pipeline support. Instead, it just prevents flushing
until read buffer has been consumed.

It's only real use is for silly pipeline benchmarks.
2018-07-09 12:56:54 -07:00
Jonas Platte
51223efb8a docs(lib): Fix some typos 2018-07-08 10:10:12 -07:00
Sean McArthur
ae34a86cc3 docs(examples): add a stateful server example with a request counter 2018-07-06 15:24:01 -07:00
Sean McArthur
8991707a6a perf(http1): propagate service user error generic further into dispatcher
In the case of `Never`, this allows the optimizer to eliminate more code
inside the dispatcher, winning some more performance in benchmarks.
2018-07-06 15:01:53 -07:00
Özgür Akkurt
bff37244d8 docs(server): clean the web_api example up
add comments and a json example

closes #1595
2018-07-06 12:37:50 -07:00
Özgür Akkurt
9cd971d8f3 docs(client): improve client_json example 2018-07-06 12:37:50 -07:00
Özgür Akkurt
396e6022e0 docs(server): mention http2 support
mention http2 support in server module documentation.

Closes #1578
2018-07-05 10:38:13 -07:00
Sean McArthur
a2a6e36cca doc(readme): add note about contributing and chat links 2018-07-04 13:26:58 -07:00
ozgurakkurt
e06dc52ef6 docs(client): Add client_json example
Closes #1581
2018-07-03 14:41:50 -07:00
Sean McArthur
d42c983e3b test(http1): fix unused import warnings of Bytes when debug_assertions are off 2018-06-29 14:14:29 -07:00
Sean McArthur
b9ab8be986 refactor(common): ensure empty StaticBufs don't make IoVecs 2018-06-29 14:13:41 -07:00
Sean McArthur
5a3efda0e7 v0.12.5 2018-06-28 20:53:50 -07:00
Sean McArthur
6aff27523a chore(h2): fix minimum h2 version 2018-06-28 18:00:12 -07:00
Sean McArthur
8cf6f145ac v0.12.4 2018-06-28 16:21:27 -07:00
Sean McArthur
c03c39e0ff fix(client): fix keep-alive header detection when parsing responses 2018-06-28 15:15:50 -07:00
Sean McArthur
e7c7f2db05 refactor(h1): give better panics in debug mode when headers successfully parse illegal values 2018-06-28 12:53:54 -07:00
Sean McArthur
f2d464ac79 fix(client): try to reuse connections when pool checkout wins
If a checkout wins, meaning an idle connection became available before
a connect future completed, instead of just dropping the connect future,
it spawns it into the background executor to allow being placed into
the pool on completion.
2018-06-28 12:43:56 -07:00
Sean McArthur
1f95f58837 chore(error): improve message about incomplete parsed messages 2018-06-25 17:29:40 -07:00
Sean McArthur
1156e17e65 chore(error): add specific user error for responding with 1xx status code 2018-06-25 17:16:09 -07:00
Laurențiu Nicola
91b08d09e4 chore(headers): use HeaderValue::from for content-length (#1583) 2018-06-25 16:17:08 -07:00
Sean McArthur
d7436cfbe0 v0.12.3 2018-06-25 12:46:41 -07:00
Sean McArthur
e61fe54093 test(server): fix unused result from block_on 2018-06-25 11:48:52 -07:00
Sean McArthur
6848ba63fb test(server): use current_thread instead of rt::run with http2 tests 2018-06-25 11:35:57 -07:00