diff --git a/src/h1.rs b/src/h1.rs index 861ad9919..4d96c7033 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);