2522 Commits

Author SHA1 Message Date
Sean McArthur
5e20688398 feat(client): remove client::connect module (#2949)
Some checks failed
CI / CI is green (push) Has been cancelled
CI / Check Style (push) Has been cancelled
CI / Test beta on macOS-latest (push) Has been cancelled
CI / Test stable on macOS-latest (push) Has been cancelled
CI / Test beta on ubuntu-latest (push) Has been cancelled
CI / Test stable on ubuntu-latest (push) Has been cancelled
CI / Test beta on windows-latest (push) Has been cancelled
CI / Test stable on windows-latest (push) Has been cancelled
CI / Test nightly on macOS-latest (push) Has been cancelled
CI / Test nightly on ubuntu-latest (push) Has been cancelled
CI / Test nightly on windows-latest (push) Has been cancelled
CI / Check MSRV (1.56) (push) Has been cancelled
CI / Test with Miri (push) Has been cancelled
CI / features (push) Has been cancelled
CI / Test C API (FFI) (push) Has been cancelled
CI / Verify hyper.h is up to date (push) Has been cancelled
CI / Build docs (push) Has been cancelled
Benchmark / Benchmark (push) Has been cancelled
The connect pieces will be available in `hyper-util`.

BREAKING CHANGE: Use `connect` from `hyper-util`.
2022-08-17 10:50:40 -07:00
Sean McArthur
bb3af17ce1 feat(client): remove higher-level hyper::Client (#2941)
This removes the following types and methods from hyper:

- `Client`
- `Error::is_connect()`

BREAKING CHANGE: A pooling client is in the hyper-util crate.
2022-08-15 09:15:59 -07:00
Sean McArthur
889fa2d872 feat(client): remove hyper::client::server (#2940)
BREAKING CHANGE: Tower `Service` utilities will exist in `hyper-util`.
2022-08-12 13:54:45 -07:00
Sean McArthur
cd32454403 docs(contrib): add GOVERNANCE and MAINTAINERS files (#2938) 2022-08-12 10:37:32 -07:00
Oddbjørn Grødem
c558647762 test(benches): re-enable pipeline and server bench (#2934)
re-enable the recently disabled pipeline and server bench using
`hyper::server::conn` instead of the removed higher-level `Server` api
2022-08-02 06:46:26 -07:00
Sean McArthur
3c7bef3b6f feat(server): remove the high-level Server API (#2932)
This removes `hyper::Server`, and it's related parts:

- `hyper::server::Builder`
- `hyper::server::accept`
- `hyper::service::make_service_fn`

New utilities for managing servers will exist in `hyper-util`.
2022-08-01 14:28:23 -07:00
Sean McArthur
491b076bca chore(ci): disable CI benchmarks publishing (#2933) 2022-07-29 16:55:49 -07:00
Sean McArthur
ca99e23e27 refactor(client): clean up unused lint warnings in dns module (#2931) 2022-07-29 16:22:29 -07:00
Sean McArthur
0c8ee93d7f feat(client,server): remove tcp feature and code (#2929)
This removes the `tcp` feature from hyper's `Cargo.toml`, and the code it enabled:

- `HttpConnector`
- `GaiResolver`
- `AddrStream`

And parts of `Client` and `Server` that used those types. Alternatives will be available in the `hyper-util` crate.

Closes #2856 
Co-authored-by: MrGunflame <mrgunflame@protonmail.com>
2022-07-29 10:07:09 -07:00
Sean McArthur
d4b5bd4ee6 fix(http1): trim obs-folded headers when unfolding (#2926) 2022-07-27 07:00:53 -07:00
Sean McArthur
509672aada feat(client): introduce version-specific client modules (#2906)
This creates `client::conn::http1` and `client::conn::http2` modules,
both with specific `SendRequest`, `Connection`, and `Builder` types.
2022-07-20 14:12:29 -07:00
deantvv
09e35668e5 feat(ffi): add http1_allow_multiline_headers (#2918) 2022-07-19 12:18:09 -07:00
Sean McArthur
3660443108 test(client,server): add back tests around streaming bodies (#2905) 2022-06-29 06:39:21 -07:00
Oddbjørn Grødem
ce72f73464 feat(lib): remove stream cargo feature (#2896)
Closes #2855
2022-06-23 15:12:24 -07:00
Sean McArthur
a563404033 chore(lib): bump MSRV to 1.56 (#2902) 2022-06-23 14:52:36 -07:00
silence-coding
5fa113ebff fix(http1): fix http1_header_read_timeout to use same future (#2891)
Co-authored-by: silence <xxx@email.com>
2022-06-13 13:44:28 -07:00
Oddbjørn Grødem
e9cab49e6e feat(server): remove AddrStream struct (#2869)
remove addrstream type, it provides no benefit over tokio::net::tcpstream

Closes #2850
2022-06-08 16:59:32 -07:00
Sean McArthur
2c7344a65b chore(lib): begin 1.0 development (#2882) 2022-06-08 16:28:18 -07:00
Adam C. Foltzer
b2052a433f feat(ext): support non-canonical HTTP/1 reason phrases (#2792)
Add a new extension type `hyper::ext::ReasonPhrase` gated by either the `ffi` or `http1` Cargo
features. When enabled, store any non-canonical reason phrases in this extension when parsing
responses, and write this reason phrase instead of the canonical reason phrase when emitting
responses.

Reason phrases are a disused corner of the spec that implementations ought to treat as opaque blobs
of bytes. Unfortunately, real-world traffic sometimes does depend on being able to inspect and
manipulate them.

Non-canonical reason phrases are checked for validity at runtime to prevent invalid and dangerous
characters from being emitted when writing responses. An `unsafe` escape hatch is present for hyper
itself to create reason phrases that have been parsed (and therefore implicitly validated) by
httparse.
2022-06-08 15:57:33 -07:00
evenbetter
f12d4d4aa8 refactor(lib): resolve unused import (#2889) 2022-06-07 08:10:29 -07:00
Kian-Meng Ang
4545c3ef19 docs(proto): fix typos (#2876) 2022-05-30 07:43:39 -07:00
Sean McArthur
f8e2a83194 v0.14.19 2022-05-27 12:05:38 -07:00
Ryan Russell
a929df843e docs(various): fix typos in VISION and ROADMAP (#2875)
Signed-off-by: r <ryanrussell@users.noreply.github.com>
2022-05-27 13:51:32 +00:00
Nylonicious
3a755a632d chore(lib): update tokio-util to 0.7 (#2762) 2022-05-26 16:26:31 -07:00
Sean McArthur
4678be9e81 docs(contrib): add guide for Triaging Issues 2022-05-25 14:13:09 -05:00
Sean McArthur
775fac114b docs(lib): propose 1.0 roadmap (#2806) 2022-05-20 10:08:55 -07:00
silence-coding
a32658c1ae feat(server): add Connection::http2_max_header_list_size option (#2828)
This allows setting the HTTP/2 `SETTINGS_MAX_HEADER_LIST_SIZE` which advertises to the peer the maximum header size allowed, and internally is enforced.

Closes #2826
2022-05-18 16:52:01 -07:00
Jannes (思明)
67b73138f1 fix(server): don't add implicit content-length to HEAD responses (#2836)
HEAD responses should not have content-length implicitly set by hyper.

Co-authored-by: Jannes Timm <jannes@cloudflare.com>
2022-05-18 10:49:58 -07:00
Basti Ortiz
faf24c6ad8 refactor(http1): assorted code readability improvements in h1/conn.rs (#2817)
* refactor: use `matches` macro to flatten code

* refactor: prefer `matches` over explicit matching

* refactor: reuse `can_write_body` method

* refactor: use `matches` over `if`-`let`

* refactor: nested `if`-`else` as early return

* refactor: move inner `match` logic outside

* refactor: unneeded `return` in `match`

* refactor: remove unneeded reference matching

* refactor: use early returns for idle check

* refactor: use `matches` macro for Boolean `match`
2022-04-26 11:29:49 -07:00
Anthony Ramine
6a35c175f2 fix(http1): fix preserving header case without enabling ffi (#2820)
The previous commit broke this, but it wasn't released, so released versions will never notice the breakage.
2022-04-26 08:24:57 -07:00
cui fliter
89598dfcfe docs(lib): fix some typos (#2818)
Signed-off-by: cuishuang <imcusg@gmail.com>
2022-04-25 11:05:48 -07:00
Liam Warfield
78de8914ea feature(ffi): add connection option to preserve header order (#2798)
Libcurl expects that headers are iterated in the same order that they
are recieved. Previously this caused curl tests 580 and 581 to fail.
This necessitated exposing a way to preserve the original ordering of
http headers.

SUMMARY OF CHANGES: Add a new data structure called OriginalHeaderOrder that
represents the order in which headers originally appear in a HTTP
message. This datastructure is `Vec<(Headername, multimap-index)>`.
This vector is ordered by the order which headers were recieved.
Add the following ffi functions:
- ffi::client::hyper_clientconn_options_set_preserve_header_order : An
     ffi interface to configure a connection to preserve header order.
- ffi::client::hyper_clientconn_options_set_preserve_header_case : An
     ffi interface to configure a connection to preserve header case.
- Add a new option to ParseContext, and Conn::State called `preserve_header_order`.
  This option, and all the code paths it creates are behind the `ffi`
  feature flag. This should not change performance of response parsing for
  non-ffi users.

Closes #2780

BREAKING CHANGE: hyper_clientconn_options_new no longer
  sets the http1_preserve_header_case connection option by default.
  Users should now call
  hyper_clientconn_options_set_preserve_header_case
  if they desire that functionality.
2022-04-23 09:05:37 -07:00
Ralf Jung
e1138d716d test(lib): add CI job to test with Miri 2022-04-21 12:55:52 -07:00
Ralf Jung
8834d5a2a7 test(lib): fix tests with more feature combinations 2022-04-21 12:55:52 -07:00
Ilya Trefilov
ffbf610b16 feat(server): add AddrStream::local_addr() (#2816)
Expose local address of tcp connection in AddrStream.

Closes #2773
2022-04-20 15:35:36 -07:00
Sean McArthur
d2c945e8ed docs(contrib): add contributing guide for submitting pull requests 2022-04-15 09:19:32 -07:00
Sean McArthur
311ba2b97e docs(lib): define the VISION and TENETS 2022-04-12 16:54:27 -07:00
Basti Ortiz
1d895b8dfc refactor(capi): make early returns consistent in C examples (#2812)
- Since the `if` condition already causes the loop to `break`,
  the `else` is not necessary. We wouldn't have reached the `else`
  block, anyway, if the prior `if` condition passed.
- We are more likely to poll a successful chunk than finish
  the request or throw an error. Thus, it is best if we go
  for the optimistic route and check for the successful
  case first.
2022-04-11 17:20:14 -07:00
SabrinaJewson
e3ee1de32d style(server): rustfmt 2022-04-08 17:02:02 -07:00
SabrinaJewson
dd08d9c3e5 refactor(server): simplify server cfgs
`server.rs` is currently littered with `cfg`s for `http1` or `http2`,
since the majority of server behaviour is only available with either one
of those feature flags active. This is hard to maintain and confusing to
read, so this commit extracts the two implementations into their own
files, since there is very little benefit in sharing code between the
two.
2022-04-08 17:02:02 -07:00
SabrinaJewson
0fec1c8737 refactor(server): move non-conn code out of conn.rs
The actual code for `Server` was previously organized very confusingly:
it was thrice layered with `SpawnAll` and `Serve` which both appeared in
conn.rs despite not having anything to do with the lower-level conn API.
This commit changes that, removing all layering and having the code for
the higher-level `Server` appear inside `server.rs` only.
2022-04-08 17:02:02 -07:00
Sean McArthur
53f15e5870 v0.14.18 2022-03-22 14:12:13 -07:00
Sean McArthur
740654e55d refactor(error): improve error message when user body ends early 2022-03-14 10:31:31 -07:00
Rémy Rakic
1e9cd4f292 docs(ffi): document nightly requirement for FFI
Update the command to use `--crate-type`.
2022-03-03 15:05:42 -08:00
Rémy Rakic
bd591f43fd chore(ci): test FFI on CI using nightly
Now that FFI is opt-in using cargo's --crate-type, nightly needs to be used
on CI: this flag is still unstable and requires a nightly to enable -Z unstable options.
2022-03-03 15:05:42 -08:00
Rémy Rakic
1c6637060e fix(ffi): don't build C libraries by default
Remove unconditional building of FFI libraries: now
that nightly supports --crate-type, it can be opted into.
This fixes cargo's pipelining both for dependencies and
for dependent crates, resulting in faster from-scratch builds.
2022-03-03 15:05:42 -08:00
Devrim Şahin
055b4e7ea6 feat(client): add HttpInfo::local_addr() method
This adds `local_addr` information from `TcpStream` to the `HttpInfo` struct

Closes #2767
2022-02-28 14:18:51 -08:00
Sean McArthur
ce2bfa9ea6 docs(conduct): add custom CODE_OF_CONDUCT 2022-02-28 12:18:12 -08:00
Stéphan Kochen
6464c0ed49 docs(upgrade): fix typo in upgrade docs (#2765) 2022-02-25 10:28:13 -08:00
Sean McArthur
75345222d7 chore(ci): increase MSRV to 1.49 2022-02-24 09:48:41 -08:00