Skip to content

Commit 2f4e4aa

Browse files
bartlomiejuzebreus
authored andcommitted
Revert "chore: upgrade to reqwest 0.12.4 and rustls 0.22 (denoland#24056)" (denoland#24262)
This reverts commit fb31eaa. Reverting because users reported spurious errors when downloading dependencies - denoland#24260. Closes denoland#24260
1 parent f9dfa35 commit 2f4e4aa

35 files changed

+651
-391
lines changed

Cargo.lock

Lines changed: 66 additions & 101 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ deno_terminal = "0.1.1"
5555
napi_sym = { version = "0.87.0", path = "./cli/napi/sym" }
5656
test_util = { package = "test_server", path = "./tests/util/server" }
5757

58-
denokv_proto = "0.8.1"
59-
denokv_remote = "0.8.1"
58+
denokv_proto = "0.7.0"
59+
denokv_remote = "0.7.0"
6060
# denokv_sqlite brings in bundled sqlite if we don't disable the default features
61-
denokv_sqlite = { default-features = false, version = "0.8.1" }
61+
denokv_sqlite = { default-features = false, version = "0.7.0" }
6262

6363
# exts
6464
deno_broadcast_channel = { version = "0.151.0", path = "./ext/broadcast_channel" }
@@ -117,8 +117,8 @@ http = "1.0"
117117
http-body-util = "0.1"
118118
http_v02 = { package = "http", version = "0.2.9" }
119119
httparse = "1.8.0"
120-
hyper = { version = "=1.3.1", features = ["full"] }
121-
hyper-util = { version = "=0.1.5", features = ["tokio", "server", "server-auto"] }
120+
hyper = { version = "=1.1.0", features = ["full"] }
121+
hyper-util = { version = "=0.1.2", features = ["tokio", "server", "server-auto"] }
122122
hyper_v014 = { package = "hyper", version = "0.14.26", features = ["runtime", "http1"] }
123123
indexmap = { version = "2", features = ["serde"] }
124124
jsonc-parser = { version = "=0.23.0", features = ["serde"] }
@@ -145,13 +145,14 @@ prost = "0.11"
145145
prost-build = "0.11"
146146
rand = "=0.8.5"
147147
regex = "^1.7.0"
148-
reqwest = { version = "=0.12.4", default-features = false, features = ["rustls-tls", "stream", "gzip", "brotli", "socks", "json", "http2"] } # pinned because of https://github.com/seanmonstar/reqwest/pull/1955
148+
reqwest = { version = "=0.11.20", default-features = false, features = ["rustls-tls", "stream", "gzip", "brotli", "socks", "json"] } # pinned because of https://github.com/seanmonstar/reqwest/pull/1955
149149
ring = "^0.17.0"
150150
rusqlite = { version = "=0.29.0", features = ["unlock_notify", "bundled"] }
151-
rustls = "0.22.4"
152-
rustls-pemfile = "2"
153-
rustls-tokio-stream = "=0.2.23"
154-
rustls-webpki = "0.102"
151+
# pinned because it was causing issues on cargo publish
152+
rustls = "=0.21.11"
153+
rustls-pemfile = "1.0.0"
154+
rustls-tokio-stream = "=0.2.24"
155+
rustls-webpki = "0.101.4"
155156
rustyline = "=13.0.0"
156157
saffron = "=0.1.0"
157158
scopeguard = "1.2.0"
@@ -177,7 +178,7 @@ twox-hash = "=1.6.3"
177178
# Upgrading past 2.4.1 may cause WPT failures
178179
url = { version = "< 2.5.0", features = ["serde", "expose_internals"] }
179180
uuid = { version = "1.3.0", features = ["v4"] }
180-
webpki-roots = "0.26"
181+
webpki-roots = "0.25.2"
181182
zeromq = { version = "=0.3.4", default-features = false, features = ["tcp-transport", "tokio-runtime"] }
182183
zstd = "=0.12.4"
183184

cli/args/mod.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -696,13 +696,21 @@ pub fn get_root_cert_store(
696696
for store in ca_stores.iter() {
697697
match store.as_str() {
698698
"mozilla" => {
699-
root_cert_store.extend(webpki_roots::TLS_SERVER_ROOTS.to_vec());
699+
root_cert_store.add_trust_anchors(
700+
webpki_roots::TLS_SERVER_ROOTS.iter().map(|ta| {
701+
rustls::OwnedTrustAnchor::from_subject_spki_name_constraints(
702+
ta.subject,
703+
ta.spki,
704+
ta.name_constraints,
705+
)
706+
}),
707+
);
700708
}
701709
"system" => {
702710
let roots = load_native_certs().expect("could not load platform certs");
703711
for root in roots {
704712
root_cert_store
705-
.add(rustls::pki_types::CertificateDer::from(root.0))
713+
.add(&rustls::Certificate(root.0))
706714
.expect("Failed to add platform cert to root cert store");
707715
}
708716
}
@@ -726,17 +734,17 @@ pub fn get_root_cert_store(
726734
RootCertStoreLoadError::CaFileOpenError(err.to_string())
727735
})?;
728736
let mut reader = BufReader::new(certfile);
729-
rustls_pemfile::certs(&mut reader).collect::<Result<Vec<_>, _>>()
737+
rustls_pemfile::certs(&mut reader)
730738
}
731739
CaData::Bytes(data) => {
732740
let mut reader = BufReader::new(Cursor::new(data));
733-
rustls_pemfile::certs(&mut reader).collect::<Result<Vec<_>, _>>()
741+
rustls_pemfile::certs(&mut reader)
734742
}
735743
};
736744

737745
match result {
738746
Ok(certs) => {
739-
root_cert_store.add_parsable_certificates(certs);
747+
root_cert_store.add_parsable_certificates(&certs);
740748
}
741749
Err(e) => {
742750
return Err(RootCertStoreLoadError::FailedAddPemFile(e.to_string()));

cli/http_util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ mod test {
587587
use std::collections::HashSet;
588588
use std::hash::RandomState;
589589

590-
use deno_runtime::deno_tls::rustls::RootCertStore;
590+
use deno_runtime::deno_tls::RootCertStore;
591591

592592
use crate::version;
593593

ext/fetch/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ deno_core.workspace = true
2020
deno_permissions.workspace = true
2121
deno_tls.workspace = true
2222
dyn-clone = "1"
23-
http.workspace = true
23+
http_v02.workspace = true
2424
reqwest.workspace = true
2525
serde.workspace = true
2626
serde_json.workspace = true

ext/fetch/fs_fetch_handler.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ impl FetchHandler for FsFetchHandler {
3131
let file = tokio::fs::File::open(path).map_err(|_| ()).await?;
3232
let stream = ReaderStream::new(file);
3333
let body = reqwest::Body::wrap_stream(stream);
34-
let response = http::Response::builder()
34+
let response = http_v02::Response::builder()
3535
.status(StatusCode::OK)
3636
.body(body)
3737
.map_err(|_| ())?

ext/fetch/lib.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ use data_url::DataUrl;
4747
use deno_tls::TlsKey;
4848
use deno_tls::TlsKeys;
4949
use deno_tls::TlsKeysHolder;
50-
use http::header::CONTENT_LENGTH;
51-
use http::Uri;
50+
use http_v02::header::CONTENT_LENGTH;
51+
use http_v02::Uri;
5252
use reqwest::header::HeaderMap;
5353
use reqwest::header::HeaderName;
5454
use reqwest::header::HeaderValue;
@@ -449,9 +449,12 @@ where
449449
.decode_to_vec()
450450
.map_err(|e| type_error(format!("{e:?}")))?;
451451

452-
let response = http::Response::builder()
453-
.status(http::StatusCode::OK)
454-
.header(http::header::CONTENT_TYPE, data_url.mime_type().to_string())
452+
let response = http_v02::Response::builder()
453+
.status(http_v02::StatusCode::OK)
454+
.header(
455+
http_v02::header::CONTENT_TYPE,
456+
data_url.mime_type().to_string(),
457+
)
455458
.body(reqwest::Body::from(body))?;
456459

457460
let fut = async move { Ok(Ok(Response::from(response))) };

ext/kv/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ path = "lib.rs"
1717
anyhow.workspace = true
1818
async-trait.workspace = true
1919
base64.workspace = true
20-
bytes.workspace = true
2120
chrono = { workspace = true, features = ["now"] }
2221
deno_core.workspace = true
2322
deno_fetch.workspace = true
@@ -28,7 +27,6 @@ denokv_proto.workspace = true
2827
denokv_remote.workspace = true
2928
denokv_sqlite.workspace = true
3029
faster-hex.workspace = true
31-
http.workspace = true
3230
log.workspace = true
3331
num-bigint.workspace = true
3432
prost.workspace = true

ext/kv/remote.rs

Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,17 @@ use std::sync::Arc;
88
use crate::DatabaseHandler;
99
use anyhow::Context;
1010
use async_trait::async_trait;
11-
use bytes::Bytes;
1211
use deno_core::error::type_error;
1312
use deno_core::error::AnyError;
14-
use deno_core::futures::Stream;
15-
use deno_core::futures::TryStreamExt as _;
1613
use deno_core::OpState;
1714
use deno_fetch::create_http_client;
18-
use deno_fetch::reqwest;
1915
use deno_fetch::CreateHttpClientOptions;
2016
use deno_tls::rustls::RootCertStore;
2117
use deno_tls::Proxy;
2218
use deno_tls::RootCertStoreProvider;
2319
use deno_tls::TlsKeys;
2420
use denokv_remote::MetadataEndpoint;
2521
use denokv_remote::Remote;
26-
use denokv_remote::RemoteResponse;
27-
use denokv_remote::RemoteTransport;
2822
use url::Url;
2923

3024
#[derive(Clone)]
@@ -108,44 +102,11 @@ impl<P: RemoteDbHandlerPermissions + 'static> denokv_remote::RemotePermissions
108102
}
109103
}
110104

111-
#[derive(Clone)]
112-
pub struct ReqwestClient(reqwest::Client);
113-
pub struct ReqwestResponse(reqwest::Response);
114-
115-
impl RemoteTransport for ReqwestClient {
116-
type Response = ReqwestResponse;
117-
async fn post(
118-
&self,
119-
url: Url,
120-
headers: http::HeaderMap,
121-
body: Bytes,
122-
) -> Result<(Url, http::StatusCode, Self::Response), anyhow::Error> {
123-
let res = self.0.post(url).headers(headers).body(body).send().await?;
124-
let url = res.url().clone();
125-
let status = res.status();
126-
Ok((url, status, ReqwestResponse(res)))
127-
}
128-
}
129-
130-
impl RemoteResponse for ReqwestResponse {
131-
async fn bytes(self) -> Result<Bytes, anyhow::Error> {
132-
Ok(self.0.bytes().await?)
133-
}
134-
fn stream(
135-
self,
136-
) -> impl Stream<Item = Result<Bytes, anyhow::Error>> + Send + Sync {
137-
self.0.bytes_stream().map_err(|e| e.into())
138-
}
139-
async fn text(self) -> Result<String, anyhow::Error> {
140-
Ok(self.0.text().await?)
141-
}
142-
}
143-
144105
#[async_trait(?Send)]
145106
impl<P: RemoteDbHandlerPermissions + 'static> DatabaseHandler
146107
for RemoteDbHandler<P>
147108
{
148-
type DB = Remote<PermissionChecker<P>, ReqwestClient>;
109+
type DB = Remote<PermissionChecker<P>>;
149110

150111
async fn open(
151112
&self,
@@ -201,14 +162,13 @@ impl<P: RemoteDbHandlerPermissions + 'static> DatabaseHandler
201162
http2: true,
202163
},
203164
)?;
204-
let reqwest_client = ReqwestClient(client);
205165

206166
let permissions = PermissionChecker {
207167
state: state.clone(),
208168
_permissions: PhantomData,
209169
};
210170

211-
let remote = Remote::new(reqwest_client, permissions, metadata_endpoint);
171+
let remote = Remote::new(client, permissions, metadata_endpoint);
212172

213173
Ok(remote)
214174
}

ext/net/ops_tls.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ use deno_tls::create_client_config;
3131
use deno_tls::load_certs;
3232
use deno_tls::load_private_keys;
3333
use deno_tls::new_resolver;
34-
use deno_tls::rustls::pki_types::ServerName;
34+
use deno_tls::rustls::Certificate;
3535
use deno_tls::rustls::ClientConnection;
36+
use deno_tls::rustls::PrivateKey;
3637
use deno_tls::rustls::ServerConfig;
37-
use deno_tls::webpki::types::CertificateDer;
38-
use deno_tls::webpki::types::PrivateKeyDer;
38+
use deno_tls::rustls::ServerName;
3939
use deno_tls::ServerConfigProvider;
4040
use deno_tls::SocketUse;
4141
use deno_tls::TlsKey;
@@ -48,6 +48,7 @@ use serde::Deserialize;
4848
use std::borrow::Cow;
4949
use std::cell::RefCell;
5050
use std::convert::From;
51+
use std::convert::TryFrom;
5152
use std::fs::File;
5253
use std::io::BufReader;
5354
use std::io::ErrorKind;
@@ -303,14 +304,14 @@ where
303304
{
304305
let rid = args.rid;
305306
let hostname = match &*args.hostname {
306-
"" => "localhost".to_string(),
307-
n => n.to_string(),
307+
"" => "localhost",
308+
n => n,
308309
};
309310

310311
{
311312
let mut s = state.borrow_mut();
312313
let permissions = s.borrow_mut::<NP>();
313-
permissions.check_net(&(&hostname, Some(0)), "Deno.startTls()")?;
314+
permissions.check_net(&(hostname, Some(0)), "Deno.startTls()")?;
314315
}
315316

316317
let ca_certs = args
@@ -319,8 +320,8 @@ where
319320
.map(|s| s.into_bytes())
320321
.collect::<Vec<_>>();
321322

322-
let hostname_dns = ServerName::try_from(hostname.to_string())
323-
.map_err(|_| invalid_hostname(&hostname))?;
323+
let hostname_dns =
324+
ServerName::try_from(hostname).map_err(|_| invalid_hostname(hostname))?;
324325

325326
let unsafely_ignore_certificate_errors = state
326327
.borrow()
@@ -421,9 +422,9 @@ where
421422
.borrow::<DefaultTlsOptions>()
422423
.root_cert_store()?;
423424
let hostname_dns = if let Some(server_name) = args.server_name {
424-
ServerName::try_from(server_name)
425+
ServerName::try_from(server_name.as_str())
425426
} else {
426-
ServerName::try_from(addr.hostname.clone())
427+
ServerName::try_from(&*addr.hostname)
427428
}
428429
.map_err(|_| invalid_hostname(&addr.hostname))?;
429430
let connect_addr = resolve_addr(&addr.hostname, addr.port)
@@ -465,17 +466,15 @@ where
465466
Ok((rid, IpAddr::from(local_addr), IpAddr::from(remote_addr)))
466467
}
467468

468-
fn load_certs_from_file(
469-
path: &str,
470-
) -> Result<Vec<CertificateDer<'static>>, AnyError> {
469+
fn load_certs_from_file(path: &str) -> Result<Vec<Certificate>, AnyError> {
471470
let cert_file = File::open(path)?;
472471
let reader = &mut BufReader::new(cert_file);
473472
load_certs(reader)
474473
}
475474

476475
fn load_private_keys_from_file(
477476
path: &str,
478-
) -> Result<Vec<PrivateKeyDer<'static>>, AnyError> {
477+
) -> Result<Vec<PrivateKey>, AnyError> {
479478
let key_bytes = std::fs::read(path)?;
480479
load_private_keys(&key_bytes)
481480
}
@@ -524,6 +523,7 @@ where
524523
TlsKeys::Null => Err(anyhow!("Deno.listenTls requires a key")),
525524
TlsKeys::Static(TlsKey(cert, key)) => {
526525
let mut tls_config = ServerConfig::builder()
526+
.with_safe_defaults()
527527
.with_no_client_auth()
528528
.with_single_cert(cert, key)
529529
.map_err(|e| anyhow!(e))?;

0 commit comments

Comments
 (0)