Commit Graph

1954 Commits

Author SHA1 Message Date
Sean McArthur
4aab54eebc Merge branch 'pool-expired' 2018-02-28 14:58:22 -08:00
Sean McArthur
727b74797e fix(client): schedule interval to clear expired idle connections
Currently only works if Client is built with a `Handle`, and not a
custome executor, since a `Handle` is required to create a tokio
Interval.
2018-02-28 14:57:06 -08:00
Sean McArthur
13741f5145 fix(client): never call connect if idle connection is available
The HttpConnector's connect future was lazy, but if any custom connector
did not use a lazy future, then a connect would always be started, even
if an idle connection was available.
2018-02-28 14:18:37 -08:00
Sean McArthur
1223fc28ee wip 2018-02-28 13:58:38 -08:00
Sean McArthur
ad7763072c v0.11.20 2018-02-26 15:07:38 -08:00
Sean McArthur
8743c86660 refactor(server): adjust accept error debug log 2018-02-26 14:52:16 -08:00
Sean McArthur
43e8ec4622 Merge pull request #1450 from klausi/sleep_on_errors
fix(server): Sleep on socket IO errors
2018-02-26 13:41:21 -08:00
Klaus Purer
4927f143a2 Merge branch 'master' into sleep_on_errors 2018-02-25 22:24:03 +01:00
Sean McArthur
3fa191a267 feat(request): add Request::body_mut() method 2018-02-24 12:16:25 -08:00
Sean McArthur
2f45d5394a feat(body): add Body::is_empty() method 2018-02-24 11:54:02 -08:00
Klaus Purer
3a36eb5596 fix(server): Make sleep_on_errors configurable and use it in example 2018-02-24 16:19:01 +01:00
Klaus Purer
68458cde57 fix(server): Sleep on socket IO errors 2018-02-24 16:03:46 +01:00
Sean McArthur
b79f8d32b5 chore(ci): don't build docs on rust 1.18 2018-02-21 13:45:54 -08:00
Sean McArthur
36eabbb18f v0.11.19 2018-02-21 13:15:57 -08:00
Sean McArthur
6d5bb85700 docs(server): add example to serve_connection 2018-02-21 13:14:42 -08:00
Sean McArthur
e6647aa679 Merge pull request #1444 from mikeyhew/docs-basic-fromstr
docs(headers): document the fact that <Basic as FromStr>::from_str takes a base-64 encoded string
2018-02-20 13:55:30 -08:00
Michael Hewson
ba6fcf33b0 docs(headers): document the fact that <Basic as FromStr>::from_str takes a base-64 encoded string
I couldn't figure out why my "username:password" strings kept failing to parse
into a Basic auth header, until I realized that the implementation expects
it to be base-64 encoded, which would be the case if it was coming from HTTP.
I'm not sure if this is the best place to document it, but hopefully it will
make it more clear for other people / me when I forget.

Perhaps a better approach would be to document somewhere that all `FromStr` impls for
headers are there for parsing request headers, and not really for creating them.
2018-02-19 23:56:55 -05:00
Sean McArthur
77adab4ebf fix(client): prevent empty bodies sending transfer-encoding for GET, HEAD 2018-02-16 15:22:06 -08:00
Sean McArthur
dd79a4a0e0 chore(client): fix unused_mut in 1.18 2018-02-15 14:54:56 -08:00
Sean McArthur
6244526a5b chore(tests): fix not-compiling tests 2018-02-15 12:55:02 -08:00
Sean McArthur
39e03a91e2 perf(server): set TCP keepalive when default listener is used 2018-02-15 12:49:52 -08:00
Sean McArthur
6ef22da8ea perf(client): set TCP keepalive when default connector is used 2018-02-15 12:40:38 -08:00
Sean McArthur
ee61ea9adf feat(client): Client will retry requests on fresh connections
If a request sees an error on a pooled connection before ever writing
any bytes, it will now retry with a new connection.

This can be configured with `Config::retry_canceled_requests(bool)`.
2018-02-15 12:04:58 -08:00
Sean McArthur
0ea3bcf8d5 refactor(server): add debug log when server accepts new connection 2018-02-12 18:21:20 -08:00
Sean McArthur
dc619a8fa0 fix(client): detect connection closes as pool tries to use
Currently, if the remote closes the connection at the same time that the
pool selects it to use for a new request, the connection may actually
hang. This fix will now more allow the keep-alive read to check the
socket even when the `Conn` think it's busy.

If the connection was closed before the request write happened, returns
back an `Error::Cancel`, letting the user know they could safely retry
it.

Closes #1439
2018-02-12 18:16:21 -08:00
Sean McArthur
a9413d7367 fix(uri): make absolute-form uris always have a path 2018-02-08 16:14:02 -08:00
Sean McArthur
8e57338ef0 v0.11.18 2018-02-07 13:59:47 -08:00
Sean McArthur
88f01793be fix(client): send an Error::Cancel if a queued request is dropped
Adds `Error::Cancel` variant.
2018-02-07 13:12:33 -08:00
Sean McArthur
a821a366f1 chore(h1): remove accidental BufDeque::bytes code 2018-02-06 16:14:09 -08:00
Sean McArthur
b0aa649725 feat(client): add http1_writev configuration option
Setting this to false will force HTTP/1 connections to always flatten
all buffers (headers and body) before writing to the transport. The
default is true.
2018-02-06 14:53:21 -08:00
Sean McArthur
d2fdf1f525 perf(h1): convert buffer to flatten strategy with auto detection 2018-02-06 14:35:47 -08:00
Sean McArthur
3a124462c6 test(h1): fix flaky streaming test 2018-02-06 13:25:10 -08:00
Sean McArthur
648548cfa3 test(client): add benchmarks for new cancelable queue 2018-02-06 12:31:31 -08:00
Sean McArthur
1eb18a9e44 v0.11.17 2018-02-05 16:37:43 -08:00
Sean McArthur
731096947d fix(h1): fix hung streaming bodies over HTTPS 2018-02-05 16:33:23 -08:00
Sean McArthur
0c290c32c9 refactor(h1): reduce noisy read_mem logs 2018-02-05 11:53:49 -08:00
Sean McArthur
b7293ca6ff refactor(client): clean up pool Checkout::poll function 2018-02-05 11:53:17 -08:00
Sean McArthur
265ad67c86 fix(client): more reliably detect closed pooled connections (#1434) 2018-02-05 09:56:29 -08:00
Sean McArthur
8fb84d29a1 refactor(server): add private constructor to AddrIncoming and AddrSteram 2018-02-01 12:41:58 -08:00
Sean McArthur
1aa3835660 refactor(server): use AddrIncoming in Server::run 2018-02-01 12:24:35 -08:00
Sean McArthur
b14de9eb34 refactor(client): fix up should_close sentinel value 2018-01-30 17:09:16 -08:00
Sean McArthur
84f3076438 perf(client): don't make a copy of Headers each Request 2018-01-30 14:58:51 -08:00
Sean McArthur
bf5eb5e0a0 v0.11.16 2018-01-30 13:28:13 -08:00
Sean McArthur
2a74b91181 docs(server): deprecated bind_connection, note about Connection's Opaque item 2018-01-30 13:18:51 -08:00
Sean McArthur
44af273853 fix(client): check for dead connections in Pool
Closes #1429
2018-01-29 11:58:05 -08:00
Sean McArthur
a3f87c0b3f chore(header): fix unused_unsafe in internals 2018-01-29 10:40:21 -08:00
kud1ing
1f8b3541e2 docs(README): "1.0 milestone" => "milestones"
The 1.0 milestone has currently no issues but the 0.12 milestone has. So instead of adjusting the README.md for each next mileston, just link to all milestones
2018-01-26 12:34:05 -08:00
Sean McArthur
c33b9d4e16 refactor(proto): move more h1-specific pieces into h1 module 2018-01-25 14:40:09 -08:00
Sean McArthur
68377ede70 perf(http): utilize writev when possible
By using `AsyncWrite::write_buf`, we can avoid some copies in some
cases. This especially helps throughput for chunked encoding.
2018-01-25 14:02:11 -08:00
Steven Fackler
11b49c2cc8 feat(uri): Add a PartialEq<str> impl for Uri 2018-01-25 12:00:09 -08:00