Skip to content

Commit 024d12e

Browse files
committed
Finish upgrading axum/hyper
1 parent e1092d3 commit 024d12e

File tree

29 files changed

+464
-289
lines changed

29 files changed

+464
-289
lines changed

Cargo.lock

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

Cargo.toml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,13 @@ assert_matches = "1.5"
7878
async-compat = "0.2.1"
7979
async-log = "2.0"
8080
async-trait = "0.1"
81-
async-tungstenite = { version = "0.23", features = [
81+
async-tungstenite = { version = "0.28", features = [
8282
"tokio-runtime",
8383
"tokio-rustls-native-certs",
8484
] }
8585
axum = "0.8.1"
86-
axum-server = { version = "0.5.1", features = ["tls-rustls"] }
86+
axum-extra = "0.10.0"
87+
axum-server = { version = "0.7.1", features = ["tls-rustls"] }
8788
backoff = { version = "0.4", features = ["tokio"] }
8889
base64 = "0.13"
8990
bytes = "1.4"
@@ -111,19 +112,20 @@ futures-timer = "3.0"
111112
futures-util = "0.3.25"
112113
glob = "0.3"
113114
heck = "0.4.1"
114-
http = "0.2"
115-
http-body = "0.4"
115+
http = "1.2"
116+
http-body = "1.0.0"
117+
http-body-util = "0.1.2"
116118
httparse = "1.9.3"
117119
humantime = "2.1.0"
118-
hyper = { version = "0.14", default-features = false }
119-
hyper-util = { version = "0.1" }
120+
hyper = { version = "1.5", default-features = false }
120121
hyper-rustls = { version = "0.27.5", default-features = false, features = [
121-
"tokio-runtime",
122+
"native-tokio",
122123
"tls12",
123124
"rustls-native-certs",
124125
"http1",
125126
"http2",
126127
] }
128+
hyper-util = { version = "0.1" }
127129
itertools = "0.13"
128130
lazy_static = "1.4"
129131
log = "0.4"
@@ -155,9 +157,9 @@ regex = "1.4"
155157
reqwest = { version = "0.12", default-features = false }
156158
rpassword = "5.0"
157159
rstest = "0.16.0"
158-
rumqttc = { git = "https://github.com/bytebeamio/rumqtt", ref = "49c3b5f81360299c316b052778905a7420bea579" }
160+
rumqttc = { git = "https://github.com/bytebeamio/rumqtt", rev = "49c3b5f81360299c316b052778905a7420bea579" }
159161
rumqttd = "0.19"
160-
rustls = "0.23"
162+
rustls = { version = "0.23", default-features = false }
161163
rustls-native-certs = "0.6.3"
162164
rustls-pemfile = "2.2"
163165
serde = "1.0"
@@ -178,20 +180,20 @@ thiserror = "1.0"
178180
time = "0.3"
179181
tokio = { version = "1.37", default-features = false }
180182
tokio-rustls = "0.26.1"
181-
tokio-tungstenite = { version = "0.20.0" }
183+
tokio-tungstenite = { version = "0.26.1" }
182184
tokio-util = { version = "0.7", features = ["codec"] }
183185
toml = "0.8"
184186
tower = "0.4"
185187
tracing = { version = "0.1", features = ["attributes", "log"] }
186188
tracing-subscriber = { version = "0.3", features = ["time", "env-filter"] }
187189
try-traits = "0.1"
188-
tungstenite = "0.20"
190+
tungstenite = "0.26.1"
189191
url = "2.3"
190192
uzers = "0.11"
191193
walkdir = "2"
192194
which = "4.2"
193195
whoami = "1.5.0"
194-
ws_stream_tungstenite = "0.11"
196+
ws_stream_tungstenite = "0.14"
195197
x509-parser = "0.16"
196198
yansi = "1.0.1"
197199
zeroize = "1.5"

crates/common/axum_tls/Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@ axum-server = { workspace = true }
2121
camino = { workspace = true }
2222
futures = { workspace = true }
2323
hyper = { workspace = true }
24+
hyper-util = { workspace = true, features = [
25+
"client",
26+
"client-legacy",
27+
], optional = true }
2428
pin-project = { workspace = true }
25-
hyper-util = { workspace = true, features = ["client", "client-legacy"], optional = true }
2629
reqwest = { workspace = true, features = [
2730
"rustls-tls-native-roots",
2831
], optional = true }

crates/common/axum_tls/src/acceptor.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ where
8787
} else {
8888
let (stream, service) = acceptor.accept(stream, service).await?;
8989
let server_conn = stream.get_ref().1;
90-
let cert = (|| {
91-
X509Certificate::from_der(&server_conn.peer_certificates()?.first()?).ok()
92-
})();
90+
let cert =
91+
(|| X509Certificate::from_der(server_conn.peer_certificates()?.first()?).ok())(
92+
);
9393
let certificate_info = TlsData {
9494
common_name: common_name(cert.as_ref()).map(Arc::from),
9595
is_secure: true,
@@ -117,7 +117,6 @@ mod tests {
117117
use reqwest::Certificate;
118118
use reqwest::Client;
119119
use reqwest::Identity;
120-
use rustls::crypto::CryptoProvider;
121120
use rustls::pki_types::pem::PemObject as _;
122121
use rustls::pki_types::CertificateDer;
123122
use rustls::pki_types::PrivateKeyDer;
@@ -173,9 +172,12 @@ mod tests {
173172

174173
#[tokio::test]
175174
async fn acceptor_rejects_untrusted_client_certificates() {
176-
let permitted_certificate = rcgen::generate_simple_self_signed(vec!["not-my-client".into()]).unwrap();
175+
let permitted_certificate =
176+
rcgen::generate_simple_self_signed(vec!["not-my-client".into()]).unwrap();
177177
let mut roots = RootCertStore::empty();
178-
roots.add(permitted_certificate.serialize_der().unwrap().into()).unwrap();
178+
roots
179+
.add(permitted_certificate.serialize_der().unwrap().into())
180+
.unwrap();
179181
let server = Server::with_trusted_roots(roots);
180182
let client = Client::builder()
181183
.add_root_certificate(server.certificate.clone())
@@ -257,7 +259,6 @@ mod tests {
257259
}
258260

259261
fn start(trusted_roots: Option<RootCertStore>) -> Self {
260-
let _ = CryptoProvider::install_default(rustls::crypto::ring::default_provider());
261262
let mut port = 3000;
262263
let listener = loop {
263264
if let Ok(listener) = TcpListener::bind::<SocketAddr>(([127, 0, 0, 1], port).into())

crates/common/axum_tls/src/files.rs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -220,17 +220,10 @@ mod tests {
220220
}
221221

222222
mod server_accepts {
223-
use rustls::crypto::CryptoProvider;
224-
225223
use super::*;
226224

227-
fn init_crypto() {
228-
let _ = CryptoProvider::install_default(rustls::crypto::ring::default_provider());
229-
}
230-
231225
#[tokio::test]
232226
async fn alg_ed25519_pkcs8() {
233-
init_crypto();
234227
let key = test_data("ed25519.key");
235228
let cert = test_data("ed25519.crt");
236229

@@ -242,7 +235,6 @@ mod tests {
242235

243236
#[tokio::test]
244237
async fn alg_ec() {
245-
init_crypto();
246238
let key = test_data("ec.key");
247239
let cert = test_data("ec.crt");
248240

@@ -254,7 +246,6 @@ mod tests {
254246

255247
#[tokio::test]
256248
async fn alg_ec_pkcs8() {
257-
init_crypto();
258249
let key = test_data("ec.pkcs8.key");
259250
let cert = test_data("ec.crt");
260251

@@ -266,7 +257,6 @@ mod tests {
266257

267258
#[tokio::test]
268259
async fn alg_rsa_pkcs8() {
269-
init_crypto();
270260
let key = test_data("rsa.pkcs8.key");
271261
let cert = test_data("rsa.crt");
272262

@@ -278,7 +268,6 @@ mod tests {
278268

279269
#[tokio::test]
280270
async fn alg_rsa_pkcs1() {
281-
init_crypto();
282271
let key = test_data("rsa.pkcs1.key");
283272
let cert = test_data("rsa.crt");
284273

@@ -310,7 +299,7 @@ mod tests {
310299
.context("reading certs")?;
311300
let key_der = parse_key_to_der(key)?;
312301
let cert = reqwest::tls::Certificate::from_der(
313-
&*chain.first().expect("chain should contain certificate"),
302+
chain.first().expect("chain should contain certificate"),
314303
)
315304
.context("converting certificate to reqwest::tls::Certificate")?;
316305
let config = ssl_config(chain, key_der, None)?;

crates/common/certificate/src/parse_root_certificate.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ pub fn read_cert_chain(
182182
})?;
183183
let mut cert_reader = BufReader::new(f);
184184
certs(&mut cert_reader)
185-
.map(|der_chain| Ok(CertificateDer::from(der_chain?)))
186185
.collect::<Result<Vec<_>, _>>()
187186
.map_err(|e| CertificateError::CertificateParseFailed {
188187
path: cert_file.as_ref().to_path_buf(),

crates/common/upload/src/upload.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -283,13 +283,13 @@ impl Uploader {
283283
#[cfg(test)]
284284
mod tests {
285285
use super::*;
286-
use axum::extract::BodyStream;
287286
use axum::http::StatusCode;
288287
use axum::routing::put;
289288
use axum::Router;
290289
use backoff::ExponentialBackoffBuilder;
291290
use futures::future::pending;
292291
use futures::stream::StreamExt;
292+
use std::future::IntoFuture as _;
293293
use std::sync::atomic::AtomicBool;
294294
use std::sync::atomic::Ordering;
295295
use std::sync::Arc;
@@ -450,7 +450,7 @@ mod tests {
450450

451451
let app = Router::new().route(
452452
"/target.txt",
453-
put(|mut body: BodyStream| async move {
453+
put(|body: axum::body::Body| async move {
454454
let res = async {
455455
if is_first_attempt.fetch_and(false, Ordering::SeqCst) {
456456
Ok(StatusCode::INTERNAL_SERVER_ERROR)
@@ -460,7 +460,8 @@ mod tests {
460460
.await
461461
.context("creating file")?,
462462
);
463-
while let Some(chunk) = body.next().await {
463+
let mut body_stream = body.into_data_stream();
464+
while let Some(chunk) = body_stream.next().await {
464465
file.write_all(&chunk.context("receiving chunk")?)
465466
.await
466467
.context("writing chunk")?;
@@ -484,11 +485,7 @@ mod tests {
484485
}),
485486
);
486487

487-
let server_task = tokio::spawn(
488-
axum::Server::from_tcp(listener.into_std().unwrap())
489-
.unwrap()
490-
.serve(app.into_make_service()),
491-
);
488+
let server_task = tokio::spawn(axum::serve(listener, app).into_future());
492489

493490
tokio::time::sleep(Duration::from_millis(50)).await;
494491

crates/core/tedge/src/cli/connect/command.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ fn check_device_status_c8y(
585585

586586
mqtt_options.set_keep_alive(RESPONSE_TIMEOUT);
587587

588-
let (mut client, mut connection) = rumqttc::Client::new(mqtt_options, 10);
588+
let (client, mut connection) = rumqttc::Client::new(mqtt_options, 10);
589589
connection
590590
.eventloop
591591
.network_options
@@ -705,7 +705,7 @@ fn check_device_status_azure(
705705

706706
mqtt_options.set_keep_alive(RESPONSE_TIMEOUT);
707707

708-
let (mut client, mut connection) = rumqttc::Client::new(mqtt_options, 10);
708+
let (client, mut connection) = rumqttc::Client::new(mqtt_options, 10);
709709
let mut acknowledged = false;
710710

711711
if tedge_config.mqtt.bridge.built_in {
@@ -810,7 +810,7 @@ fn check_device_status_aws(
810810
.rumqttc_options()?;
811811
mqtt_options.set_keep_alive(RESPONSE_TIMEOUT);
812812

813-
let (mut client, mut connection) = rumqttc::Client::new(mqtt_options, 10);
813+
let (client, mut connection) = rumqttc::Client::new(mqtt_options, 10);
814814
let mut acknowledged = false;
815815

816816
if tedge_config.mqtt.bridge.built_in {

crates/core/tedge/src/cli/connect/jwt_token.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub(crate) fn get_connected_c8y_url(
2525
.rumqttc_options()?;
2626
mqtt_options.set_keep_alive(RESPONSE_TIMEOUT);
2727

28-
let (mut client, mut connection) = rumqttc::Client::new(mqtt_options, 10);
28+
let (client, mut connection) = rumqttc::Client::new(mqtt_options, 10);
2929
connection
3030
.eventloop
3131
.network_options

crates/core/tedge/src/cli/mqtt/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ fn disconnect_if_interrupted(client: Client) -> Arc<AtomicBool> {
2222
unsafe {
2323
let _ = signal_hook::low_level::register(*signal, move || {
2424
interrupted.store(true, Ordering::Relaxed);
25-
let mut client = interrupter.lock().unwrap();
25+
let client = interrupter.lock().unwrap();
2626
let _ = client.disconnect();
2727
});
2828
}

0 commit comments

Comments
 (0)