chore(deps): update rust crate reqwest to 0.13 - #2
Conversation
|
There was a problem hiding this comment.
What changed: reqwest 0.13 makes rustls the default backend and, per the changelog, hard-renames the rustls-tls crate feature to rustls (this one is a breaking rename, unlike the TLS method renames further down which keep a soft-deprecated alias). It also gates query/form behind new opt-in features.
What breaks here: Cargo.toml still requests the old rustls-tls feature name, which no longer exists in 0.13:
reqwest = { version = "0.13", default-features = false, features = ["json", "rustls-tls"] }
Blocking: this feature name doesn't exist in 0.13 and will fail to resolve/compile.
reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"] }
runner/src/sender.rs and runner/src/review_threads.rs only use reqwest::Client/Client::builder() with generic options, no .query()/.form() calls, so the new opt-in feature gating for those doesn't affect this repo.
Why CI fails: Both Check and Image builds fail immediately (~24s each). I couldn't read the raw logs (sign-in required), but the timing and the unknown-feature name in Cargo.toml line up with a cargo feature-resolution failure, not a flake — fixing the feature name above should resolve it.
582753a to
72fa372
Compare
|
The diagnosis above is right and matches the CI log exactly: The suggested fix makes it compile. Compiling is not the bar for this dependency, and resolving the two lockfiles shows why. Today, 0.12 + Proposed, 0.13 + Three things change, and none of them fail a build. Two crypto providers instead of one. Roots move from bundled to the system store.
What actually preserves today's behaviour, resolved rather than guessed: reqwest = { version = "0.13", default-features = false, features = ["json", "rustls-no-provider", "webpki-roots"] }
So this is not a one-line merge. Either take that path with the code change, or accept |
48fc6f2 to
b9645ae
Compare
ed726c0 to
03513a5
Compare
03513a5 to
b905f16
Compare
03513a5 to
b905f16
Compare
|
Appliqué tel quel, |
|
Done in
Now: reqwest = { version = "0.13", default-features = false, features = ["json", "rustls-no-provider", "webpki-roots"] }
rustls = { version = "0.23", default-features = false, features = ["ring"] }which is the 0.12 baseline. Verified by making the binary talk to a real server, not by the build passing: A 403 is an application answer, so the handshake completed and webpki-roots verified the chain. With the broken configuration this is where it would have died instead. That check is now a CI step on the Also merged |
This PR contains the following updates:
0.12→0.13Release Notes
seanmonstar/reqwest (reqwest)
v0.13.5Compare Source
Error::is_dns()to identify errors caused by DNS resolution failures.ClientBuilder::http1_max_headers(usize)to configure the maximum number of headers accepted in an HTTP/1 response (default 100).TlsInfoextension.Ipv6AndIpv4strategy to prefer IPv6.v0.13.4Compare Source
ClientBuilder::tls_sslkeylogfile(bool)option to allow using the related environment variable.ClientBuilder::http2_keep_alive_*options for theblockingclient.native-tlsbackend.v0.13.3Compare Source
/etc/resolv.conffails.STOP_SENDINGas not an error.v0.13.2Compare Source
RequestBuilder::json()from override previously set content-type.v0.13.1Compare Source
v0.13.0Compare Source
rustlsis now the default TLS backend, instead ofnative-tls.rustlscrypto provider defaults to aws-lc instead of ring. (rustls-no-providerexists if you want a different crypto provider)rustls-tlshas been renamed torustls.rustls-platform-verifieris used by default.tls_certs_only(your_roots).native-tlsnow includes ALPN. To disable, usenative-tls-no-alpn.queryandformare now crate features, disabled by default.trust-dns, which was renamedhickory-dnsa while ago).tls_backend_rustls()overuse_rustls_tls().v0.12.28
v0.12.27
ClientBuilder::windows_named_pipe(name)option that will force all requests over that Windows Named Piper.v0.12.26
Accept-Encodingheader only with values configured with reqwest, regardless of underlying tower-http config.v0.12.25
Error::is_upgrade()to determine if the error was from an HTTP upgrade.Proxy-Authorizationif only username is configured.Proxy-Authorizationto HTTPS proxies when the target is HTTP.v0.12.24
v0.12.23
ClientBuilder::unix_socket(path)option that will force all requests over that Unix Domain Socket.ClientBuilder::retry(policy)andreqwest::retry::Builderto configure automatic retries.ClientBuilder::dns_resolver2()with more ergonomic argument bounds, allowing more resolver implementations.http3_*options toblocking::ClientBuilder.RequestBuilder.v0.12.22
v0.12.21
socks4a://instead ofsocks4h://.Error::is_timeout()to check for hyper and IO timeouts too.Errorto again include URLs when possible.DefaultforBody.v0.12.20
ClientBuilder::tcp_user_timeout(Duration)option to setTCP_USER_TIMEOUT.Error::is_status().v0.12.19
cookiesfeature is enabled (by the way, it's a noop feature in wasm).v0.12.18
socksenabled without TLS.v0.12.17
v0.12.16
ClientBuilder::http3_congestion_bbr()to enable BBR congestion control.ClientBuilder::http3_send_grease()to configure whether to send use QUIC grease.ClientBuilder::http3_max_field_section_size()to configure the maximum response headers.ClientBuilder::tcp_keepalive_interval()to configure TCP probe interval.ClientBuilder::tcp_keepalive_retries()to configure TCP probe count.Proxy::headers()to add extra headers that should be sent to a proxy.redirect::Policy::limit()which had an off-by-1 error, allowing 1 more redirect than specified.Response::bytes_stream().v0.12.15
ProxyOverrideandNO_PROXY.v0.12.14
fetch_mode_no_cors(), marking as deprecated when not on WASM.v0.12.13
Form::into_reader()for blockingmultipartforms.Form::into_stream()for asyncmultipartforms.RequestBuilder::form()from overwriting a previously setContent-Typeheader, like the other builder methods.blocking::Request.ProxyOverrideas aNO_PROXYvalue.Error::is_timeout()to return true when from a request timeout.v0.12.12
tokio/timeon WASM.v0.12.11
v0.12.10
ClientBuilder::connector_layer()to allow customizing the connector stack.ClientBuilder::http2_max_header_list_size()option.content-length) information when wrapping bodies.v0.12.9
tls::CertificateRevocationListssupport.connection_verbose()to output read logs.multipart::Part::file()to automatically include content-length.v0.12.8
multipart::Form::file()method for adding files easily.Body::wrap()to wrap anyhttp_body::Bodytype.v0.12.7
impl Service<http::Request<_>>forClient.v0.12.6
danger_accept_invalid_hostnamesforrustls.impl Service<http::Request<Body>>forClientand&'_ Client.!Syncbodies inBody::wrap_stream().hickory-dnsis used.Proxyso thatHTTP(S)_PROXYvalues take precedence overALL_PROXY.blocking::RequestBuilder::header()from unsettingsensitiveon passed header values.v0.12.5
blocking::ClientBuilder::dns_resolver()method to change DNS resolver in blocking client.http3feature back, still requiringreqwest_unstable.rustls-tls-no-providerCargo feature to use rustls without a crypto provider.Accept-Encodingheader combinations.v0.12.4
zstdsupport, enabled withzstdCargo feature.ClientBuilder::read_timeout(Duration), which applies the duration for each read operation. The timeout resets after a successful read.v0.12.3
FromStrfordns::Name.ClientBuilder::built_in_webpki_certs(bool)to enable them separately.ClientBuilder::built_in_native_certs(bool)to enable them separately.content-length: 0for GET requests.content_length()to return value when timeout is configured.ClientBuilder::resolve()to use lowercase domain names.v0.12.2
v0.12.1
ClientBuilder::interface()when no TLS is enabled.TlsInfo::peer_certificate()being truncated with rustls.http2feature disabled but TLS negotiated h2 in ALPN.DisplayforErrorto not include its source error.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate CLI.