Skip to content

Latest commit

 

History

History
3017 lines (1662 loc) · 146 KB

CHANGELOG.md

File metadata and controls

3017 lines (1662 loc) · 146 KB

v0.14.23 (2022-11-07)

Bug Fixes

  • http2: Fix race condition in client dispatcher (#3041) (2f1c0b72, closes #2419)

v0.14.22 (2022-10-31)

Bug Fixes

  • server: fix compile-time cfgs for TCP keepalive options (#3039) (e8765e0f, closes #3038)

v0.14.21 (2022-10-31)

Bug Fixes

  • client: send an error back to client when dispatch misbehaves () (9fa36382, closes #2649)
  • http1: fix http1_header_read_timeout to use same future (#2891) (c5a14e7c)

Features

  • http1: allow ignoring invalid header lines in requests (73dd4746)
  • server: add Server::tcp_keepalive_interval and Server::tcp_keepalive_retries (#2991) (287d7124)

v0.14.20 (2022-07-07)

Bug Fixes

  • http1: fix http1_header_read_timeout to use same future (#2891) (c5a14e7c)

Features

  • ext: support non-canonical HTTP/1 reason phrases (#2792) (b2052a43)

v0.14.19 (2022-05-27)

Bug Fixes

  • http1: fix preserving header case without enabling ffi (#2820) (6a35c175)
  • server: don't add implicit content-length to HEAD responses (#2836) (67b73138)

Features

  • server:
    • add Connection::http2_max_header_list_size option (#2828) (a32658c1, closes #2826)
    • add AddrStream::local_addr() (#2816) (ffbf610b, closes #2773)

Breaking Changes

  • ffi (unstable):
    • hyper_clientconn_options_new no longer sets the http1_preserve_header_case connection option by default. Users should now call hyper_clientconn_options_set_preserve_header_case if they desire that functionality. (78de8914)

v0.14.18 (2022-03-22)

Bug Fixes

  • ffi: don't build C libraries by default (1c663706)

Features

  • client: add HttpInfo::local_addr() method (055b4e7e, closes #2767)

v0.14.17 (2022-02-10)

Bug Fixes

  • client: avoid panics in uses of Instant (#2746) (dcdd6d10)

Features

  • client: implement the HTTP/2 extended CONNECT protocol from RFC 8441 (#2682) (5ec094ca)
  • error: add Error::message (#2737) (6932896a, closes #2732)
  • http1: implement obsolete line folding (#2734) (1f0c177b)

v0.14.16 (2021-12-09)

Bug Fixes

  • http1: return 414 when URI contains more than 65534 characters (#2706) (5f938fff, closes #2701)
  • http2: received Body::size_hint() now return 0 if implicitly empty (#2715) (84b78b6c)
  • server: use case-insensitive comparison for Expect: 100-continue (#2709) (7435cc33, closes #2708)

Features

  • http2: add http2_max_send_buf_size option to client and server (bff977b7)
  • server: add HTTP/1 header read timeout option (#2675) (842c6553, closes #2457)

v0.14.15 (2021-11-16)

Bug Fixes

  • client: cancel blocking DNS lookup if GaiFuture is dropped (174b553d

Features

  • http1: add http1_writev(bool) options to Client and Server builders, to allow forcing vectored writes (80627141)
  • upgrade: allow http upgrades with any body type (ab469eb3)

v0.14.14 (2021-10-22)

Bug Fixes

  • client:
    • make ResponseFuture implement Sync (bd6c35b9)
    • remove ipv6 square brackets before resolving (910e0268)

Features

  • h2: always include original h2 error on broken pipe (6169db25)
  • server: Remove Send + Sync requirement for Body in with_graceful_shutdown (1d553e52)

v0.14.13 (2021-09-16)

Bug Fixes

  • client: don't reuse a connection while still flushing (c88011da)
  • server: convert panic to error if Connection::without_shutdown called on HTTP/2 conn (ea3e2282)

Features

  • ffi: add hyper_request_set_uri_parts (a54689b9)
  • lib:
    • Export more things with Cargo features (server, !http1, !http2) (0a4b56ac)
    • Export rt module independently of Cargo features (cf6f62c7)

v0.14.12 (2021-08-24)

Bug Fixes

  • ffi: on_informational callback had no headers (39b6d01a)
  • http1: apply header title case for consecutive dashes (#2613) (684f2fa7)
  • http2: improve errors emitted by HTTP2 Upgraded stream shutdown (#2622) (be08648e)

Features

  • client: expose http09 and http1 options on client::conn::Builder (#2611) (73bff4e9, closes #2461)

v0.14.11 (2021-07-21)

Bug Fixes

  • client: retry when pool checkout returns closed HTTP2 connection (#2585) (52214f39)
  • http2:
    • improve I/O errors emitted by H2Upgraded (#2598) (f51c677d)
    • preserve proxy-authenticate and proxy-authorization headers (#2597) (52435701)

Features

  • ffi: add hyper_request_on_informational (25d18c0b)

v0.14.10 (2021-07-07)

Bug Fixes

  • http1:
    • reject content-lengths that have a plus sign prefix (06335158)
    • protect against overflow in chunked decoder (efd9a982)

Features

  • ffi: add option to get raw headers from response (8c89a8c1)

v0.14.9 (2021-06-07)

Bug Fixes

  • http1: reduce memory used with flatten write strategy (eb0c6463)

v0.14.8 (2021-05-25)

Features

  • client: allow to config http2 max concurrent reset streams (#2535) (b9916c41)
  • error: add Error::is_parse_too_large and Error::is_parse_status methods (#2538) (960a69a5)
  • http2:
    • Implement Client and Server CONNECT support over HTTP/2 (#2523) (5442b6fa, closes #2508)
    • allow HTTP/2 requests by ALPN when http2_only is unset (#2527) (be9677a1)

Performance

  • http2: reduce amount of adaptive window pings as BDP stabilizes (#2550) (4cd06bf2)

v0.14.7 (2021-04-22)

Bug Fixes

  • http1: http1_title_case_headers should move Builder (a303b3c3)

Features

  • server: implement forgotten settings for case preserving (4fd6c4cb)

v0.14.6 (2021-04-21)

Features

  • client: add option to allow misplaced spaces in HTTP/1 responses (#2506) (11345394)
  • http1: add options to preserve header casing (#2480) (dbea7716, closes #2313)

v0.14.5 (2021-03-26)

Bug Fixes

  • client: omit default port from automatic Host headers (#2441) (0b11eee9)
  • headers: Support multiple Content-Length values on same line (#2471) (48fdaf16, closes #2470)
  • server: skip automatic Content-Length headers when not allowed (#2216) (8cbf9527, closes #2215)

Features

  • client: allow HTTP/0.9 responses behind a flag (#2473) (68d4e4a3, closes #2468)
  • server: add AddrIncoming::from_listener constructor (#2439) (4c946af4)

v0.14.4 (2021-02-05)

Bug Fixes

  • build: Fix compile error when only http1 feature was enabled.

v0.14.3 (2021-02-05)

Bug Fixes

  • client: HTTP/1 client "Transfer-Encoding" repair code would panic (#2410) (2c8121f1, closes #2409)
  • http1: fix server misinterpretting multiple Transfer-Encoding headers (8f93123e)

Features

  • body:
    • reexport hyper::body::SizeHint (#2404) (9956587f)
    • add send_trailers to Body channel's Sender (#2387) (bf8d74ad, closes #2260)
  • ffi:
    • add HYPERE_INVALID_PEER_MESSAGE error code for parse errors (1928682b)
    • Initial C API for hyper (3ae1581a)

v0.14.2 (2020-12-29)

Features

  • client: expose connect types without proto feature (#2377) (73a59e5f)
  • server: expose Accept without httpX features (#2382) (a6d4fcbe)

v0.14.1 (2020-12-23)

  • Fixes building documentation.

v0.14.0 (2020-12-23)

Bug Fixes

  • client: log socket option errors instead of returning error (#2361) (dad5c879, closes #2359)
  • http1:
    • ignore chunked trailers (#2357) (1dd761c8, closes #2171)
    • ending close-delimited body should close (#2322) (71f34024)

Features

  • client:
    • change DNS Resolver to resolve to SocketAddrs (#2346) (b4e24332, closes #1937)
    • Make client an optional feature (4e55583d)
  • http1: Make HTTP/1 support an optional feature (2a19ab74)
  • http2: Make HTTP/2 support an optional feature (b819b428)
  • lib:
    • Upgrade to Tokio 1.0, Bytes 1.0, http-body 0.4 (#2369) (fad42acc, closes #2370)
    • remove dependency on tracing's log feature (#2342) (db32e105, closes #2326)
    • disable all optional features by default (#2336) (ed2b22a7)
  • server: Make the server code an optional feature (#2334) (bdb5e5d6)
  • upgrade: Moved HTTP upgrades off Body to a new API (#2337) (121c3313, closes #2086)

Breaking Changes

  • hyper depends on tokio v1 and bytes v1.

  • Custom resolvers used with HttpConnector must change to resolving to an iterator of SocketAddrs instead of IpAddrs. (b4e24332)

  • hyper no longer emits log records automatically. If you need hyper to integrate with a log logger (as opposed to tracing), you can add tracing = { version = "0.1", features = ["log"] } to activate them. (db32e105)

  • Removed http1_writev methods from client::Builder, client::conn::Builder, server::Builder, and server::conn::Builder.

    Vectored writes are now enabled based on whether the AsyncWrite implementation in use supports them, rather than though adaptive detection. To explicitly disable vectored writes, users may wrap the IO in a newtype that implements AsyncRead and AsyncWrite and returns false from its AsyncWrite::is_write_vectored method. (d6aadb83)

  • The method Body::on_upgrade() is gone. It is essentially replaced with hyper::upgrade::on(msg). (121c3313)

  • All optional features have been disabled by default. (ed2b22a7)

  • The HTTP server code is now an optional feature. To enable the server, add features = ["server"] to the dependency in your Cargo.toml. (bdb5e5d6)

  • The HTTP client of hyper is now an optional feature. To enable the client, add features = ["client"] to the dependency in your Cargo.toml. (4e55583d)

  • This puts all HTTP/1 methods and support behind an http1 cargo feature, which will not be enabled by default. To use HTTP/1, add features = ["http1"] to the hyper dependency in your Cargo.toml.

(2a19ab74)

  • This puts all HTTP/2 methods and support behind an http2 cargo feature, which will not be enabled by default. To use HTTP/2, add features = ["http2"] to the hyper dependency in your Cargo.toml.

(b819b428)

v0.13.9 (2020-11-02)

Bug Fixes

  • client: fix panic when addrs in ConnectingTcpRemote is empty (#2292) (01103da5, closes #2291)
  • http2: reschedule keep alive interval timer once a pong is received (2a938d96, closes #2310)

Features

  • client:
    • add HttpConnector::set_local_addresses to set both IPv6 and IPv4 local addrs ( (fb19f3a8)
    • Add accessors to Connected fields (#2290) (2dc9768d)

v0.13.8 (2020-09-18)

Bug Fixes

  • http1: return error if user body ends prematurely (1ecbcbb1, closes #2263)

Features

  • lib: Setting http1_writev(true) will now force writev queue usage (187c22af, closes #2282)
  • server: implement AsRawFd for AddrStream (#2246) (b5d5e214, closes #2245)

v0.13.7 (2020-07-13)

Bug Fixes

  • client: don't panic in DNS resolution when task cancelled (#2229) (0d0d3635)

Features

  • client: impl tower_service::Service for &Client (#2089) (77c3b5bc)
  • http2: configure HTTP/2 frame size in the high-level builders too (#2214) (2354a7ee)
  • lib: Move from log to tracing in a backwards-compatible way (#2204) (9832aef9)

v0.13.6 (2020-05-29)

Features

  • body: remove Sync bound for Body::wrap_stream (042c7706)
  • http2: allow configuring the HTTP/2 frame size (b6446456)

v0.13.5 (2020-04-17)

Bug Fixes

  • server: fix panic in Connection::graceful_shutdown (fce3ddce)

v0.13.4 (2020-03-20)

Bug Fixes

  • http1: try to drain connection buffer if user drops Body (d838d54f)

Features

  • http2: add HTTP2 keep-alive support for client and server (9a8413d9)

v0.13.3 (2020-03-03)

Features

  • client: rename client::Builder pool options (#2142) (a82fd6c9)
  • http2: add adaptive window size support using BDP (#2138) (48102d61)
  • server: add poll_peek to AddrStream (#2127) (24d53d3f)

v0.13.2 (2020-01-29)

Bug Fixes

  • body: return exactly 0 SizeHint for empty body (#2122) (dc882047)
  • client: strip path from Uri before calling Connector (#2109) (ba2a144f)
  • http1:
    • only send 100 Continue if request body is polled (c4bb4db5)
    • remove panic for HTTP upgrades that have been ignored (#2115) (1881db63, closes #2114)
  • http2: don't add client content-length if method doesn't require it (fb90d30c)

Features

  • service: Implement Clone/Copy on ServiceFn and MakeServiceFn (#2104) (a5720fab)

v0.13.1 (2019-12-13)

Bug Fixes

  • http1: fix response with non-chunked transfer-encoding to be close-delimited (cb71d2cd, closes #2058)

Features

  • body: implement HttpBody for Request and Response (4b6099c7, closes #2067)
  • client: expose hyper::client::connect::Connect trait alias (2553ea1a)

v0.13.0 (2019-12-10)

Bug Fixes

  • client:
    • fix polling dispatch channel after it has closed (039281b8)
    • fix panic from unreachable code (e6027bc0)
  • dependencies: require correct bytes minimum version (#1975) (536b1e18)
  • server:
    • change Builder window size methods to be by-value (a22dabd0, closes #1814)
    • ignore expect-continue with no body in debug mode (ca5836f1, closes #1843)
    • Remove unneeded 'static bound of Service on Connection (#1971) (4d147126)

Features

  • body:
    • change Sender::send_data to an async fn. (62a96c07)
    • require Sync when wrapping a dynamic Stream (44413721)
    • add body::aggregate and body::to_bytes functions (8ba9a8d2)
    • replace Chunk type with Bytes (5a598757, closes #1931)
    • replace the Payload trait with HttpBody (c63728eb)
  • client:
    • impl tower_service::Service for Client (edbd10ac)
    • provide tower::Service support for clients (#1915) (eee2a728)
    • change connectors to return an impl Connection (4d7a2266)
    • remove Destination for http::Uri in connectors (319e8aee)
    • filter remote IP addresses by family of given local IP address (131962c8)
    • change Resolve to be Service<Name> (9d9233ce, closes #1903)
    • change Connect trait into an alias for Service (d67e49f1, closes #1902)
    • change GaiResolver to use a global blocking threadpool (049b5132)
    • Add connect timeout to HttpConnector (#1972) (4179297a)
  • lib:
    • update to std::future::Future (8f4b05ae)
    • add optional tcp feature, split from runtime (5b348b82)
    • make Stream trait usage optional behind the stream feature, enabled by default (0b03b730, closes #2034)
    • update Tokio, bytes, http, h2, and http-body (cb3f39c2)
  • rt: introduce rt::Executor trait (6ae5889f, closes #1944)
  • server:
    • introduce Accept trait (b3e55062)
    • give Server::local_addr a more general type (3cc93e79)
    • change http1_half_close option default to disabled (7e31fd88)
  • service:
    • use tower_service::Service for hyper::service (ec520d56)
    • rename Service to HttpService, re-export tower::Service (4f274399, closes #1959)

Breaking Changes

  • All usage of async traits (Future, Stream, AsyncRead, AsyncWrite, etc) are updated to newer versions.

(8f4b05ae)

  • All usage of hyper::Chunk should be replaced with bytes::Bytes (or hyper::body::Bytes).

(5a598757)

  • Using a Body as a Stream, and constructing one via Body::wrap_stream, require enabling the stream feature.

(511ea388)

  • Calls to GaiResolver::new and HttpConnector::new no longer should pass an integer argument for the number of threads.

(049b5132)

  • Connectors no longer return a tuple of (T, Connected), but a single T: Connection.

(4d7a2266)

  • All usage of hyper::client::connect::Destination should be replaced with http::Uri.

(319e8aee)

  • All usage of hyper::body::Payload should be replaced with hyper::body::HttpBody.

(c63728eb)

  • Any type passed to the executor builder methods must now implement hyper::rt::Executor.

    hyper::rt::spawn usage should be replaced with tokio::task::spawn.

    hyper::rt::run usage should be replaced with #[tokio::main] or managing a tokio::runtime::Runtime manually.

(6ae5889f)

  • The Resolve trait is gone. All custom resolvers should implement tower::Service instead.

    The error type of HttpConnector has been changed away from std::io::Error.

(9d9233ce)

  • Any manual implementations of Connect must instead implement tower::Service<Uri>.

(d67e49f1)

  • The server's behavior will now by default close connections when receiving a read EOF. To allow for clients to close the read half, call http1_half_close(true) when configuring a server.

(7e31fd88)

  • Passing a Stream to Server::builder or Http::serve_incoming must be changed to pass an Accept instead. The stream optional feature can be enabled, and then a stream can be converted using hyper::server::accept::from_stream.

(b3e55062)

  • Usage of send_data should either be changed to async/await or use try_send_data.

(62a96c07)

v0.12.35 (2019-09-13)

Features

  • body: identify aborted body write errors (32869224)

v0.12.34 (2019-09-04)

Bug Fixes

  • client: allow client GET requests with explicit body headers (23fc8b08, closes #1925)

v0.12.33 (2019-09-04)

v0.12.32 (2019-07-08)

Features

  • client: HttpConnector: allow to set socket buffer sizes (386109c4)

v0.12.31 (2019-06-25)

v0.12.30 (2019-06-14)

Bug Fixes

  • http1: force always-ready connections to yield after a few spins (8316f96d)
  • http2: correctly propagate HTTP2 request cancellation (50198851)

v0.12.29 (2019-05-16)

Bug Fixes

  • server: skip automatic Content-Length header for HTTP 304 responses (b342c38f, closes #1797)

Features

  • body: implement http_body::Body for hyper::Body (2d9f3490)
  • client: Implement TryFrom for Destination (#1810) (d1183a80, closes #1808)
  • server: add initial window builder methods that take self by-val (#1817) (8b45af7f)

v0.12.28 (2019-04-29)

Bug Fixes

  • client:
    • detect HTTP2 connection closures sooner (e0ec5cad)
    • fix a rare connection pool race condition (4133181b)

Features

v0.12.27 (2019-04-10)

Bug Fixes

  • http2: fix import of h2::Reason to work on 1.26 (5680d944)

v0.12.26 (2019-04-09)

Bug Fixes

  • http2: send a GOAWAY when the user's Service::poll_ready errors (42c5efc0)
  • server: prohibit the length headers on successful CONNECT (d1501a0f, closes #1783)

Features

  • http2: check Error::source() for an HTTP2 error code to send in reset (fc18b680)

v0.12.25 (2019-03-01)

Bug Fixes

  • client: coerce HTTP_2 requests to HTTP_11 (3a6080b1, closes #1770)
  • http2: send INTERNAL_ERROR when user's Service errors (8f926a0d)

Features

  • error: implement Error::source when available (4cf22dfa, closes #1768)
  • http2: Add window size config options for Client and Server (7dcd4618, closes #1771)
  • server: add http2_max_concurrent_streams builder option (cbae4294, closes #1772)
  • service:
    • add poll_ready to Service and MakeService (#1767) (0bf30ccc)
    • allow FnMut with service_fn (877606d5)

v0.12.24 (2019-02-11)

Bug Fixes

  • client: fix panic when CONNECT request doesn't have a port (d16b2c30)

Features

  • server:
    • add http1_max_buf_size in the server::Builder (#1761) (3e9782c2)
    • add into_inner to AddrStream (#1762) (e52f80df)

v0.12.23 (2019-01-24)

Bug Fixes

  • http2: revert http2 refactor causing a client hang (9aa7e990)

Features

  • client: add conn::Builder::max_buf_size() (078ed82d, closes #1748)

v0.12.22 (2019-01-23)

Bug Fixes

  • client: parse IPv6 hosts correctly in HttpConnector (c328c62e)

v0.12.21 (2019-01-15)

Features

  • client:
    • add Destination::try_from_uri constructor (c809542c)
    • Add useful trait impls to Name (be5ec455)
    • add FromStr impl for Name (607c4da0)

v0.12.20 (2019-01-07)

Bug Fixes

  • dependencies: disable unneeded optional tokio features (e5135dd6, closes #1739)
  • http2: don't consider an h2 send request error as canceled (cf034e99)

v0.12.19 (2018-12-18)

Bug Fixes

  • rt: prevent fallback reactor thread from being created accidentally (1d253b4d)

v0.12.18 (2018-12-11)

Features

  • server: add server::conn::AddrIncoming::bind constructor (2d5eabde)

v0.12.17 (2018-12-05)

Features

  • error: add Error::is_connect method (01f64983)
  • server:
    • add tcp_sleep_on_accept_errors builder method (a6fff13a, closes #1713)
    • add http1_half_close(bool) option (73345be6, closes #1716)
  • service: export hyper::service::MakeServiceRef (a522c315)

Performance

  • http1: implement an adaptive read buffer strategy which helps with throughput and memory management (fd25129d, closes #1708)

v0.12.16 (2018-11-21)

Bug Fixes

  • client: fix connection leak when Response finishes before Request body (e455fa24, closes #1717)

Features

  • client: add http1_read_buf_exact_size Builder option (2e7250b6)

v0.12.15 (2018-11-20)

Features

  • client: add client::conn::Builder::executor method (95446cc3)
  • server: change NewService to MakeService with connection context (30870029, closes #1650)

v0.12.14 (2018-11-07)

Bug Fixes

  • header: fix panic when parsing header names larger than 64kb (9245e940)

Features

  • client: add ALPN h2 support for client connectors (976a77a6)

v0.12.13 (2018-10-26)

Features

  • client:
    • add Resolve, used by HttpConnector (2d5af177, closes #1517)
    • adds HttpInfo to responses when HttpConnector is used (13d53e1d, closes #1402)
  • dns:
    • export client::connect::dns module, and TokioThreadpoolGaiResolver type. (34d780ac)
    • tokio_threadpool::blocking resolver (1e8d6439, closes #1676)
  • http: reexport http crate (d55b5efb)
  • server: allow !Send Servers (ced949cb)

v0.12.12 (2018-10-16)

Bug Fixes

  • armv7: split record_header_indices loop to work around rustc/LLVM bug (30a4f237)
  • http2: add Date header if not present for HTTP2 server responses (37ec724f)
  • server: log and ignore connection errors on newly accepted sockets (66a857d8)

v0.12.11 (2018-09-28)

Bug Fixes

  • client: allow calling Destination::set_host with IPv6 addresses (af5e4f3e, closes #1661)
  • server: use provided executor if fallback to HTTP2 (1370a6f8)

v0.12.10 (2018-09-14)

Bug Fixes

  • http1: fix title-case option when header names have symbols (ca5e520e)

v0.12.9 (2018-08-28)

Bug Fixes

  • http2: allow TE "trailers" request headers (24f11a42, closes #1642)
  • server: properly handle keep-alive for HTTP/1.0 (1448e406, closes #1614)

Features

  • client: add max_idle_per_host configuration option (a3c44ded)
  • server: add Server::with_graceful_shutdown method (168c7d21, closes #1575)

v0.12.8 (2018-08-10)

Bug Fixes

  • server: coerce responses with HTTP2 version to HTTP/1.1 when protocol is 1.x (195fbb2a)

Features

  • server:
    • add Builder::http1_keepalive method (b459adb4)
    • add Server::from_tcp constructor (bb4c5e24, closes #1602)
    • add remote_addr method to AddrStream (26f3a5ed)

v0.12.7 (2018-07-23)

Bug Fixes

  • http1: reduce closed connections when body is dropped (6530a00a)

v0.12.6 (2018-07-11)

Features

  • client:
    • add ability to include SO_REUSEADDR option on sockets (13862d11, closes #1599)
    • implement rfc 6555 (happy eyeballs) (02a9c29e)
  • server: add Builder::http1_pipeline_flush configuration (5b5e3090)

v0.12.5 (2018-06-28)

v0.12.4 (2018-06-28)

Bug Fixes

  • client:
    • fix keep-alive header detection when parsing responses (c03c39e0)
    • try to reuse connections when pool checkout wins (f2d464ac)

v0.12.3 (2018-06-25)

Features

  • client: enable CONNECT requests through the Client (2a3844ac)
  • http2: quickly cancel when receiving RST_STREAM (ffdb4788)

v0.12.2 (2018-06-19)

Bug Fixes

  • http2:
    • implement graceful_shutdown for HTTP2 server connections (b7a0c2d5, closes #1550)
    • send trailers if Payload includes them (3affe2a0)
  • lib: return an error instead of panic if execute fails (482a5f58, closes #1566)
  • server:
    • fix debug assert failure when kept-alive connections see a parse error (396fe80e)
    • correctly handle CONNECT requests (d7ab0166)

Features

  • body:
  • client: add set_scheme, set_host, and set_port for Destination (27db8b00, closes #1564)
  • error: add Error::cause2 and Error::into_cause (bc5e22f5, closes #1542)
  • http1: Add higher-level HTTP upgrade support to Client and Server (#1563) (fea29b29, closes #1395)
  • http2:
    • implement flow control for h2 bodies (1c3fbfd6, closes #1548)
    • Add content_length() value to incoming h2 Body (9a28268b, closes #1546)
    • set Content-Length header on outgoing messages (386fc0d7, closes #1547)
    • Strip connection headers before sending (f20afba5)

v0.12.1 (2018-06-04)

Bug Fixes

  • server: add upgrading process to poll_without_shutdown() (#1530) (c6e90b7b)

Features

  • client: implement Clone for Destination (15188b7c)
  • server:
    • add http1_writev config option for servers (810435f1, closes #1527)
    • add http1_only configuration (14d9246d, closes #1512)
    • add try_into_parts() to conn::Connection (#1531) (c615a324)

v0.12.0 (2018-06-01)

Features

Bug Fixes

  • lib: remove deprecated tokio-proto APIs (a37e6b59)
  • server: panic on max_buf_size too small (aac250f2)

Breaking Changes

  • Body::is_empty() is gone. Replace with Body::is_end_stream(), from the Payload trait.

    (19f90242)

  • Each payload chunk must implement Buf, instead of just AsRef<[u8]>.

    (a3be110a)

  • Replace any references of hyper::client::FutureResponse to hyper::client::ResponseFuture.

    (04c74ef5)

  • 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 Connections, 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.

    (2dc6202f)

  • 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.

    (c4974500)

  • Client:new(&handle) and Client::configure() are now Client::new() and Client::builder().

    (fe1578ac)

  • Error is no longer an enum to pattern match over, or to construct. Code will need to be updated accordingly.

    For body streams or Services, inference might be unable to determine what error type you mean to return.

    (5d3c4722)

  • All uses of Handle now need to be new-tokio Handle.

    (27b8db3a)

  • Custom connectors should now implement Connect directly, instead of Service.

    Calls to connect no longer take Uris, but Destination. There are scheme, host, and port methods to query relevant information.

    The returned future must be a tuple of the transport and Connected. If no relevant extra information is needed, simply return Connected::new().

    (8c52c2df)

  • All code that was generic over the body as Stream must be adjusted to use a Payload instead.

    hyper::Body can still be used as a Stream.

    Passing a custom impl Stream will need to either implement Payload, or as an easier option, switch to Body::wrap_stream.

    Body::pair has been replaced with Body::channel, which returns a hyper::body::Sender instead of a futures::sync::mpsc::Sender.

    (fbc449e4)

  • Method, Request, Response, StatusCode, Version, and Uri have been replaced with types from the http crate.

    (3cd48b45)

    • The variants of Method are now uppercase, for instance, Method::Get is now Method::GET.
    • The variants of StatusCode are now uppercase, for instance, StatusCode::Ok is now StatusCode::OK.
    • The variants of Version are now uppercase, for instance, HttpVersion::Http11 is now Version::HTTP_11.
  • The typed headers from hyper::header are gone for now.

The http::header module is re-exported as hyper::header.

For example, a before setting the content-length:

use hyper::header::ContentLength;
res.headers_mut().set(ContentLength(15));

And now after, with the http types:

use hyper::header::{CONTENT_LENGTH, HeaderValue};
res.headers_mut().insert(CONTENT_LENGTH, HeaderValue::from_static("15"));

(3cd48b45)

  • The mime crate is no longer re-exported as hyper::mime.

    The typed headers don't exist, and so they do not need the mime crate.

    To continue using mime for other purposes, add it directly to your Cargo.toml as a dependency.

    (3cd48b45)

  • Removed compat cargo feature, and compat related API. This was the conversion methods for hyper's types to and from http crate's types.

    (3cd48b45)

  • Removed deprecated APIs: (a37e6b59)

    • The server-proto cargo feature, which included impl ServerProto for Http, and related associated types.
    • client::Config::no_proto()
    • tokio_proto::streaming::Body::from(hyper::Body)
    • hyper::Body::from(tokio_proto::streaming::Body)
    • hyper::Body::from(futures::sync::mpsc::Receiver)
    • Http::no_proto()

v0.11.27 (2018-05-16)

Bug Fixes

  • client: prevent pool checkout looping on not-ready connections (ccec79da, closes #1519)
  • server: skip SO_REUSEPORT errors (2c48101a, closes #1509)

v0.11.26 (2018-05-05)

Features

  • server: add Server::run_threads to run on multiple threads (8b644c1a)

v0.11.25 (2018-04-04)

Bug Fixes

  • client: ensure idle connection is pooled before response body finishes (7fe9710a)

v0.11.24 (2018-03-22)

Bug Fixes

  • header: remove charset=utf8 from ContentType::text() (ba789e65)

v0.11.23 (2018-03-22)

Bug Fixes

  • server: prevent to output Transfer-encoding when server upgrade (#1465) (eb105679)

Features

  • client: introduce lower-level Connection API (1207c2b6, closes #1449)
  • header: add text() and text_utf8() constructors to ContentType (45cf8c57)
  • server:
    • add service property to server::conn::Parts (bf7c0bbf, closes #1471)
      • add upgrade support to lower-level Connection API (#1459) (d58aa732, closes #1323)

v0.11.22 (2018-03-07)

Bug Fixes

  • client: return error if Request has CONNECT method (bfcdbd9f)
  • dependencies: require tokio-core 0.1.11 (49fcb066)

Features

  • client: add Config::set_host option (33a385c6)

v0.11.21 (2018-02-28)

Bug Fixes

  • client:
    • check conn is closed in expire interval (2fa0c845)
    • schedule interval to clear expired idle connections (727b7479)
    • never call connect if idle connection is available (13741f51)

v0.11.20 (2018-02-26)

Bug Fixes

  • server:
    • Make sleep_on_errors configurable and use it in example (3a36eb55)
    • Sleep on socket IO errors (68458cde)

Features

  • body: add Body::is_empty() method (2f45d539)
  • request: add Request::body_mut() method (3fa191a2)

v0.11.19 (2018-02-21)

Bug Fixes

  • client:
    • prevent empty bodies sending transfer-encoding for GET, HEAD (77adab4e)
    • detect connection closes as pool tries to use (dc619a8f, closes #1439)
  • uri: make absolute-form uris always have a path (a9413d73)

Features

  • client: Client will retry requests on fresh connections (ee61ea9a)

v0.11.18 (2018-02-07)

Bug Fixes

  • client: send an Error::Cancel if a queued request is dropped (88f01793)

Features

  • client: add http1_writev configuration option (b0aa6497)

v0.11.17 (2018-02-05)

Bug Fixes

  • client: more reliably detect closed pooled connections (#1434) (265ad67c)
  • h1: fix hung streaming bodies over HTTPS (73109694)

v0.11.16 (2018-01-30)

Bug Fixes

  • client:
    • check for dead connections in Pool (44af2738, closes #1429)
    • error on unsupport 101 responses, ignore other 1xx codes (22774222)
  • server:
    • send 400 responses on parse errors before closing connection (7cb72d20)
    • error if Response code is 1xx (44c34ce9)

Features

  • server: add Http::max_buf_size() option (d22deb65, closes #1368)
  • uri: Add a PartialEq<str> impl for Uri (11b49c2c)

Performance

  • h1: utilize writev when possible, reducing copies (68377ede)

v0.11.15 (2018-01-22)

Bug Fixes

Features

  • client: add executor method when configuring a Client (c89019eb)

v0.11.14 (2018-01-16)

Bug Fixes

  • tokio-proto: return end-of-body frame correctly for tokio-proto (14e4c741, closes #1414)

v0.11.13 (2018-01-12)

Bug Fixes

  • client:
    • change connection errors to debug log level (2fe90f25, closes #1412)
    • don't error on read before writing request (7976023b)
  • lib: properly handle body streaming errors (7a48d0e8)

v0.11.12 (2018-01-08)

Bug Fixes

  • server: add remote_addr back to Request when using Http::bind (fa7f4377, closes #1410)

v0.11.11 (2018-01-05)

Features

  • client: replace default dispatcher (0892cb27)
  • server: change default dispatcher (6ade21aa)

v0.11.10 (2017-12-26)

Bug Fixes

  • client:
    • fix panic when request body is empty string (bfb0f84d)
    • close connections when Response Future or Body is dropped (ef400812, closes #1397)
    • properly close idle connections after timeout (139dc7ab, closes #1397)
  • conn: don't double shutdown in some cases (7d3abfbc)

v0.11.9 (2017-12-09)

Bug Fixes

  • client: detect valid eof after reading a body (15fdd53d, closes #1396)

Features

  • log: improve quality of debug level logs (7b593112)

v0.11.8 (2017-12-06)

Bug Fixes

  • client:
    • return error instead of unmatched response when idle (95e0164e)
    • remove idle connections when read eof is found (cecef9d4)
    • always wait on reads for pooled connections (9f212410)
    • don't leak connections with no keep-alive (d2aa5d86, closes #1383)
  • conn: handle when pre-emptive flushing closes the write state (8f938d97, closes #1391)
  • lib: fix no_proto dispatcher to flush queue before polling more body (121b5eef)
  • server: allow TLS shutdown before dropping connections with no_proto (60d0eaf8, closes #1380)

Features

  • headers: Implement ProxyAuthorization (#1394) (c93cdb29)
  • server:
    • Allow keep alive to be turned off for a connection (#1390) (eb9590e3, closes #1365)
    • add Http.serve_incoming to wrap generic accept steams (e4864a2b)

v0.11.7 (2017-11-14)

Bug Fixes

  • client:
    • drop in-use connections when they finish if Client is dropped (b1765dd1)
    • don't read extra bytes on idle connections (7c4b814e)
  • server: GET requests with no body have None instead of Empty (8bf79648, closes #1373)

Features

  • client:
    • skip dns resolution when host is a valid ip addr (b1785c66)
    • allow custom executors for HttpConnector (ed497bf5)
    • add names to DNS threads (e0de55da)
  • header: implement ByteRangeSpec::to_satisfiable_range (bb54e36c)
  • lib: add support to disable tokio-proto internals (f7532b71)
  • server:
    • add const_service and service_fn helpers (fe38aa4b)
    • add server::Serve that can use a shared Handle (39cf6ef7)
    • allow creating Server with shared Handle (0844dede)

v0.11.6 (2017-10-02)

Bug Fixes

  • server: fix experimental pipeline flushing (6b4635fd)

v0.11.5 (2017-10-02)

Bug Fixes

  • http: avoid infinite recursion when Body::from is called with Cow::Owned. (#1343) (e8d61737)

v0.11.4 (2017-09-28)

Bug Fixes

v0.11.3 (2017-09-28)

Features

  • header: add ContentType::xml() constructor (92595e84)
  • http: add Body::from(cow) for bytes and strings (425ff71d)
  • lib: implement compatibility with http crate (0c7d375b)
  • server:
    • add experimental pipeline flush aggregation option to Http (dd54f20b)
    • remove unneeded Send + Sync from Server (16e834d3)

Bug Fixes

  • client:
    • cleanup dropped pending Checkouts from Pool (3b91fc65, closes #1315)
    • return Version errors if unsupported (41c47241, closes #1283)
  • http: log errors passed to tokio at debug level (971864c4, closes #1278)
  • lib:
    • Export hyper::RawStatus if the raw_status feature is enabled (627c4e3d)
    • remove logs that contain request and response data (207fca63, closes #1281)

Performance

  • server: try to read from socket at keep-alive (1a9f2648)

v0.11.2 (2017-07-27)

Bug Fixes

  • client: don't assume bodies on 204 and 304 Responses (81c0d185, closes #1242)
  • header: fix panic from headers.remove when typed doesn't match (4bd9746a)
  • http:
    • allow zero-length chunks when no body is allowed (9b47e186)
    • fix encoding when buffer is full (fc5b9cce)
    • skip zero length chunks when encoding (d6da3f7b)
  • server:
    • improve detection of when a Response can have a body (673e5cb1, closes #1257)
    • reject Requests with invalid body lengths (14cbd400)
    • do not automatically set ContentLength for 204 and 304 Responses (c4c89a22)
  • uri: fix Uri parsing of IPv6 and userinfo (7081c449, closes #1269)

Features

  • headers: export missing header types (c9f4ff33)
  • server: Provide reference to Response body (a79fc98e, closes #1216)
  • status: add as_u16() method to StatusCode (5f6f252c)

v0.11.1 (2017-07-03)

Features

  • server: Handle 100-continue (6164e764)

v0.11.0 (2017-06-13)

Bug Fixes

  • header:
    • add length checks to ETag parsing (643fac1e)
    • prevent 2 panics in QualityItem parsing (d80aae55)
    • Allow IPv6 Addresses in Host header (8541ac72)
    • Remove raw part when getting mutable reference to typed header (f38717e4, closes #821)
    • only add chunked to TransferEncoding if not present (1b4f8579)
    • ignore invalid cookies (310d98d5)
  • http:
    • Chunked decoder reads last \r\n (bffde8c8)
    • make Chunked decoder resilient in an async world (8672ec5a)
  • server:
    • support HTTP/1.1 pipelining (523b890a)

Features

  • body:
    • implement Extend and IntoIterator for Chunk (78512bdb)
    • add Default trait to Body (f61708ba)
    • implement Default for Body (6faa653f)
    • implement Default for Chunk (f5567db4)
  • client:
    • add HttpConnector.enforce_http (1c34a05a)
    • add an accessor for the request body (4e26646a)
    • Response.status() now returns a StatusCode by value (d63b7de4)
    • add Client::handle (9101817b)
    • add Request.set_proxy for HTTP proxy requests (e8714116, closes #1056)
    • DNS worker count is configurable (138e1643)
    • add keep_alive_timeout to Client (976218ba)
  • error: Display for Error shows better info (49e196db, closes #694)
  • header:
    • add ContentType::octet_stream() constructor (1a353102)
    • change Cookie to be map-like (dd03e723, closes #1145)
    • add Cookie::iter() (edc1c0dd)
    • implement fmt::Display for several headers (e9e7381e)
    • add Headers::append_raw (b4b2fb78)
    • Add support for Retry-After header (1037bc77)
    • add Encoding::Brotli variant (f0ab2b6a)
    • introduce header::Raw (#869) (50ccdaa7)
    • add TE header struct (#1150) (f1859dfd, closes #1109)
    • support Opaque origin headers (#1147) (41485997, closes #1065)
    • add HeaderView.raw() (8143c33b)
    • impl Eq for ContentType (bba761ac)
    • add Link header implementation (592c1e21, closes #650)
    • add star, json, text, image constructors to Accept (bdc19d52)
    • Add strict-origin and strict-origin-when-cross-origin referer policy (3593d798)
    • support multiple values for Referrer-Policy header (7b558ae8, closes #882)
    • add Warning header (69894d19, closes #883)
    • Headers::remove returns the Header (9375addb, closes #891)
    • add ContentLocation header (13c5bf66, closes #870)
    • add LastEventId header (e1542a60)
    • add `Origin header (01843f88, closes #651)
    • Add ReferrerPolicy header (3a86b3a2)
  • http:
    • add Into for Chunk (fac3d70c)
    • use the bytes crate for Chunk and internally (65b3e08f)
    • allow specifying custom body streams (1b1311a7)
  • lib:
    • add raw_status feature in Cargo.toml (acd62cda)
    • remove extern Url type usage (4fb7e6eb)
    • export Method::Put at top level (5c890321)
    • redesign API to use Futures and Tokio (2d2d5574)
    • switch to non-blocking (asynchronous) IO (d35992d0)
  • mime: upgrade to mime v0.3 (f273224f, closes #738)
  • server:
    • make Http default its body type to hyper::Chunk (dc97dd77)
    • make Http compatible with TcpServer (e04bcc12, closes #1036)
    • add path() and query() to Request (8b3c1206, closes #896, #897)
  • status:
    • add StatusCode::try_from(u16). (f953cafe)
    • remove deprecated StatusClass (94ee6204)
    • impl Into for StatusCode (c42f18db)
  • uri:
  • version: impl FromStr for HttpVersion (47f3aa62)

Breaking Changes

  • The Cookie header is no longer a wrapper over a Vec<String>. It must be accessed via its get and set methods.

(dd03e723)

  • Any use of Quality(num) should change to q(num).

(a4644959)

  • HttpDate no longer has public fields. Convert between HttpDate and SystemTime as needed.

(316c6fad)

  • The link_extensions methods of the Link header are removed until fixed.

(011f28cb)

  • The fmt_header method has changed to take a different formatter. In most cases, if your header also implements fmt::Display, you can just call f.fmt_line(self).

(6f02d43a)

  • The Encoding enum has an additional variant, Trailers.

(f1859dfd)

  • Origin.scheme and Origin.host now return Options, since the Origin could be null.

(41485997)

  • If you were explicitly checking the StatusCode, such as with an equality comparison, you will need to use the value instead of a reference.

(d63b7de4)

  • This removes several deprecated methods for converting Headers into strings. Use more specialized methods instead.

(ec91bf41)

  • The Url type is no longer used. Any instance in the Client API has had it replaced with hyper::Uri.

    This also means Error::Uri has changed types to hyper::error::UriError.

    The type hyper::header::parsing::HTTP_VALUE has been made private, as an implementation detail. The function http_percent_encoding should be used instead.

(4fb7e6eb)

  • This makes Request.remote_addr an Option<SocketAddr>, instead of SocketAddr.

(e04bcc12)

  • The Preference header had a typo in a variant and it's string representation, change Preference::HandlingLeniant to Preference::HandlingLenient. (2fa414fb)
  • Server is no longer the primary entry point. Instead, an Http type is created and then either bind to receive a Server, or it can be passed to other Tokio things. (f45e9c8e)
  • The name of RequestUri has changed to Uri. It is no longer an enum, but an opaque struct with getter methods.

(9036443e)

  • This adds a new variant to the Encoding enum, which can break exhaustive matches.

(f0ab2b6a)

  • The fields of the Host header are no longer available. Use the getter methods instead.

(cd9fd522)

  • A big sweeping set of breaking changes.

(2d2d5574)

  • Headers.remove() used to return a bool, it now returns Option<H>. To determine if a a header exists, switch to Headers.has(). (9375addb)
  • Header::parse_header now receives &Raw, instead of a &[Vec<u8>]. Raw provides several methods to ease using it, but may require some changes to existing code. (50ccdaa7)
  • LanguageTag used to be at the crate root, but it is now in the hyper::header module.

(40745c56)

  • Removes the undocumented from_u16 function. Use StatusCode::try_from instead.

    Also makes the status module private. All imports of hyper::status::StatusCode should be hyper::StatusCode.

(f953cafe)

  • All usage of status.class() should change to equivalent status.is_*() methods.

(94ee6204)

  • Most uses of mime will likely break. There is no more mime! macro, nor a Mime constructor, nor TopLevel and SubLevel enums.

    Instead, in most cases, a constant exists that can now be used.

    For less common mime types, they can be created by parsing a string.

(f273224f)

  • To use RawStatus, you must enable the raw_status crate feature.

(acd62cda)

  • Some headers used UniCase, but now use unicase::Ascii. Upgrade code to Ascii::new(s).

(c81edd41)

  • This breaks a lot of the Client and Server APIs. Check the documentation for how Handlers can be used for asynchronous events.

(d35992d0)

v0.10.9 (2017-04-19)

Features

  • server: add local_addr to retrieve resolved address (71f250ad)

v0.10.8 (2017-04-11)

Features

  • client:
    • introduce PooledStream::<S>::get_ref (a54ce30f)
    • introduce Response::get_ref (5ef0ec2c)

v0.10.7 (2017-04-08)

Bug Fixes

  • server: don't dup the listener TCP socket. (d2362331)

v0.10.6 (2017-04-05)

Features

  • buffer: add from_parts and into_parts functions (78551dd0)

v0.10.5 (2017-03-01)

Bug Fixes

  • http:
    • Consume entire chunked encoding message (4147fcd0)
    • fix returning EarlyEof if supplied buffer is zero-len (1e740fbc)

v0.10.4 (2017-01-31)

Features

  • header: implement fmt::Display for several headers (d5075770)

v0.10.3 (2017-01-30)

Bug Fixes

  • header:
    • deprecate HeaderFormatter (282466e1)
    • enable SetCookie.fmt_header when only 1 cookie (7611c307)

Features

  • header: add Headers::append_raw (6babbc40)

v0.10.2 (2017-01-23)

Bug Fixes

  • header: security fix for header values that include newlines (2603d78f)
  • net: set timeouts directly in accept (f5d4d653)

Breaking Changes

  • This technically will cause code that a calls SetCookie.fmt_header to panic, as it is no longer to properly write that method. Most people should not be doing this at all, and all other ways of printing headers should work just fine.

    The breaking change must occur in a patch version because of the security nature of the fix.

(2603d78f)

v0.10.1 (2017-01-19)

v0.10.0 (2017-01-10)

Features

  • client:
    • change ProxyConfig to allow HTTPS proxies (14a4f1c2)
    • remove experimental HTTP2 support (d301c6a1)
  • header: remove cookie dependency (f22701f7)
  • lib:
    • remove SSL dependencies (2f48612c)
    • remove serde-serialization feature (7b9817ed)

Breaking Changes

  • There is no more hyper::http::h2.

    (d301c6a1)

  • The Cookie and SetCookie headers no longer use the cookie crate. New headers can be written for any header, or the ones provided in hyper can be accessed as strings.

    (f22701f7)

  • There is no longer a serde-serialization feature. Look at external crates, like hyper-serde, to fulfill this feature.

    (7b9817ed)

  • hyper will no longer provide OpenSSL support out of the box. The hyper::net::Openssl and related types are gone. The Client now uses an HttpConnector by default, which will error trying to access HTTPS URLs.

    TLS support should be added in from other crates, such as hyper-openssl, or similar using different TLS implementations.

    (2f48612c)

  • Usage of with_proxy_config will need to change to provide a network connector. For the same functionality, a hyper::net::HttpConnector can be easily created and passed.

    (14a4f1c2)

v0.9.14 (2016-12-12)

Features

  • headers: add star, json, text, image constructors to Accept (a9fbbd7f)
  • server: add 'take_buf' method to BufReader (bbbce5fc)

v0.9.13 (2016-11-27)

Bug Fixes

  • client: close Pooled streams on sockopt error (d5ffee2e)

v0.9.12 (2016-11-09)

Features

  • error: re-export url::ParseError (30e78ac2)

v0.9.11 (2016-10-31)

Bug Fixes

  • headers: Allow IPv6 Addresses in Host header (20f177ab)

Features

  • headers:
    • Add strict-origin and strict-origin-when-cross-origin referer policy (1be4e769)
    • support multiple values for Referrer-Policy header (dc476657, closes #882)
    • add last-event-id header (2277987f)
  • server: accept combined certificate files (eeb1f48e)

v0.9.10 (2016-07-11)

Features

v0.9.9 (2016-06-21)

Bug Fixes

  • headers: Remove raw part when getting mutable reference to typed header (63b61524, closes #821)

Features

  • error: Display for Error shows better info (5620fbf9, closes #694)

v0.9.8 (2016-06-14)

Features

  • client: enable use of custom TLS wrapper for proxied connections (0476196c, closes #824)

v0.9.7 (2016-06-09)

Bug Fixes

  • proxy: fix the 0.9.x build with --no-default-features --features=security-framework (6caffe9f, closes #819)
  • server: Request.ssl() works (ce0b62ea)

v0.9.6 (2016-05-23)

Bug Fixes

  • client: Manually impl Debug for PooledStream (aa692236)
  • server: Switch Ssl to SslServer in bounds (470bc8ec)

v0.9.5 (2016-05-18)

Bug Fixes

  • windows: disable openssl cert validation for Windows (c89aca81, closes #794)

Features

  • net: Add OpensslClient constructor (3c0e1050)

v0.9.4 (2016-05-09)

Bug Fixes

  • warnings: remove unused_code warnings from newest nightlies (e7229480)

Features

  • ssl:
    • enable hostname verification by default for OpenSSL (01160abd, closes #472)
    • use secure ciphers by default in openssl (54bf6ade)

v0.9.3 (2016-05-09)

Bug Fixes

  • client: fix panic in Pool::connect (e51bafe2, closes #780)

v0.9.2 (2016-05-04)

Features

Performance

  • client: don't keep Pool mutex locked during getaddrinfo (5fcc04a6)

v0.9.1 (2016-04-21)

Bug Fixes

  • Cargo.toml: update documentation link (b783ddf4)

v0.9.0 (2016-04-21)

Features

  • net: Add Ssl impls for security-framework (f37315b2)

Breaking Changes

  • The re-exported Url type has breaking changes. (8fa7a989)

v0.8.1 (2016-04-13)

Bug Fixes

  • headers: correctly handle repeated headers (70c69142, closes #683)

Features

  • header: add prefer and preference applied headers (6f649301, closes #747)
  • net: Split Ssl into SslClient and SslServer (2c86e807, closes #756)

v0.8.0 (2016-03-14)

Bug Fixes

  • headers: remove charset from ContentType::json() convenience method (ec568e9a)
  • net: fix the typo in set_write_timeout (7c76fff3)

Features

  • client: Implement Debug for Client (8c7ef7fd)
  • status: add HTTP statuses 421 and 451 (93fd5a87)

Breaking Changes

  • mime 0.2 depends on serde 0.7, so any instances of using older versions of serde will need to upgrade.

(146df53c)

v0.7.2 (2016-01-04)

Bug Fixes

  • buffer: fix incorrect resizing of BufReader (3a18e72b, closes #715)

Features

  • headers: allow ExtendedValue structs to be formatted and used as struct members (da0abe89)

v0.7.1 (2015-12-19)

Bug Fixes

  • cargo: remove * dependencies for serde and env_logger (4a05bee9)
  • server:
    • Flush 100-continue messages (92ff50f2, closes #704)
    • Removed check for GET/HEAD request when parsing body (0b05c590, closes #698)

Features

  • headers: add extended parameter parser to the public API (402fb76b)

v0.7.0 (2015-11-24)

Features

  • all: add socket timeouts (fec6e3e8)
  • headers:
    • Add Content-Disposition header (7623ecc2, closes #561)
    • Add Access-Control-Allow-Credentials header (19348b89, closes #655)
    • re-export CookiePair and CookieJar (799698ca)

Breaking Changes

  • This adds 2 required methods to the NetworkStream trait, set_read_timeout and set_write_timeout. Any local implementations will need to add them.

(fec6e3e8)

  • LanguageTags api is changed.

(c747f99d)

v0.6.16 (2015-11-16)

Bug Fixes

  • response: respond with a 500 if a handler panics (63c6762c)

Features

  • headers: Add Access-Control-Expose-Headers (f783e991)
  • server: Add hooks for HttpListener and HttpsListener to be started from existing listener (fa0848d4)

Breaking Changes

  • RequestBuilder<U> should be replaced by RequestBuilder.

(ff4a6070)

v0.6.15 (2015-10-09)

Bug Fixes

  • server: use a timeout for Server keep-alive (cdaa2547, closes #368)

Features

  • client: add patch method to Client builder interface (03827c31)

v0.6.14 (2015-09-21)

Bug Fixes

  • http:
    • Add a stream enum that makes it impossible to lose a stream (be4e7181)
    • Make sure not to lose the stream when CL is invalid (a36e44af)
  • server: use EmptyWriter for status codes that have no body (9b2998bd)
  • timeouts: remove rust #![feature] for socket timeouts (b8729698)

Features

  • headers: add PartialEq impl for Headers struct (76cbf384)

v0.6.13 (2015-09-02)

Bug Fixes

  • client: EofReader by nature means the connection is closed (32e09a04)

v0.6.12 (2015-09-01)

Bug Fixes

  • client: be resilient to invalid response bodies (75c71170, closes #640)
  • examples: "cargo test --features serde-serialization" (63608c49)
  • http: fix several cases in HttpReader (5c7195ab)

Features

  • server: Add Handler per-connection hooks (6b6182e8)

v0.6.11 (2015-08-27)

Bug Fixes

  • client: fix panics when some errors occurred inside HttpMessage (ef15257b)
  • headers: case insensitive values for Connection header (341f8eae, closes #635)

Breaking Changes

  • This changes the signature of HttpWriter.end(), returning a EndError that is similar to std::io::IntoInnerError, allowing HttpMessage to retrieve the broken connections and not panic.

    The breaking change isn't exposed in any usage of the Client API, but for anyone using HttpWriter directly, since this was technically a public method, that change is breaking.

(ef15257b)

v0.6.10 (2015-08-19)

Bug Fixes

  • client: close connection when there is an Error (d32d35bb)

Features

  • uri: implement fmt::Display for RequestUri () (80931cf4, closes #629)

v0.6.9 (2015-08-13)

Bug Fixes

  • client:
    • improve keep-alive of bodyless Responses (67c284a9)
    • improve HttpReader selection for client Responses (31f117ea, closes #436)
  • nightly: remove feature flag for duration (0455663a)

Features

  • headers: Content-Range header (af062ac9)
  • net: impl downcast methods for NetworkStream (without + Send) (1a91835a, closes #521)
  • server: add Request.ssl() to get underlying ssl stream (7909829f, closes #627)

v0.6.8 (2015-08-03)

Features

  • raw-fd: implement FromRawFd/FromRawSocket (664bde58)

v0.6.7 (2015-08-03)

Bug Fixes

  • headers: fix broken deserialization of headers (f5f5e1cb)

Features

  • net:
    • Implement NetworkConnector for closure to be more flexible (abdd4c5d)
    • add socket timeouts to Server and Client (7d1f154c, closes #315)

Breaking Changes

  • Any custom implementation of NetworkStream must now implement set_read_timeout and set_write_timeout, so those will break. Most users who only use the provided streams should work with no changes needed.

Closes #315

(7d1f154c)

v0.6.5 (2015-07-23)

Bug Fixes

  • tests: iter.connect() is now iter.join() (d2e8b5dc)

Features

  • status:
    • implement Hash for StatusCode (d84f291a)
    • implement Hash for StatusCode (aa85f609)

v0.6.4 (2015-07-23)

Features

  • http: add optional serialization of common types via serde (87de1b77)

v0.6.3 (2015-07-08)

Bug Fixes

  • lint: change deny(missing_docs) to only apply for tests (5994a6f8, closes #600)

v0.6.2 (2015-07-06)

Bug Fixes

  • http: no longer keep alive for Http1.0 if no Connection header (ddecb262, closes #596)

Features

  • client: add url property Response (82ed9092)
  • headers: add strict-transport-security header (7c2e5124, closes #589)

Breaking Changes

  • Access-Control-Allow-Origin does no longer use Url

(ed458628)

  • Technically a break, since Response::new() takes an additional argument. In practice, the only place that should have been creating Responses directly is inside the Client, so it shouldn't break anyone. If you were creating Responses manually, you'll need to pass a Url argument.

(82ed9092)

v0.6.1 (2015-06-26)

Bug Fixes

  • benches: adjust to missing set_ssl_verifier (eb38a11b)
  • cargo: fix linking on OSX 10.10 (9af2b66f)
  • client: use Ssl instance in creation of SslStream (1a490e25)

v0.6.0 (2015-06-24)

Bug Fixes

  • client: check for drained stream in Response::drop (e689f203)

Features

  • client:
  • error: add private __Nonexhaustive variant to Error (7c0421e3)
  • headers:
  • http2:
    • implement message API for HTTP/2 (f0fe2c5a)
    • add new error variant for HTTP/2 (48e9ca2f)
    • add dependency on solicit (3122ffef)
  • langtags: use true language tags in headers (99ff7e62)
  • ssl: redesign SSL usage (53bba6eb)

Breaking Changes

  • AcceptLanguage and ContentLanguage use LanguageTag now, Language removed from Hyper.

(99ff7e62)

  • Server::https was changed to allow any implementation of Ssl. Server in general was also changed. HttpConnector no longer uses SSL; using HttpsConnector instead.

(53bba6eb)

  • Connectors and Protocols passed to the Client must now also have a Sync bounds, but this shouldn't break default usage.

(64e47b4b)

  • parse_header returns Result instead of Option, related code did also change

(195a89fa)

  • Adds a new variant to public Error enum. The proper fix is to stop matching exhaustively on hyper::Error.

(7c0421e3)

  • A new variant Http2 added to a public enum hyper::Error.

(48e9ca2f)

  • hyper::client::request::Response is no longer generic over NetworkStream types. It no longer requires a generic type parameter at all.

(aa297f45)

v0.5.2 (2015-06-01)

Bug Fixes

  • buffer: check capacity before resizing (b1686d1b)

v0.5.1 (2015-05-25)

Bug Fixes

  • client: don't close stream until EOF (a5e6174e, closes #543)

Features

  • client: implement Default trait for client (be041d91)
  • header: add ContentType::form_url_encoded() constructor (2c99d4e9)
  • headers: return hyper::Error instead of () from header components (5d669399)
  • http: add get_mut method to HttpReader (e64ce8c0)

Breaking Changes

  • Error enum extended. Return type of header/shared/ types changed.

(5d669399)

v0.5.0 (2015-05-12)

Bug Fixes

  • client:
    • don't call close() inside Request (3334fca2, closes #519)
    • keep the underlying connector when setting an SSL verifier (f4556d55, closes #495)
  • mock: adjust ChannelMockConnector connect method to compile (085d7b07)

Features

  • header:
    • add ContentType::json(), plaintext(), html(), jpeg(), and png() constructors (b6114ecd)
    • add Connection::close() and ::keep_alive() constructors (c2938fb4)
    • export __hyper__tm! macro so test modules work with header! (f64fb10b)
  • net:
    • remove mut requirement for NetworkConnector.connect() (1b318724)
    • add set_ssl_verifier method to NetworkConnector trait (a5d632b6)
  • server: check Response headers for Connection: close in keep_alive loop (49b5b8fd)

Breaking Changes

  • Usage of Response.deconstruct() and construct() now use a &mut Headers, instead of the struct proper.

(49b5b8fd)

  • If you use deref! from the header module, you'll need to switch to using __hyper__deref!.

(62d96adc)

  • Any custom Connectors will need to change to &self in the connect method. Any Connectors that needed the mutability need to figure out a synchronization strategy.

    Request::with_connector() takes a &NetworkConnector instead of &mut. Any uses of with_connector will need to change to passing &C.

(1b318724)

  • Adding a new required method to a public trait is a breaking change.

(a5d632b6)

v0.4.0 (2015-05-07)

Bug Fixes

  • net: ignore NotConnected error in NetworkStream.close (6be60052, closes #508)

Features

  • error: add Ssl variant to hyper::Error (972b3a38, closes #483)
  • headers:
    • Allow null value in Access-Control-Allow-Origin (5e341714)
    • Parse Upgrade header protocols further (f47d11b9, closes #480)
    • Add From header field (ce9c4af1)
    • Add Accept-Ranges header field (2dbe3f9b)
  • method: implement AsRef<str> for Method (c29af729)
  • server:
    • add Response.send to write a sized body (d5558b68, closes #446)
    • dropping a Response will write out to the underlying stream (a9dcc59c)

Breaking Changes

  • Adds a variant to hyper::Error, which may break any exhaustive matches.

(972b3a38)

  • The terms Http and Error have been removed from the Error type and its variants. HttpError should now be accessed as hyper::Error, and variants like HttpIoError should be accessed as Error::Io.

(9ba074d1)

  • Add variant to Access-Control-Allow-Origin enum

(5e341714)

  • Upgrade header Protocol changed.

(f47d11b9)

  • from_one_raw_str() returns None on empty values.

(a6974c99)

v0.3.16 (2015-05-01)

Bug Fixes

  • header:
    • make test_module of header! optional (a5ce9c59, closes #490)
    • exporting test_header! macro (2bc5a779)
  • http: keep raw reason phrase in RawStatus (8cdb9d5d, closes #497)

Features

v0.3.15 (2015-04-29)

Bug Fixes

  • headers:
    • Do not parse empty values in list headers. (093a29ba)
    • Fix formatting of 0 qualites and formatting of empty list header fields. (621ef521)

Features

  • client:
    • remove Clone requirement for NetworkStream in Client (60d92c29)
    • accept &String as Body in RequestBuilder (a2aefd9a)
    • accept &String for a Url in RequestBuilder (8bc179fb)
  • headers: Implement Content-Language header field (308880b4, closes #475)
  • net: add https_using_context for user-supplied SslContext (1a076d1b)
  • server: allow consumer to supply an SslContext (3a1a2427, closes #471)

Breaking Changes

  • This removes the trait IntoBody, and instead using Into<Body>, as it's more idiomatic. This will only have broken code that had custom implementations of IntoBody, and can be fixed by changing them to Into<Body>.

(a2aefd9a)

v0.3.14 (2015-04-18)

Bug Fixes

  • http: Adjust httparse Request and Response lifetimes. (76550fdb)

v0.3.13 (2015-04-17)

Bug Fixes

  • server: JoinHandle type parameter (c694b138)

Features

  • debug: add Debug impls for StatusClass, Server, and Listening (0fb92ee7)

v0.3.12 (2015-04-15)

Bug Fixes

  • server:
    • handle keep-alive closing (d9187713, closes #437)
    • join on thread when Listening drops (68d4d63c, closes #447)
    • Use thread::spawn instead of thread::scoped. (e8649567)

Features

  • http: Implement Debug for HttpReader/Writer. (2f606c88)
  • log: clean up logging (4f09b002)
  • net: make HttpStream implement Debug (7b7f9c25)

v0.3.11 (2015-04-15)

Bug Fixes

  • headers: Content-Encoding needs a hyphen. (ca2815ef)

Features

  • client: remove generic parameter for Connector (139a51f1, closes #379)

Breaking Changes

  • AccessControlAllowHeaders and AccessControlRequestHeaders values are case insensitive now. AccessControlAllowOrigin variants are now Any and Value to match the other headers.

(94f38950)

  • If-Match, If-None-Match and Vary item variant name changed to Items

(38d297b1)

  • Etag header field is now ETag header field

(4434ea6a)

  • For people using the default HttpConnector and Client, everything should continue to just work. If the Client has been used with a generic parameter, it should be removed.

    However, there were some breaking changes to the internals of NetworkConnectors. Specifically, they no longer return a NetworkStream, but instead a Into<Box<NetworkStream + Send>>. All implementations of NetworkStream should continue to just work, however.

    Possible breakages could come from the stricter usage of Send throughout the Client API.

(139a51f1)

v0.3.10 (2015-04-06)

Bug Fixes

  • README: Update to compile example against Rust beta (341f19d3)

v0.3.9 (2015-04-03)

Bug Fixes

  • headers: Add CowStr as a temporary hack to build on beta. (8e065563)

v0.3.8 (2015-04-02)

Bug Fixes

  • rustup: update to rust beta (0f5858f3)

Breaking Changes

  • Removed impl_header!() and impl_list_header!() macros, use new header!() macro.

(262c450f)

v0.3.7 (2015-03-31)

Bug Fixes

  • buffer: zero out new capacity when buffer grows (cfdabd70)

Features

  • entitytag: Add EntityTag comparison, make EntityTag safe to use (9c21f7f9)

v0.3.6 (2015-03-30)

Bug Fixes

  • buffer: get_buf to not return consumed part of buffer (04e3b565, closes #406)
  • rustup: get rid of slice pattern, add Reflect bounds (c9f2c841)

v0.3.5 (2015-03-28)

Bug Fixes

  • http: read more before triggering TooLargeError (cb59f609, closes #389)

v0.3.4 (2015-03-26)

Bug Fixes

  • rustup: static bounds required on Type definition, trivial_casts (eee7a85d)

v0.3.3 (2015-03-25)

Bug Fixes

  • rustup:
    • rustc 1.0.0-nightly (123a754cb 2015-03-24) (3e456f00)
    • 1.0.0-nightly (e2fa53e59 2015-03-20) (f547080d)

Features

  • headers: Implementing content-encoding header (2983e8de, closes #391)

v0.3.2 (2015-03-20)

Bug Fixes

  • benches: removed unused features (104d4903)
  • rustup:

Features

  • server: use SocketAddrs instead of Ipv4Addrs (5d7be77e)

v0.3.1 (2015-03-18)

Bug Fixes

  • header: Fix charset parsing bug. (5a6e176f)
  • headers: Fix overflow with empty cookies (99baaa10)
  • rustup: update to latest rustc (4fd8a6a9)

Features

  • server: add Expect 100-continue support (0b716943, closes #369)

Breaking Changes

  • Several public functions and types in the http module have been removed. They have been replaced with 2 methods that handle all of the http1 parsing.

(b87bb20f)

v0.3.0 (2015-03-03)

Features

  • headers:
    • add enum for Charset (180d9a92)
    • add AcceptCharset header (235089a1)
    • add q function to ease creating Quality values (d68773c7)
    • adds re-parsing ability when getting typed headers (df756871)
  • hyper: switch to std::io, std::net, and std::path. (0fd6fcd7, closes #347)

Breaking Changes

  • added requirement that all HeaderFormat implementations must also be fmt::Debug. This likely as easy as slapping #[derive(Debug)] on to any custom headers.

(df756871)

  • Check the docs. Everything was touched.

(0fd6fcd7)

v0.2.1 (2015-02-27)

Bug Fixes

  • rustup: str.split and associated type changes (1b6e6a04)

Features

  • headers: add remove_raw method and corresponding test (4f576780, closes #326)

v0.2.0 (2015-02-21)

Bug Fixes

  • headers: use $crate when referring to hyper modules on macros (e246c3ac, closes #323)
  • rustup:

Features

  • server: make AcceptorPool::accept() block and allow non'-static data (b0a72d80)

v0.1.13 (2015-02-17)

Bug Fixes

Features

  • header: Support arbitrary status codes (73978531)
  • headers:
  • server: Rewrite the accept loop into a custom thread pool. (3528fb9b)

Breaking Changes

  • This removes unregistered status codes from the enum. Use FromPrimitive methods to create them now. StatusCode and StatusClass can no longer be casted to u16, use ToPrimitive methods now. For example status.to_u16().unwrap() to get the status code number.

(73978531)

v0.1.12 (2015-02-13)

Bug Fixes

  • net: don't stop the server when an SSL handshake fails with EOF (55f12660)

Features

  • headers: Add If-None-Match header field (318b067a, closes #238)

v0.1.11 (2015-02-06)

Bug Fixes

  • readme: Make the README client example work (9b5d6aab)

Features

  • headers: add IfUnmodifiedSince header (b5543b67)

Breaking Changes

  • for any consumers of the Etag header, since the entity tag is now in a tuple.

(28fd5c81)

v0.1.10 (2015-02-03)

Bug Fixes

  • headers: add limit to maximum header size that should be parsed (f18a8fb7, closes #256)
  • rustup:
    • update FromStr (742081c8)
    • fix unused_feature warning in example server (05a3a6b7)
    • switch to unstable features (3af8b687)

v0.1.9 (2015-01-28)

Bug Fixes

  • headers: Don't display q if q=1 in quality item. (91df2441, closes #281)
  • rustup: update io import, Writer::write (f606b603)

Features

  • status: add is_<status_class>() methods to StatusCodes (2d55a22e)

v0.1.8 (2015-01-27)

Bug Fixes

  • headers:
    • make ConnectionHeader unicase (e06e7d9a)
    • make Protocol search websocket unicase (65c70180)
  • log: update to new logging levels (b002b6c3)

Features

Breaking Changes

  • Change header Cookie to Cookie

(92f43cf8)

v0.1.7 (2015-01-27)

Bug Fixes

  • rustup: update to newest fmt trait names and slice syntax (9e3c94d7)

Breaking Changes

  • Implementations of Header will need to adjust the header_name method. It no longer takes any arguments.

(8215889e)

v0.1.6 (2015-01-27)

Bug Fixes

  • headers: make Schemes, Basic, Protocol public (e43c35c1)

v0.1.5 (2015-01-27)

v0.1.4 (2015-01-27)

Bug Fixes

  • imports: Update TypeID import location to "any" (dd2534a6)

v0.1.3 (2015-01-27)

Features

  • server: add a deconstruct method to Request. (1014855f)

v0.1.2 (2015-01-27)

Bug Fixes

  • server: Increase MAX_HEADER_FIELD_LENGTH to 4k (54238b28)

Features

  • net:
    • Move SSL verification to unboxed closures (bca9a53c)
    • Allow more generic SSL verification () (af577851, closes #244)

0.1.1 (2015-01-13)

Features

  • server:: Add TLS/SSL support serverside (c6eef681, closes #1)

Bug Fixes

  • headers:
    • fix fmt_header outputs of several headers (aa266653, closes #246)
    • don't use Show to write UserAgent header (c8e334aa)