From 98b0e023f3f9b824268fd8983f3642ab075b3b2d Mon Sep 17 00:00:00 2001
From: Nikolay Kim <fafhrd91@gmail.com>
Date: Mon, 25 Dec 2017 07:31:12 -0800
Subject: [PATCH] optimize payload detection

---
 src/h1.rs | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/h1.rs b/src/h1.rs
index 4d96c703..95fbb8c4 100644
--- a/src/h1.rs
+++ b/src/h1.rs
@@ -581,9 +581,7 @@ impl Reader {
             msg
         };
 
-        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) {
+        let decoder = 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::<u64>() {
@@ -599,7 +597,9 @@ impl Reader {
         } else if chunked(&msg.get_mut().headers)? {
             // Chunked encoding
             Some(Decoder::chunked())
-        } else if msg.get_ref().headers.contains_key(header::UPGRADE) {
+        } else if msg.get_ref().headers.contains_key(header::UPGRADE) ||
+            msg.get_ref().method == Method::CONNECT
+        {
             Some(Decoder::eof())
         } else {
             None
@@ -1227,8 +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");
+             content-type: text/plain\r\n\r\n");
         let req = parse_ready!(&mut buf);
 
         assert!(req.upgrade());