From 10d17e5f6202a611105d6d1e45aa497be19a3af2 Mon Sep 17 00:00:00 2001 From: Anthony Ramine <123095+nox@users.noreply.github.com> Date: Wed, 28 Apr 2021 03:55:46 +0200 Subject: [PATCH] Don't override empty path for CONNECT requests (#534) --- src/frame/headers.rs | 10 +++++++--- tests/h2-tests/tests/server.rs | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/frame/headers.rs b/src/frame/headers.rs index b65951c..979ac70 100644 --- a/src/frame/headers.rs +++ b/src/frame/headers.rs @@ -552,15 +552,19 @@ impl Pseudo { .map(|v| Bytes::copy_from_slice(v.as_str().as_bytes())) .unwrap_or_else(Bytes::new); - if path.is_empty() && method != Method::OPTIONS { - path = Bytes::from_static(b"/"); + match method { + Method::OPTIONS | Method::CONNECT => {} + _ if path.is_empty() => { + path = Bytes::from_static(b"/"); + } + _ => {} } let mut pseudo = Pseudo { method: Some(method), scheme: None, authority: None, - path: Some(unsafe { BytesStr::from_utf8_unchecked(path) }), + path: Some(unsafe { BytesStr::from_utf8_unchecked(path) }).filter(|p| !p.is_empty()), status: None, }; diff --git a/tests/h2-tests/tests/server.rs b/tests/h2-tests/tests/server.rs index 4be7090..03ce43f 100644 --- a/tests/h2-tests/tests/server.rs +++ b/tests/h2-tests/tests/server.rs @@ -114,7 +114,7 @@ async fn serve_connect() { let settings = client.assert_server_handshake().await; assert_default_settings!(settings); client - .send_frame(frames::headers(1).method("CONNECT").eos()) + .send_frame(frames::headers(1).request("CONNECT", "localhost").eos()) .await; client .recv_frame(frames::headers(1).response(200).eos())