Commit Graph

1205 Commits

Author SHA1 Message Date
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
Sean McArthur
8b8ed46e56 Merge pull request #1015 from hyperium/unflaky
test(client): disable flaky disconnect test
2017-01-17 17:43:46 -08:00
Sean McArthur
49e281d086 test(client): disable flaky disconnect test 2017-01-17 17:25:55 -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
derekdreery
b64665635f docs(headers): Explain content_type assigned type
Explain why content_type mime params are not generic over slice.

Related to #991
2017-01-17 16:05:54 -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
e4232dd0d8 test(client): sleep disconnect test to reduce flakiness
Closes #1003
2017-01-16 12:58:06 -08:00
Sean McArthur
fef401921c chore(travis): only test integration benches, not run full benchmarks 2017-01-16 12:46:19 -08:00
Sean McArthur
1520d97ec1 chore(changelog): update changelog from 0.10.x 2017-01-16 10:53:38 -08:00
Sean McArthur
f0ab2b6aed feat(header): add Encoding::Brotli variant
BREAKING CHANGE: This adds a new variant to the `Encoding` enum, which
  can break exhaustive matches.
2017-01-16 10:50:36 -08:00
Sean McArthur
cd9fd52207 refactor(header): Host header internals made private
This allows us to improve the performance. For now, a Cow is used
internally, so clients can set the host to a static value and no longer
need copies.

Later, we can change it to also possibly have a MemSlice.

BREAKING CHANGE: The fields of the `Host` header are no longer
  available. Use the getter methods instead.
2017-01-16 10:50:36 -08:00
Sean McArthur
0167f57d65 docs(cookie): fix examples for Cookie and SetCookie 2017-01-16 10:50:36 -08:00
Sean McArthur
637b170f52 refactor(header): change Cookie and SetCookie to use String
This removes the cookie crate, since it has an optional dependency on
openssl, which can cause massive breakage if toggled on. Instead, the
`Cookie` and `SetCookie` headers now just use a `String`. Anyone can
create any typed header, so it is easy to plug in different
implementations.

BREAKING CHANGE: The `Cookie` and `SetCookie` headers no longer use the
  cookie crate. New headers can be written for any header, or the ones
  provided in hyper can be accessed as strings.
2017-01-16 10:50:35 -08:00
Sean McArthur
0a58f7e3b5 chore(travis): fix docs publish script 2017-01-16 10:50:35 -08:00
Sean McArthur
2f721c7f05 chore(travis): check for doc directory before building extra docs 2017-01-16 10:50:35 -08:00
Sean McArthur
0686c81c57 refactor(error): turn Void from an empty enum to a struct 2017-01-16 10:50:35 -08:00
Sean McArthur
ff84959f83 chore(lib): bump version to 0.11.0-a 2017-01-16 10:50:35 -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
Sean McArthur
e23689122a Merge pull request #989 from d-unseductable/docs/response_set_status
docs(server): fix Response::set_status() documentation
2017-01-08 20:16:39 -08:00
Dmitry Gritsay
334c4800bb docs(server): fix Response::set_status() documentation 2017-01-07 15:01:37 +02:00
Sean McArthur
bf2b8faa73 Merge pull request #979 from jamesmunns/fix-lint-errs
refactor(client): remove unused client type aliases
2016-12-31 15:23:50 -08:00
James Munns
ce71398f48 refactor(client): remove unused client type aliases
These type aliases cause test build to fail due to strict LINT settings
2016-12-31 15:39:37 +01:00
Sean McArthur
bdc19d52bf feat(headers): add star, json, text, image constructors to Accept 2016-12-10 12:22:08 -08:00
Sean McArthur
0b02e61791 chore(travis): pipe git commands to dev null 2016-11-19 14:56:35 -08:00
Sean McArthur
bca63e54b9 Merge pull request #962 from shanegibbs/move-hup-check-2
fix(http): move hup check before writable check
2016-11-18 10:00:10 -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
Sean McArthur
02f01765ee fix(tests): update new Host header tests to use Raw 2016-11-16 12:57:09 -08:00
Markus Unterwaditzer
8541ac72d7 fix(headers): Allow IPv6 Addresses in Host header 2016-11-01 14:44:56 -07:00
Sean McArthur
c3c53dda32 Merge pull request #943 from mrnayak/ref-policy-header
feat(headers): Add strict-origin and strict-origin-when-cross-origin referer policy
2016-10-28 15:16:15 -07:00
Raghav
3593d7987a feat(headers): Add strict-origin and strict-origin-when-cross-origin referer policy
Support for strict-origin and strict-origin-when-cross-origin in referer
policy required for imporving network security. This commit will attempt
to add missing pieces of referrer policy.
2016-10-28 16:56:40 -04:00
Sean McArthur
fe7f819929 Merge pull request #938 from jwilm/add-openssl-blocked-impl
fix(net): Implement `blocked()` for OpensslStream
2016-10-18 22:47:58 -07:00
Joe Wilm
ac5d0ab3fe fix(net): Implement blocked() for OpensslStream
This should fix some busy looping when using OpenSSL. For example, if
the transport was blocked on a read, it wasn't surfaced to the
`http::Conn` and so the wrong interest was registered with the event
loop. Registering for the wrong interest triggered calls to
`http::Conn::ready()` which were unable to make progress.
2016-10-18 15:14:43 -07:00
Sean McArthur
cd6c1b60bb Merge pull request #936 from jwilm/fix-chunked-decode
fix(http): Chunked decoder reads last \r\n
2016-10-17 21:43:37 -07: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
Sean McArthur
7de6f2b178 Merge pull request #933 from jwilm/misc-client-fixes
Misc client fixes
2016-10-14 12:20:22 -07:00