Commit Graph

279 Commits

Author SHA1 Message Date
Jonathan Reem
b1ab03f7f8 (fix) Harden header parsing against memory exhaustion attacks.
Adds new limits on the lengths of header names and fields.

Fixes #187
2014-12-11 17:08:57 -08:00
Sean McArthur
7f931845cc Merge pull request #188 from wenderen/allow-header
Allow header

Closes #174
2014-12-10 10:59:34 -08:00
Rohan Prinja
4bae6b7e0e add allow header 2014-12-11 00:18:32 +05:30
Sean McArthur
e4bf1155de Merge pull request #186 from hyperium/declone
rustup for clone trait
2014-12-09 17:03:34 -08:00
Sean McArthur
89bedd30ba rustup for clone trait 2014-12-09 16:50:49 -08:00
Sean McArthur
514f96e9eb Merge pull request #180 from wenderen/etag-header
add etag header
2014-12-07 23:48:10 -08:00
Rohan Prinja
c4efa80fb5 add etag header 2014-12-08 13:08:53 +05:30
Sean McArthur
db2a9f40d8 Merge pull request #184 from cmr/if-modified-since
Add missing reexport
2014-12-07 15:57:26 -08:00
Corey Richardson
6d91693a41 Add missing reexport 2014-12-07 18:51:50 -05:00
Sean McArthur
0903340905 Merge pull request #183 from cmr/if-modified-since
header: add If-Modified-Since support
2014-12-07 15:50:06 -08:00
Corey Richardson
e2d387d118 header: add If-Modified-Since support 2014-12-07 18:48:05 -05:00
Sean McArthur
5b49076d65 Merge pull request #181 from hyperium/rustup
rustup
2014-12-06 10:52:37 -08:00
Sean McArthur
debebe8fbe rustup 2014-12-06 10:52:00 -08:00
Sean McArthur
ae88092587 Merge pull request #168 from hyperium/ssl-verify
r=reem
2014-12-04 17:41:42 -08:00
Sean McArthur
36429ab50c refactor(net): NetworkConnecter no longer is for static usage
Instead, you can use an instance of a NetworkConnector with
`Request::with_connector`. This allows overloading of the NetworkStream
constructors, so that it is easy to modify how an `HttpStream` is
created, while still relying on the rest of the stream implementation.

BREAKING CHANGE
2014-12-04 17:39:38 -08:00
Sean McArthur
e6feb34f1b Merge pull request #176 from kyledewey/remove_equiv
Removed now-deprecated Equiv implementation
2014-12-04 14:27:24 -08:00
Kyle Dewey
4febf65a88 Removed now-deprecated Equiv implementation 2014-12-04 14:10:56 -08:00
Sean McArthur
9a2605a138 Merge pull request #165 from hyperium/expires
Adds CacheControl, Expires, and LastModified headers
2014-12-02 21:22:32 -08:00
Sean McArthur
e19330326d Merge pull request #161 from hyperium/mucell
refactor(headers): changed from rwlock to mucell underneath
2014-12-02 21:20:52 -08:00
Sean McArthur
ad22d79815 Merge pull request #166 from s-panferov/feature/client-cookies
Add more functions for client to work with cookies.
2014-12-02 13:43:30 -08:00
Stanislav Panferov
6a8864cc27 Add more functions for client to work with cookies. Fixes #155. 2014-12-03 00:33:25 +03:00
Sean McArthur
0ccd1acaa1 Merge pull request #167 from hyperium/rustup
rust upgrade
2014-12-02 13:19:17 -08:00
Sean McArthur
fec030a21e rust upgrade 2014-12-02 13:12:04 -08:00
Sean McArthur
f182f53210 feat(headers): add CacheControl header 2014-12-01 19:58:07 -08:00
Sean McArthur
1ed4ea5a27 Merge pull request #164 from dpc/issue-163
Fix Issue 163
2014-12-01 09:38:44 -08:00
Dawid Ciężarkiewicz
f5a7d7cfa1 Tests for "Fix handling long Reason Phrase"
Issue #163
2014-11-30 18:37:21 -08:00
Dawid Ciężarkiewicz
f3a5c0124a Fix handling long Reason Phrase
rfc2616 does not specify the maximum length of *Reason Phrase* so it's
a good practice to handle even unreasonably long input.

16 char. buffer is not enough to correctly handle even the common `304
Moved Permanently`. Increase buffer size to more realistic 32. Also, up
to 128 more characters will be read and ignored, providing even greater
versatility without increasing memory usage.

Issue #163
2014-11-30 18:37:14 -08:00
Sean McArthur
0297147dd1 feat(headers): add LastModified header 2014-11-30 15:59:40 -08:00
Sean McArthur
e255f88dd2 feat(headers): add Expires header 2014-11-30 15:47:02 -08:00
Sean McArthur
d71d6549f7 refactor(headers): changed from rwlock to mucell underneath 2014-11-29 22:06:48 -08:00
Jonathan Reem
b1761ad4e1 Merge pull request #162 from hyperium/headers-ergo
feat(headers): header ergonomics
2014-11-29 20:14:26 -05:00
Sean McArthur
8071cfa8bf feat(headers): header ergonomics
- Reexports all common::* as header::*
- Most headers implement Deref where it makes sense.

Closes #156
2014-11-29 13:55:50 -08:00
Sean McArthur
1014f63e15 Merge pull request #159 from hyperium/unlog
fix(logging): adjust several logging messages
2014-11-28 18:14:48 -08:00
Sean McArthur
07cf414e17 fix(logging): adjust several logging messages
Closes #148
2014-11-28 18:03:37 -08:00
Sean McArthur
ed6faceec3 Merge pull request #154 from retep998/master
Update to latest Rust
2014-11-28 16:02:22 -08:00
Sean McArthur
cac2a1060c Merge pull request #158 from dpc/master
Fix `HeaderFormatter`.
2014-11-28 09:59:47 -08:00
Dawid Ciężarkiewicz
db72cb5187 Fix HeaderFormatter.
Issue #157
2014-11-28 03:49:40 -08:00
Peter Atashian
00a76cee03 Update to latest Rust
Signed-off-by: Peter Atashian <retep998@gmail.com>
2014-11-28 02:22:21 -05:00
Sean McArthur
00a1452111 Merge pull request #153 from hyperium/rustup
Rustup
2014-11-27 12:19:45 -08:00
Sean McArthur
4263a01f1c convert to using Cow 2014-11-27 12:13:07 -08:00
Evgeny Rozaliev
c77cd3d3da (fix) unwrap() => into_inner() 2014-11-27 16:05:19 +03:00
Sean McArthur
ba758ecde1 Merge pull request #146 from hyperium/iter
improve Headers.iter
2014-11-25 18:45:09 -08:00
Sean McArthur
febf7d16ef feat(headers): headers.iter() is more powerful
Previously, iter() returned (&str, HeaderView), which wasn't too useful
other than to write out to a stream. Checking for a certain header is
painful since header names are case-insensitive, but &str isn't. And
once found, you still couldn't do anything with a HeaderView other
format it.

Now, iter() returns a HeaderView, with methods is(), name(), and
value(). You can do `view.is::<ContentType>()` to check what header it
is. And you get the typed value out by calling
`view.value::<ContentType>()`, which will return an
`Option<ContentType>`, similar to `headers.get()`.

Headers also now implement Extend and FromIterator, so it's easier to
build new Headers objects by filtering out a few headers.

Because this changes .iter() to return HeaderView instead of a tuple,
this is a:

[breaking-change]
2014-11-24 22:25:06 -08:00
Jonathan Reem
b1684ff027 Merge pull request #147 from hyperium/empty-reader
feat(server): properly handle requests that shouldn't have bodies
2014-11-24 22:08:45 -08:00
Sean McArthur
a60a67cd1e feat(server): properly handle requests that shouldn't have bodies 2014-11-24 21:27:59 -08:00
Jonathan Reem
a355092a93 Merge pull request #135 from hyperium/raw-status
feat(client): add a status_raw value
2014-11-24 20:48:11 -08:00
Sean McArthur
486080b044 feat(client): add a status_raw value 2014-11-24 19:49:12 -08:00
Sean McArthur
de17901adb Merge pull request #144 from emk/method-eq
Allow hyper::method::Method to be put in HashMap
2014-11-24 17:38:55 -08:00
Eric Kidd
ccef7953f8 Add some basic tests for hyper::method::Method
This test case does not attempt to test all the methods exhaustively,
but it does at least test all the methods in the APIs.  There's also a
check to make sure that Method can be used as part of a hash-table key.
2014-11-24 20:23:37 -05:00
Eric Kidd
91112516fc Allow hyper::method::Method to be put in HashMap
This is needed for porting iron/router to hyper.
2014-11-24 20:23:37 -05:00