v0.34.0_10
This commit is contained in:
1 parent
8c4cbc583f
commit
dd2502dd11
13 files changed
+389
-113
No files matched your search
@@ -39,25 +39,29 @@ async fn connection<I>(
|
||||
}
|
||||
let request_stop = stop.clone();
|
||||
let service_frontend_state = frontend_state.clone();
|
||||
let formatted_peer = Arc::new(crate::forwarding::PeerFormatting::new(peer, local));
|
||||
let service = service_fn(move |mut request: Request<Incoming>| {
|
||||
let router = router.clone();
|
||||
let mut router = router.clone();
|
||||
let request_stop = request_stop.clone();
|
||||
let request_lease = lease.clone();
|
||||
let upgrade_state = service_frontend_state.clone();
|
||||
let formatted_peer = formatted_peer.clone();
|
||||
#[cfg(target_os = "linux")]
|
||||
let sendfile_slots = sendfile_slots.clone();
|
||||
async move {
|
||||
request.extensions_mut().insert(PeerAddr(peer));
|
||||
request.extensions_mut().insert(LocalAddr(local));
|
||||
request.extensions_mut().insert(transport);
|
||||
request.extensions_mut().insert(request_lease.clone());
|
||||
// Reuse immutable per-socket formatting and insert extensions in
|
||||
// one pass. Configuration and trust policies are still per-request.
|
||||
let extensions = request.extensions_mut();
|
||||
extensions.insert(PeerAddr(peer));
|
||||
extensions.insert(LocalAddr(local));
|
||||
extensions.insert(transport);
|
||||
extensions.insert(formatted_peer);
|
||||
extensions.insert(request_lease.clone());
|
||||
#[cfg(target_os = "linux")]
|
||||
if let Some(slots) = sendfile_slots {
|
||||
request.extensions_mut().insert(slots);
|
||||
extensions.insert(slots);
|
||||
}
|
||||
request
|
||||
.extensions_mut()
|
||||
.insert(ServerShutdown(request_stop.clone()));
|
||||
extensions.insert(ServerShutdown(request_stop.clone()));
|
||||
|
||||
if h2c_attempt(&request) {
|
||||
if !h2c_upgrade {
|
||||
@@ -175,7 +179,9 @@ async fn connection<I>(
|
||||
);
|
||||
}
|
||||
|
||||
router.oneshot(request.map(Body::new)).await
|
||||
// Axum Router is always ready; avoid the per-request Oneshot
|
||||
// readiness adapter while retaining the same middleware stack.
|
||||
router.call(request.map(Body::new)).await
|
||||
}
|
||||
});
|
||||
let mut builder = http1::Builder::new();
|
||||
|
||||
@@ -30,7 +30,7 @@ use tokio::{
|
||||
task::JoinSet,
|
||||
};
|
||||
use tokio_util::sync::CancellationToken;
|
||||
use tower::ServiceExt;
|
||||
use tower::{Service, ServiceExt};
|
||||
|
||||
const HTTP2_PRIOR_KNOWLEDGE_PREFACE: &[u8; 24] = b"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n";
|
||||
const H2_FRAME_HEADER_LEN: usize = 9;
|
||||
|
||||
Reference in new issue
Block a user