New Features
reqwest
as blocking HTTP backend viahttp-client-reqwest
feature toggle.
Note that despite passing the same tests thatcurl
passes, for
bulletproof HTTP connections to untrusted servers, thecurl
backend
should be preferred.reqwest
is known to hang ifcontent-length:
HTTP headers are longer than the actual content, and no timeout is
kicking in to stop the hanging.curl
has no trouble with this for
example.- Add
client::http::Transport::new_http()
constructor.
This goes along withclient::http::connect_http()
to support
connections to via custom transports which are passed from calling
crates, without relying on the implementation to be built-in. - Allow defaulting
client::Capabilities
.
This can be useful in conjunction withstd::mem::take()
, even
though an empty data structure like that doesn't bear any significance
beyond that.
Bug Fixes
-
set the protocol version for local git transports as well.
Previously this was only done for ssh based connections, and requires
setting an environment variable. -
remove
Drop
forSpawnProcessOnDemand
.
It is well-intended but is likely to hang the calling process
if for any reason not all process output was consumed.Even though not waiting for the process leaves it running, it will
stop naturally once its output pipe breaks once once
our handles for it are inevitable dropped at the same time. -
compare 'Content-Type' header case-insensitively, as required by the http spec.
Other
- try to make the transport configurable after being boxed, but…
…that would force it to be 'static, which is something we excplicitly
cannot have. We need references to be contained within, if I remember
correctly.
Changed (BREAKING)
client::http::connect()
returnsTransport<Impl>
directly.
It' can't fail, so no need to returnResult<_, Infallible>
.
New Features (BREAKING)
- add
fetch::Transport::configure
to generically configure any transport.
Commit Statistics
- 42 commits contributed to the release over the course of 20 calendar days.
- 20 days passed between releases.
- 9 commits were understood as conventional.
- 1 unique issue was worked on: #450
Commit Details
view details
- #450
- set the protocol version for local git transports as well. (41b0c19)
- remove
Drop
forSpawnProcessOnDemand
. (6d8b66a) - Allow defaulting
client::Capabilities
. (e05c1fe) - Use
&dyn Any
instead of unspecified serialization format, as it's the right way. (779eefe) - add
fetch::Transport::configure
to generically configure any transport. (78ad3df) client::http::connect()
returnsTransport<Impl>
directly. (1cf66c4)- Revert "FAIL: try to make the transport configurable after being boxed, but…" (fbb96e4)
- try to make the transport configurable after being boxed, but… (5bef0a0)
- Uncategorized
- prepare changelogs for release (d232567)
- Merge branch 'fix-smart-release' (aa80b60)
- make fmt (7b9c065)
reqwest
as blocking HTTP backend viahttp-client-reqwest
feature toggle. (8e17534)- re-enable last remaining test for reqwest (9ef6a54)
- Merge branch 'main' into new-http-impl (702a161)
- and another previously hanging test works - content-length is critical (0b0ba03)
- clone_v1 now works in reqwest, because… (63d5a01)
- make fmt (53acf25)
- Merge branch 'fetch-pack' (f47c891)
- Merge branch 'fetch-pack' (3c49400)
- Merge branch 'main' into fetch-pack (93917cb)
- Shutdown the stream of the mock server for good measure (4e415a8)
- minor fix to test, but now it hangs. 3 hanging to go… (164f5d3)
- one more test works - strangely enough this one doesn't hang. (c3150dd)
- adjust test expectations to pass one part, but now it hangs like clone_v1 (4b731ad)
- refactor (569c6f2)
- send error on non-success status codes (7ccd4ff)
- disable all tests failing under reqwest (except for 1); minor fixes to get it to work (ee4eb69)
- Properly integrate reqwest to allow testing (even though none of them works yet) (250114a)
- revise drop of header writer to prevent remote hang (2981c4d)
- revise error handling; better docs to explain the 'protocol' (fd9634d)
- in theory, that's what's needed for reqwest to work in blocking mode… (ce62f5d)
- even more safety when dealing with the remote's error state (b63d69b)
- rethink error handling during request creation, completing it (1fb0545)
- frame for filling in the reqwest implementation (943fd15)
- Add 'http-client-reqwest' feature toggle (2c9b63c)
- compare 'Content-Type' header case-insensitively, as required by the http spec. (237682a)
- Merge branch 'paulyoung/git-transport-http-client' (c845c16)
- Add
client::http::Transport::new_http()
constructor. (0fd57c6) - Introduce http-client feature to decouple from curl (31aa2c9)
- Make Content-Type header check case-insensitive (7aa8ab8)
- Merge branch 'fix-git-features' (82fd251)
- Merge branch 'diff' (25a7726)