Commit Graph

1392 Commits

Author SHA1 Message Date
Eric Chiang
2331e0b3e5 refactor(examples): remove use of depricated futures features
The "Finished" struct and "finished" method have been deprecated[0]
and don't show up in the futures docs. Prefer non-deprecated
features for users exploring the examples.

[0] https://github.com/alexcrichton/futures-rs/blob/0.1.10/src/future/mod.rs#L25
2017-02-08 10:54:23 -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
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
Sean McArthur
48435cd419 Merge pull request #1050 from spk/fix-commented-uri-tests
test(uri): fix URI parse error tests
2017-02-05 14:46:36 -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
352b31f67d docs(examples): print that examples are using only 1 thread 2017-02-01 15:47:07 -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
d771096455 Merge pull request #1038 from hyperium/headers-mem-slice
use MemSlice in Headers
2017-01-27 20:01:37 -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
d966d595e6 chore(github): add pull request template 2017-01-25 11:42:40 -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
Sean McArthur
0385427b53 Merge pull request #1030 from M3rs/remove_vec
refactor(uri): Remove vec in uri parsing

Closes #1029
2017-01-23 16:54:03 -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
8f8b8618cd refactor(examples): remove log crate from server example 2017-01-23 13:31:39 -08: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
M3rs
37b26e21e8 refactor(uri): Add default path for absolute-form
Add default path ("/") for absolute-form, even if not included.

This change assumes self.scheme().is_some() indicates that the Uri
is in absolute-form.

Issue:
https://github.com/hyperium/hyper/issues/1022
2017-01-22 10:51:06 -06:00
M3rs
55d13a9afd refactor(uri): Remove extra authority logic
Remove extra logic in authority getter method which handles
default ports.
2017-01-21 21:20:24 -06:00
M3rs
4f5327afd4 refactor(uri): Remove Url parse
Remove usage of Url parse in Uri in order to improve performance.

https://github.com/hyperium/hyper/issues/1022
2017-01-20 23:41:09 -06:00
Jake Goulding
ab254c9103 chore(cargo): add categories to Cargo.toml 2017-01-20 12:04:57 -08:00
Sean McArthur
9f0a537b7b Merge pull request #1021 from fmonjalet/fix-uri-parsing
fix(uri): fix panic when uri contain default port
2017-01-20 12:03:18 -08:00
Florent Monjalet
594ea65420 fix(uri): fix panic when uri contain default port
Parsing "http://host:80" caused panic (index out of bound) because the
authority end index was computed with the original uri but the uri
stored for later used was sanitized by `Url::parse()` to "http://host"

The fix computes the autority end index with the actual uri used (the
one from `Url::parse()`). Two tests have been added.
2017-01-20 17:17:33 +01:00
Sean McArthur
81f64b4af5 chore(travis): remove extra echos from travis.yml 2017-01-19 19:39:31 -08:00
Sean McArthur
c4572121fa chore(travis): update travis gh-pages token 2017-01-19 18:23:19 -08:00
Sean McArthur
431420138e Merge branch 'docs-deploying' 2017-01-19 17:46:15 -08:00
Sean McArthur
b57a7a3df2 chore(travis): fix deploying docs after successful travis on master 2017-01-19 17:35:41 -08:00
Julius de Bruijn
1037bc7732 feat(header): Add support for Retry-After header
This used to be an external crate, https://github.com/jwilm/retry-after
2017-01-19 15:29:05 -08:00
Alex Crichton
f45e9c8e4f refactor(server): expose Http that implements ServerProto
The main changes are:

* The entry point is how `Http`, the implementation of `ServerProto`.
  This type has a `new` constructor as well as builder methods to
  configure it.

* A high-level entry point of `Http::bind` was added which returns a
  `Server`. Binding a protocol to a port requires a socket address
  (where to bind) as well as the instance of `NewService`. Internally
  this creates a core and a TCP listener.

* The returned `Server` has a few methods to learn about itself, e.g.
  `local_addr` and `handle`, but mainly has two methods: `run` and
  `run_until`.

* The `Server::run` entry point will execute a server infinitely, never
  having it exit.

* The `Server::run_until` method is intended as a graceful shutdown
  mechanism. When the provided future resolves the server stops
  accepting connections immediately and then waits for a fixed period of
  time for all active connections to get torn down, after which the
  whole server is torn down anyway.

* Finally a `Http::bind_connection` method exists as a low-level entry
  point to spawning a server connection. This is used by `Server::run`
  as is intended for external use in other event loops if necessary or
  otherwise low-level needs.

BREAKING CHANGE: `Server` is no longer the pimary entry point. Instead,
  an `Http` type is created  and then either `bind` to receiver a `Server`,
  or it can be passed to other Tokio things.
2017-01-18 14:09:20 -08:00
Sean McArthur
39a53fcd33 Merge pull request #1014 from hyperium/next-uri
feat(uri): redesign RequestUri type into Uri
2017-01-17 17:44:18 -08:00