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