Commit Graph

152 Commits

Author SHA1 Message Date
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
Sean McArthur
23ac1bfe82 test(http): test Uri parse errors propagate 2017-02-06 13:37:02 -08:00
Laurent Arnoud
d5ff287b35 refactor(lib): use public hyper::Url everywhere 2017-02-04 14:51:14 +01:00
Sean McArthur
c42f18db05 feat(status): impl Into<u16> for StatusCode 2017-02-02 17:02:35 -08:00
Sean McArthur
027cb71b7b perf(http): reduce a copy when not using Chunked encoding 2017-02-02 13:13:48 -08:00
Sean McArthur
61364d245b perf(header): improve on MemSlice usage in headers 2017-01-26 23:49:44 -08:00
Guillaume Gomez
1b556389c0 perf(header): use MemSlice when parsing headers 2017-01-26 10:07:34 -08:00
Sean McArthur
44f2bc6d00 refactor(http): add From<Vec<u8>> impl for MemBuf 2017-01-25 11:05:58 -08:00
Sean McArthur
e3ef866a31 refactor(http): allow MemSlice to be sliced to make copies 2017-01-24 18:36:49 -08:00
Sean McArthur
cfcbd8c96b fix(http): keep flushing until WOULDBLOCK is received 2017-01-23 23:57:43 -08:00
Sean McArthur
0e332c66f2 refactor(http): adjust socket eof debug log 2017-01-23 22:50:42 -08:00
Sean McArthur
8597c55a13 refactor(http): adjust debug logs 2017-01-23 22:48:35 -08:00
Sean McArthur
8cd89bed86 refactor(header): improve debug view of Headers 2017-01-23 22:48:35 -08:00
Guillaume Gomez
9036443e6b feat(uri): redesign RequestUri type into Uri
Closes #1000

BREAKING CHANGE: The name of `RequestUri` has changed to `Uri`. It is no
  longer an `enum`, but an opaque struct with getter methods.
2017-01-17 16:46:24 -08:00
Sean McArthur
1868f8548d refactor(http): remove buffer, use WriteBuf 2017-01-16 18:56:36 -08:00
Kornelijus Survila
6e4739f918 fix(http): Fix heap corruption in http::buffer::grow_zerofill
Fixes #1010
2017-01-16 14:24:09 -08:00
Sean McArthur
be461b4663 perf(http): introduce MemBuf, a shared read buffer 2017-01-16 10:50:35 -08:00
Sean McArthur
2d2d5574a6 feat(lib): redesign API to use Futures and Tokio
There are many changes involved with this, but let's just talk about
user-facing changes.

- Creating a `Client` and `Server` now needs a Tokio `Core` event loop
to attach to.
- `Request` and `Response` both no longer implement the
`std::io::{Read,Write}` traits, but instead represent their bodies as a
`futures::Stream` of items, where each item is a `Chunk`.
- The `Client.request` method now takes a `Request`, instead of being
used as a builder, and returns a `Future` that resolves to `Response`.
- The `Handler` trait for servers is no more, and instead the Tokio
`Service` trait is used. This allows interoperability with generic
middleware.

BREAKING CHANGE: A big sweeping set of breaking changes.
2017-01-16 10:44:27 -08:00
Shane Gibbs
3f34f2bd1d fix(http): move hup check before writable check 2016-11-18 16:03:58 +00:00
Shane Gibbs
359493f973 fix(http): move hup check after read/write check 2016-11-17 18:14:01 -08:00
Joe Wilm
bffde8c841 fix(http): Chunked decoder reads last \r\n
Before this, the final \r\n for an empty body was not being read. This
caused issues with keep-alive connections.
2016-10-17 17:40:40 -07:00