Skip to content

Commit 5ccdae8

Browse files
committed
feat(server, client): fix the get_strip_connection_header test
1 parent dc03d10 commit 5ccdae8

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

tests/support/mod.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -470,12 +470,12 @@ fn naive_proxy(cfg: ProxyConfig) -> (SocketAddr, impl Future<Output = ()>) {
470470
let dst_addr = cfg.dst;
471471
let max_connections = cfg.connections;
472472
let counter = AtomicUsize::new(0);
473+
let http2_only = cfg.version == 2;
473474

474475
let listener = StdTcpListener::bind(SocketAddr::from(([127, 0, 0, 1], 0))).unwrap();
475476

476477
let proxy_addr = listener.local_addr().unwrap();
477478

478-
let http2_only = cfg.version == 2;
479479
let fut = async move {
480480
let listener = TcpListener::from_std(listener).unwrap();
481481

@@ -511,12 +511,27 @@ fn naive_proxy(cfg: ProxyConfig) -> (SocketAddr, impl Future<Output = ()>) {
511511
}
512512
});
513513

514-
let res = sender.send_request(req).await;
515-
res
514+
let resp = sender.send_request(req).await?;
515+
516+
let (mut parts, body) = resp.into_parts();
517+
518+
// Remove the Connection header for HTTP/1.1 proxy connections.
519+
if !http2_only {
520+
parts.headers.remove("Connection");
521+
}
522+
523+
let mut builder = Response::builder().status(parts.status);
524+
*builder.headers_mut().unwrap() = parts.headers;
525+
526+
Result::<Response<Body>, hyper::Error>::Ok(builder.body(body).unwrap())
516527
}
517528
});
518529

519-
Http::new().serve_connection(stream, service).await.unwrap();
530+
Http::new()
531+
.http2_only(http2_only)
532+
.serve_connection(stream, service)
533+
.await
534+
.unwrap();
520535
}
521536
});
522537
};

0 commit comments

Comments
 (0)