Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
httpd: Update axum and hyper dependency
Sebastian Martinez committed 2 years ago
commit bdcaa6047441d6a7652a1929b27909c16eb86ba6
parent d9a84de5eeea8b2e49ddb7178f0e82ff877ad558
5 files changed +162 -105
modified Cargo.lock
@@ -203,9 +203,9 @@ checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16"

[[package]]
name = "async-trait"
-
version = "0.1.71"
+
version = "0.1.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf"
+
checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
dependencies = [
 "proc-macro2",
 "quote",
@@ -220,19 +220,19 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"

[[package]]
name = "axum"
-
version = "0.6.20"
+
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
+
checksum = "202651474fe73c62d9e0a56c6133f7a0ff1dc1c8cf7a5b03381af2a26553ac9d"
dependencies = [
 "async-trait",
 "axum-core",
-
 "bitflags 1.3.2",
 "bytes",
 "futures-util",
-
 "headers",
-
 "http",
-
 "http-body",
-
 "hyper",
+
 "http 1.0.0",
+
 "http-body 1.0.0",
+
 "http-body-util",
+
 "hyper 1.0.1",
+
 "hyper-util",
 "itoa",
 "matchit",
 "memchr",
@@ -253,29 +253,32 @@ dependencies = [

[[package]]
name = "axum-auth"
-
version = "0.4.0"
+
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "620b37645b77baab8160f93421568d7b3dd25da0a160fab38eb1c4ef611f6d98"
+
checksum = "8169113a185f54f68614fcfc3581df585d30bf8542bcb99496990e1025e4120a"
dependencies = [
 "async-trait",
 "axum-core",
-
 "base64 0.13.1",
-
 "http",
+
 "base64 0.21.3",
+
 "http 1.0.0",
]

[[package]]
name = "axum-core"
-
version = "0.3.4"
+
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
+
checksum = "77cb22c689c44d4c07b0ab44ebc25d69d8ae601a2f28fb8d672d344178fa17aa"
dependencies = [
 "async-trait",
 "bytes",
 "futures-util",
-
 "http",
-
 "http-body",
+
 "http 1.0.0",
+
 "http-body 1.0.0",
+
 "http-body-util",
 "mime",
+
 "pin-project-lite",
 "rustversion",
+
 "sync_wrapper",
 "tower-layer",
 "tower-service",
]
@@ -288,9 +291,9 @@ checksum = "447f28c85900215cc1bea282f32d4a2f22d55c5a300afdfbc661c8d6a632e063"
dependencies = [
 "bytes",
 "futures-util",
-
 "http",
-
 "http-body",
-
 "hyper",
+
 "http 0.2.11",
+
 "http-body 0.4.6",
+
 "hyper 0.14.27",
 "tokio",
 "tower-service",
]
@@ -1384,17 +1387,36 @@ dependencies = [

[[package]]
name = "h2"
-
version = "0.3.20"
+
version = "0.3.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049"
+
checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178"
dependencies = [
 "bytes",
 "fnv",
 "futures-core",
 "futures-sink",
 "futures-util",
-
 "http",
-
 "indexmap 1.9.3",
+
 "http 0.2.11",
+
 "indexmap 2.0.0",
+
 "slab",
+
 "tokio",
+
 "tokio-util",
+
 "tracing",
+
]
+

+
[[package]]
+
name = "h2"
+
version = "0.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e1d308f63daf4181410c242d34c11f928dcb3aa105852019e043c9d1f4e4368a"
+
dependencies = [
+
 "bytes",
+
 "fnv",
+
 "futures-core",
+
 "futures-sink",
+
 "futures-util",
+
 "http 1.0.0",
+
 "indexmap 2.0.0",
 "slab",
 "tokio",
 "tokio-util",
@@ -1418,31 +1440,6 @@ dependencies = [
]

[[package]]
-
name = "headers"
-
version = "0.3.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584"
-
dependencies = [
-
 "base64 0.13.1",
-
 "bitflags 1.3.2",
-
 "bytes",
-
 "headers-core",
-
 "http",
-
 "httpdate",
-
 "mime",
-
 "sha1",
-
]
-

-
[[package]]
-
name = "headers-core"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
-
dependencies = [
-
 "http",
-
]
-

-
[[package]]
name = "hermit-abi"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1468,9 +1465,20 @@ dependencies = [

[[package]]
name = "http"
-
version = "0.2.9"
+
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
+
checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
+
dependencies = [
+
 "bytes",
+
 "fnv",
+
 "itoa",
+
]
+

+
[[package]]
+
name = "http"
+
version = "1.0.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea"
dependencies = [
 "bytes",
 "fnv",
@@ -1479,20 +1487,37 @@ dependencies = [

[[package]]
name = "http-body"
-
version = "0.4.5"
+
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+
checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
dependencies = [
 "bytes",
-
 "http",
+
 "http 0.2.11",
 "pin-project-lite",
]

[[package]]
-
name = "http-range-header"
-
version = "0.3.0"
+
name = "http-body"
+
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
+
checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
+
dependencies = [
+
 "bytes",
+
 "http 1.0.0",
+
]
+

+
[[package]]
+
name = "http-body-util"
+
version = "0.1.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840"
+
dependencies = [
+
 "bytes",
+
 "futures-util",
+
 "http 1.0.0",
+
 "http-body 1.0.0",
+
 "pin-project-lite",
+
]

[[package]]
name = "httparse"
@@ -1516,14 +1541,14 @@ dependencies = [
 "futures-channel",
 "futures-core",
 "futures-util",
-
 "h2",
-
 "http",
-
 "http-body",
+
 "h2 0.3.22",
+
 "http 0.2.11",
+
 "http-body 0.4.6",
 "httparse",
 "httpdate",
 "itoa",
 "pin-project-lite",
-
 "socket2 0.4.9",
+
 "socket2 0.4.10",
 "tokio",
 "tower-service",
 "tracing",
@@ -1531,6 +1556,46 @@ dependencies = [
]

[[package]]
+
name = "hyper"
+
version = "1.0.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "403f9214f3e703236b221f1a9cd88ec8b4adfa5296de01ab96216361f4692f56"
+
dependencies = [
+
 "bytes",
+
 "futures-channel",
+
 "futures-util",
+
 "h2 0.4.0",
+
 "http 1.0.0",
+
 "http-body 1.0.0",
+
 "httparse",
+
 "httpdate",
+
 "itoa",
+
 "pin-project-lite",
+
 "tokio",
+
 "want",
+
]
+

+
[[package]]
+
name = "hyper-util"
+
version = "0.1.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9ca339002caeb0d159cc6e023dff48e199f081e42fa039895c7c6f38b37f2e9d"
+
dependencies = [
+
 "bytes",
+
 "futures-channel",
+
 "futures-util",
+
 "http 1.0.0",
+
 "http-body 1.0.0",
+
 "hyper 1.0.1",
+
 "pin-project-lite",
+
 "socket2 0.5.5",
+
 "tokio",
+
 "tower",
+
 "tower-service",
+
 "tracing",
+
]
+

+
[[package]]
name = "iana-time-zone"
version = "0.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1821,9 +1886,9 @@ dependencies = [

[[package]]
name = "mio"
-
version = "0.8.8"
+
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
+
checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
dependencies = [
 "libc",
 "wasi",
@@ -1852,7 +1917,7 @@ dependencies = [
 "io-reactor",
 "libc",
 "rand",
-
 "socket2 0.5.3",
+
 "socket2 0.5.5",
]

[[package]]
@@ -2478,7 +2543,7 @@ dependencies = [
 "chrono",
 "fastrand",
 "flate2",
-
 "hyper",
+
 "hyper 1.0.1",
 "lexopt",
 "lru",
 "nonempty 0.8.1",
@@ -2892,17 +2957,6 @@ dependencies = [
]

[[package]]
-
name = "sha1"
-
version = "0.10.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
-
dependencies = [
-
 "cfg-if",
-
 "cpufeatures",
-
 "digest",
-
]
-

-
[[package]]
name = "sha1_smol"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3011,9 +3065,9 @@ dependencies = [

[[package]]
name = "socket2"
-
version = "0.4.9"
+
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
+
checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
dependencies = [
 "libc",
 "winapi",
@@ -3021,9 +3075,9 @@ dependencies = [

[[package]]
name = "socket2"
-
version = "0.5.3"
+
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877"
+
checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
dependencies = [
 "libc",
 "windows-sys",
@@ -3298,9 +3352,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"

[[package]]
name = "tokio"
-
version = "1.33.0"
+
version = "1.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653"
+
checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c"
dependencies = [
 "backtrace",
 "bytes",
@@ -3308,16 +3362,16 @@ dependencies = [
 "mio",
 "num_cpus",
 "pin-project-lite",
-
 "socket2 0.5.3",
+
 "socket2 0.5.5",
 "tokio-macros",
 "windows-sys",
]

[[package]]
name = "tokio-macros"
-
version = "2.1.0"
+
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
+
checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
 "proc-macro2",
 "quote",
@@ -3356,17 +3410,16 @@ dependencies = [

[[package]]
name = "tower-http"
-
version = "0.3.5"
+
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"
+
checksum = "09e12e6351354851911bdf8c2b8f2ab15050c567d70a8b9a37ae7b8301a4080d"
dependencies = [
-
 "bitflags 1.3.2",
+
 "bitflags 2.4.0",
 "bytes",
-
 "futures-core",
 "futures-util",
-
 "http",
-
 "http-body",
-
 "http-range-header",
+
 "http 1.0.0",
+
 "http-body 1.0.0",
+
 "http-body-util",
 "pin-project-lite",
 "tower-layer",
 "tower-service",
modified radicle-httpd/Cargo.toml
@@ -16,14 +16,14 @@ logfmt = [

[dependencies]
anyhow = { version = "1" }
-
axum = { version = "0.6.7", default-features = false, features = ["headers", "json", "query", "tokio"] }
-
axum-auth = { version= "0.4.0", default-features = false, features = ["auth-bearer"] }
+
axum = { version = "0.7.2", default-features = false, features = ["json", "query", "tokio", "http1"] }
+
axum-auth = { version= "0.7.0", default-features = false, features = ["auth-bearer"] }
axum-server = { version = "0.5.1", default-features = false }
base64 = "0.21.3"
chrono = { version = "0.4.22", default-features = false, features = ["clock"] }
fastrand = { version = "2.0.0" }
flate2 = { version = "1" }
-
hyper = { version = "0.14.17", default-features = false }
+
hyper = { version = "1.0.1", default-features = false }
lexopt = { version = "0.2.1" }
lru = { version = "0.11.0" }
nonempty = { version = "0.8.1", features = ["serialize"] }
@@ -33,7 +33,7 @@ serde_json = { version = "1", features = ["preserve_order"] }
thiserror = { version = "1" }
time = { version = "0.3.17", features = ["parsing", "serde"] }
tokio = { version = "1.21", default-features = false, features = ["macros", "rt-multi-thread"] }
-
tower-http = { version = "0.3.4", default-features = false, features = ["trace", "cors", "set-header"] }
+
tower-http = { version = "0.5", default-features = false, features = ["trace", "cors", "set-header"] }
tracing = { version = "0.1.37", default-features = false, features = ["std", "log"] }
tracing-logfmt = { version = "0.2", optional = true }
tracing-subscriber = { version = "0.3", default-features = false, features = ["std", "ansi", "fmt"] }
@@ -50,7 +50,7 @@ path = "../radicle-term"
path = "../radicle-cli"

[dev-dependencies]
-
hyper = { version = "0.14.17", default-features = false, features = ["client"] }
+
hyper = { version = "1.0.1", default-features = false, features = ["client"] }
pretty_assertions = { version = "1.3.0" }
radicle-cli = { path = "../radicle-cli" }
radicle-crypto = { path = "../radicle-crypto", features = ["test"] }
modified radicle-httpd/src/lib.rs
@@ -13,10 +13,11 @@ use std::sync::Arc;
use std::time::Duration;

use anyhow::Context as _;
-
use axum::body::{Body, BoxBody, HttpBody};
+
use axum::body::{Body, HttpBody};
use axum::http::{Request, Response};
use axum::middleware;
use axum::Router;
+
use tokio::net::TcpListener;
use tower_http::trace::TraceLayer;
use tracing::Span;

@@ -54,9 +55,9 @@ pub async fn run(options: Options) -> anyhow::Result<()> {

    tracing::info!("{}", str::from_utf8(&git_version)?.trim());

-
    let listen = options.listen;
+
    let listener = TcpListener::bind(options.listen).await?;

-
    tracing::info!("listening on http://{}", listen);
+
    tracing::info!("listening on http://{}", options.listen);

    let profile = Profile::load()?;
    let request_id = RequestId::new();
@@ -72,7 +73,7 @@ pub async fn run(options: Options) -> anyhow::Result<()> {
                    tracing::info_span!("request", id = %request_id.clone().next())
                })
                .on_response(
-
                    |response: &Response<BoxBody>, latency: Duration, _span: &Span| {
+
                    |response: &Response<Body>, latency: Duration, _span: &Span| {
                        if let Some(info) = response.extensions().get::<TracingInfo>() {
                            tracing::info!(
                                "{} \"{} {} {:?}\" {} {:?} {}",
@@ -100,8 +101,7 @@ pub async fn run(options: Options) -> anyhow::Result<()> {
        )
        .into_make_service_with_connect_info::<SocketAddr>();

-
    axum::Server::bind(&listen)
-
        .serve(app)
+
    axum::serve(listener, app)
        .await
        .map_err(anyhow::Error::from)
}
modified radicle-httpd/src/test.rs
@@ -381,6 +381,8 @@ impl Response {
    }

    pub async fn body(self) -> Bytes {
-
        hyper::body::to_bytes(self.0.into_body()).await.unwrap()
+
        axum::body::to_bytes(self.0.into_body(), usize::MAX)
+
            .await
+
            .unwrap()
    }
}
modified radicle-httpd/src/tracing_extra.rs
@@ -3,6 +3,7 @@ use std::net::SocketAddr;
use std::sync::atomic::{AtomicU64, Ordering};
use std::sync::Arc;

+
use axum::body::Body;
use axum::extract::ConnectInfo;
use axum::http::Request;
use axum::middleware::Next;
@@ -25,6 +26,7 @@ impl RequestId {
    }
}

+
#[derive(Clone)]
pub struct TracingInfo {
    pub connect_info: ConnectInfo<SocketAddr>,
    pub method: Method,
@@ -45,7 +47,7 @@ impl fmt::Display for ColoredStatus {
    }
}

-
pub async fn tracing_middleware<B>(request: Request<B>, next: Next<B>) -> impl IntoResponse {
+
pub async fn tracing_middleware(request: Request<Body>, next: Next) -> impl IntoResponse {
    let connect_info = *request
        .extensions()
        .get::<ConnectInfo<std::net::SocketAddr>>()