Commit Graph

741 Commits

Author SHA1 Message Date
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
sinkuu
8ba1f19d61 fix(url): fix panic when questionmark is in fragment 2017-02-25 20:25:39 +09: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
dc97dd77f4 feat(server): make Http default its body type to hyper::Chunk 2017-02-22 16:30:20 -08:00
Sean McArthur
ee58409578 fix(http): make Chunk impl Sync 2017-02-22 16:30:20 -08:00
Vincent Prouillet
bba761ac54 feat(headers): impl Eq for ContentType 2017-02-21 15:48:45 +09:00
Tasos Bakogiannis
592c1e2125 feat(headers): add Link header implementation
Closes #650
2017-02-20 12:00:01 -08:00
Sean McArthur
a3252c464d feat(server): change Server.run_until Future Error to ()
BREAKING CHANGE: The `run_until` future used to require its `Error` to
  be `hyper::Error`, now it can be `()`.
2017-02-17 13:48:17 -08:00
Sean McArthur
e04bcc12a7 feat(server): make Http compatible with TcpServer
This implements `From<Message> for Request` and `Into<Message> for
Response`, allowing an `Http` instance to be used with a `TcpServer`
from tokio-proto.

Closes #1036

BREAKING CHANGE: This makes `Request.remote_addr` an
  `Option<SocketAddr>`, instead of `SocketAddr`.
2017-02-16 18:26:36 -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
Michael Zapata
31d998078d docs(uri): fix rendering errors
Add a code block around the URI explanation to make it legible and
add a missing backquote
2017-02-10 16:00:59 +01:00
Guillaume Gomez
524f65a9a3 perf(header): Make Uri use MemSlice internally 2017-02-09 11:45:55 -08:00
Guillaume Gomez
5a4bd497c9 fix(Uri): Reexport Uri struct publicly 2017-02-09 15:25:55 +01: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
Sean McArthur
fc808ef9f8 Merge pull request #1049 from spk/use-pub-hyper-url
test(lib): use public hyper::Url everywhere
2017-02-05 14:47:34 -08:00
Laurent Arnoud
70a3f76a27 test(uri): fix URI parse error tests
Add also test parse authority without port
2017-02-05 13:12:03 +01: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
b4e0057d2b test(lib): fix unused warnings in doc tests 2017-02-01 15:47:43 -08:00
Sean McArthur
e9e7381ece feat(header): implement fmt::Display for several headers
Specifically, `CacheControl`, `Expect`, `Origin`, `Pragma`, `Prefer`,
`PreferenceApplied`, `ReferrerPolicy`, `StrictTransportSecurity`.
2017-01-31 23:58:07 -08:00
Sean McArthur
b4b2fb782e feat(header): add Headers::append_raw 2017-01-30 15:04:04 -08:00
Sean McArthur
cca798a09e fix(header): deprecate HeaderFormatter 2017-01-30 12:20:30 -08:00
Sean McArthur
53762cafc6 fix(header): enable SetCookie.fmt_header when only 1 cookie 2017-01-30 12:17:44 -08:00
Corey Farwell
5f1fa06089 docs(client): Update Client::configure example to compile 2017-01-28 20:12:35 -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
Josh
5c890321ee feat(lib): export Method::Put at top level 2017-01-25 11:43:56 -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
Andy Moran
529ad564c3 refactor(header): Change to base64 serialize
Replace rustc-serialize with base64 crate.

Closes #1028
2017-01-23 23:09:14 -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
Andy Moran
18bcc4e047 refactor(uri): Remove vec in uri parsing
Remove vec allocations in uri parsing. Additionally, change tests
to check the port.

https://github.com/hyperium/hyper/issues/1029
2017-01-23 22:35:50 +00:00
Sean McArthur
a126d2234e Merge pull request #1027 from M3rs/refactor_uri
Refactor(uri): Remove usage of Url parse in Uri #1022
2017-01-23 12:58:21 -08:00
Sean McArthur
8e790831c1 fix(header): security fix for header values that include newlines
Newlines in header values will now be replaced with spaces when being
written to strings or to sockets. This prevents headers that are built
from user data to smuggle unintended headers or requests/responses.

Thanks to @skylerberg for the responsible reporting of this issue, and
helping to keep us all safe!

BREAKING CHANGE: 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.
2017-01-23 12:55:56 -08:00
Sean McArthur
7d400398ab refactor(header): only import langtag macro for tests 2017-01-23 11:18:48 -08:00
M3rs
04560dfe24 refactor(uri): Improve parse_authority safety
Improve parse_authority safety with match, replace unwrap.

Also, refactor code in contains("://") block using result from the
parse_authority to also use match.

https://github.com/hyperium/hyper/issues/1022
2017-01-23 12:26:08 -06:00
M3rs
8faf5b8bb1 refactor(uri): Add errors to scheme uri
Add errors to scheme uri (contains "://").

Check for:
- Valid schemes (ftp, gopher, http, https, ws, wss)
- Invalid schemes (blob, file), or anything else -> Err(Error::Method)
- Authority is not empty (i.e. "http://")

https://github.com/hyperium/hyper/issues/1022
2017-01-22 11:38:45 -06:00