Commit Graph

122 Commits

Author SHA1 Message Date
Yazad Daruvala
5ed9e31b82 refactor(http): Buffered::read_from_io now returns Poll 2017-06-22 01:01:00 -07:00
Yazad Daruvala
a0c3a33eda refactor(http): Buffered::parse now returns Poll 2017-06-22 01:01:00 -07:00
Yazad Daruvala
80f16f1917 refactor(http): Decoder::decode and MemRead in io now return Poll 2017-06-22 01:01:00 -07:00
Jon Gjengset
41ac9e7873 docs(headers): clarify TransferEncoding xor ContentLength
Update the docs for `Content-Length` and `Transfer-Encoding` to mention
that they are mutually exclusive, and that setting one will unset the
other, in accordance with RFC7230.

Also expand the docs for `Request::set_body` to say that chunked
encoding is used by default, and mention how to disable this feature.
2017-06-21 15:30:03 -04:00
Sean McArthur
f953cafe27 feat(status): add StatusCode::try_from(u16).
This is a temporary function until the `TryFrom` trait stabilizes.

BREAKING CHANGE: 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`.
2017-06-13 09:50:46 -07:00
Corey Farwell
1059eb349a style(lib): address clippy code style warnings
* Remove unnecessary return statements.

* Combine identical `match` arms.

* Collapse nested conditional.

* Use `assert_ne` where applicable.

* Lifetime elision.
2017-06-12 20:16:20 -07:00
Sean McArthur
e2ed6f5868 refactor(chunk): make use of Bytes::extend instead of custom code 2017-06-07 17:48:26 -07:00
Sean McArthur
acd62cda44 feat(lib): add raw_status feature in Cargo.toml
The `RawStatus` types on the `Response` are now gone by default. To make
use of them, the `raw_status` feature must be enabled in `Cargo.toml`.

BREAKING CHANGE: To use `RawStatus`, you must enable the `raw_status`
  crate feature.
2017-06-03 16:23:33 -07:00
David Ross
70948a24b0 fix(http,server): Update tests to use non-deprecated futures methods.
These seem mostly to be renames, with the exception of Unpark -> Notify.
2017-06-02 23:33:19 -07:00
Sean McArthur
bdd2e1a3ad perf(server): cache renderings of the Date header
This is actually one of the biggest impacts to benchmark performances at
this point. Caching the rendering of the Date header improves "hello
world" benchmarks by around 10%.
2017-05-26 12:29:26 -07:00
Sean McArthur
78a8eed7f1 test(http): addn a benchmark for encoding a response head 2017-05-25 11:41:56 -07:00
Sean McArthur
2cbf4ef85f refactor(http): reduce complexity of determing an Encoder 2017-05-25 10:38:37 -07:00
Yazad Daruvala
e134b890ef refactor(http): combine reserve_read_buf into read_from_io 2017-05-22 22:06:03 -07:00
Yazad Daruvala
6c8e6acaff refactor(http): remove the commented out code in http::h1 2017-05-22 22:06:03 -07:00
Yazad Daruvala
2f0470bcf3 refactor(http): delete some indirection around Http1Transaction::parse 2017-05-22 22:06:03 -07:00
Sean McArthur
33eb8f95a3 perf(http): use custom type for ParseEof error instead of string error 2017-05-12 16:54:24 -07:00
Sean McArthur
c036fd6056 test(http): fix conn tests with higher init buffer size 2017-05-12 16:35:27 -07:00
Sean McArthur
5caf590c06 perf(http): increase size of initial buffer to 8kb 2017-05-12 15:39:34 -07:00
Nick Gonzales
864d3e27a4 refactor(http): merge Request and Response from server and client
Request and Response are now visible from:
- hyper::{Request, Response}
- hyper::server::{Request, Response}
- hyper::client::{Request, Response}
They truly exist in the http module, but are re-exported to reduce the number of breaking changes.

request::new and response::new were renamed to ::from_wire to reduce confusion with Request::new
and Response::new. See issue #1126

Request now has an optional Body, because not all requests have bodies.
Use body_ref() to determine if a body exists.
Use body() to take the body, or construct one if no body exists.

Closes #1155

BREAKING CHANGE: Response::body() now consumes the response
2017-05-01 14:22:07 -06:00
Nick Gonzales
0de295670f refactor(http): add status() methods to RawStatus and ResponseHead
This lets us convert RawStatus to StatusCode in Response without having to address the tuple index
directly.
2017-05-01 14:18:22 -06:00
Nick Gonzales
f61708ba81 feat(http): add Default trait to Body
server::Request has a mandatory Body and client::Request has an optional Body.
Having a default for Body makes it easier to merge the two.
2017-05-01 14:18:22 -06:00
Sean McArthur
df1095dfe7 test(http): fix Body.concat test 2017-05-01 12:42:21 -07:00
Sean McArthur
6faa653f0d feat(http): implement Default for Body 2017-05-01 12:29:06 -07:00
Sean McArthur
f5567db4dc feat(http): implement Default for Chunk
This allows using `Stream::concat2` with a `hyper::Body`.
2017-05-01 12:29:06 -07:00
Sean McArthur
316c6fad30 refactor(header): change HttpDate to opaque over SystemTime
This removes the need for someone to use the `time` crate to create a
date compatible with HTTP headers. It now works with the `SystemTime`
type from the standard library.

BREAKING CHANGE: `HttpDate` no longer has public fields. Convert between
  `HttpDate` and `SystemTime` as needed.
2017-04-25 14:30:49 -07:00
Sean McArthur
0473d90a85 fix(server): fix broken keep-alive in Server
Closes #1134
2017-04-12 18:31:50 -07:00
Sean McArthur
f05a58a1b2 chore(travis): set minimum rust version 2017-04-10 15:09:54 -07:00
Sean McArthur
78512bdb18 feat(chunk): implement Extend and IntoIterator for Chunk
The real reason to provide these implementations is so that `concat` on
the `Body` can work to easily join all the chunks into 1.
2017-04-08 17:16:08 -07:00
Sean McArthur
633b37df11 fix(conn): always read till blocked when parsing
Closes #1111
2017-04-05 15:45:20 -07:00
Sean McArthur
5d3499e036 fix(uri): fix Uri to origin_form when path is '*' 2017-04-05 14:36:39 -07:00
Sean McArthur
cb1927553e fix(uri): fix Uri to_origin_form to always include '/'
Closes #1112
2017-04-05 11:40:57 -07:00
Sean McArthur
997a64d770 fix(conn): always flush io from poll_complete
Closes #1108
2017-04-03 10:06:39 -07:00
Sean McArthur
4fb7e6ebc6 feat(lib): remove extern Url type usage
BREAKING CHANGE: 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.
2017-03-21 11:03:57 -07:00
Alex Crichton
8554904dc9 refactor(lib): convert usage of tokio_core::io to tokio_io
This commit updates to the most recent versions (released today) of the various
Tokio libraries in use. Namely the `tokio_core::io` module has now been
deprecated in favor of an external `tokio-io` crate. This commit pulls in that
crate and uses the `AsyncRead + AsyncWrite` abstraction instead of `Io` from
tokio-core.

BREAKING CHANGE: Any external types that were using that had implemented `Io` will need to 
  implement `AsyncRead + AsyncWrite` from tokio_io.
2017-03-17 17:31:44 -07:00
Sean McArthur
88eaaa0016 fix(http): dont return Error frame with idle eof 2017-03-07 12:16:10 -08:00
Matthew Dawson
9e16637514 fix(http): Fix commit fac3d70c0b
The new From<Chunk> for Bytes uses self instead of chunk in its
implementation of From::from.  Change it to chunk to fix the build.
2017-03-02 01:40:13 -05:00
Sean McArthur
fac3d70c0b feat(http): add Into<Bytes> for Chunk 2017-03-01 16:59:36 -08:00
Sean McArthur
65b3e08f69 feat(http): use the bytes crate for Chunk and internally 2017-03-01 14:15:47 -08:00
Sean McArthur
a7021d1f88 test(http): remove println from a test 2017-02-28 16:32:40 -08:00
Sean McArthur
ab939511f0 fix(http): more eagerly flush when the Conn is full
Closes #1078
2017-02-28 16:05:55 -08:00
Sean McArthur
6eb0753921 fix(http): fix another instance of keep-alive busy-looping 2017-02-23 13:36:07 -08:00
Sean McArthur
8756f40ac9 fix(http): fix busy looping when in keep-alive 2017-02-22 16:31:15 -08:00
Sean McArthur
ee58409578 fix(http): make Chunk impl Sync 2017-02-22 16:30:20 -08:00
Sean McArthur
3cf3b75159 Merge pull request #1066 from hyperium/outgoing-generic
feat(http): allow specifying custom body streams
2017-02-16 18:15:15 -08:00
Sean McArthur
1b1311a7d3 feat(http): allow specifying custom body streams 2017-02-16 15:06:55 -08:00
Sean McArthur
7d37197dde chore(http): change log to debug for decoder errors 2017-02-16 14:11:28 -08:00
Sean McArthur
ebf96f3f5f fix(http): send errors as frame errors
Additionally, only close read side, so it's potentially possible to
write a response for an error.
2017-02-16 14:09:41 -08:00
Guillaume Gomez
524f65a9a3 perf(header): Make Uri use MemSlice internally 2017-02-09 11:45:55 -08:00
Julian Tescher
2fa414fb5f fix(lib): Fixed typos in multiple modules
BREAKING CHANGE: The `Preference` header had a typo in a variant and it's string representation,
  change `Preference::HandlingLeniant` to `Preference::HandlingLenient`.
2017-02-07 11:04:42 -08:00
Sean McArthur
0d05533d07 chore(h2): clear out unused h2 module 2017-02-06 16:53:06 -08:00