From f1e82ebc1ee12a7bcff1f8bd90cf325433c85551 Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Sun, 24 Dec 2017 16:15:40 -0800 Subject: [PATCH] better connect handling --- src/h1.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/h1.rs b/src/h1.rs index 861ad991..4d96c703 100644 --- a/src/h1.rs +++ b/src/h1.rs @@ -581,7 +581,9 @@ impl Reader { msg }; - let decoder = if let Some(len) = msg.get_ref().headers.get(header::CONTENT_LENGTH) { + let decoder = if msg.get_ref().method == Method::CONNECT { + Some(Decoder::eof()) + } else if let Some(len) = msg.get_ref().headers.get(header::CONTENT_LENGTH) { // Content-Length if let Ok(s) = len.to_str() { if let Ok(len) = s.parse::() { @@ -597,9 +599,7 @@ impl Reader { } else if chunked(&msg.get_mut().headers)? { // Chunked encoding Some(Decoder::chunked()) - } else if msg.get_ref().headers.contains_key(header::UPGRADE) || - msg.get_ref().method == Method::CONNECT - { + } else if msg.get_ref().headers.contains_key(header::UPGRADE) { Some(Decoder::eof()) } else { None @@ -1215,6 +1215,7 @@ mod tests { fn test_conn_upgrade() { let mut buf = Buffer::new( "GET /test HTTP/1.1\r\n\ + upgrade: websockets\r\n\ connection: upgrade\r\n\r\n"); let req = parse_ready!(&mut buf); @@ -1226,6 +1227,7 @@ mod tests { fn test_conn_upgrade_connect_method() { let mut buf = Buffer::new( "CONNECT /test HTTP/1.1\r\n\ + upgrade: websockets\r\n\ content-length: 0\r\n\r\n"); let req = parse_ready!(&mut buf);