Skip to content

Commit 16b23b2

Browse files
indutnyMyles Borins
authored andcommitted
http: skip body and next message of CONNECT res
When handling a response to `CONNECT` request - skip message body and do not attempt to parse the next message. `CONNECT` requests are used in similar sense to HTTP Upgrade. Fix: #6198 PR-URL: #6279 Reviewed-By: Brian White <mscdex@mscdex.net> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 5305831 commit 16b23b2

3 files changed

Lines changed: 7 additions & 4 deletions

File tree

‎lib/_http_client.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ function parserOnIncomingClient(res, shouldKeepAlive) {
432432
// Responses to CONNECT request is handled as Upgrade.
433433
if(req.method==='CONNECT'){
434434
res.upgrade=true;
435-
returntrue;// skip body
435+
return2;// skip body, and the rest
436436
}
437437

438438
// Responses to HEAD requests are crazy.

‎lib/_http_common.js‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ function parserOnHeadersComplete(versionMajor, versionMinor, headers, method,
9494

9595
parser.incoming.upgrade=upgrade;
9696

97-
varskipBody=false;// response to HEAD or CONNECT
97+
varskipBody=0;// response to HEAD or CONNECT
9898

9999
if(!upgrade){
100100
// For upgraded connections and CONNECT method request, we'll emit this
@@ -103,7 +103,10 @@ function parserOnHeadersComplete(versionMajor, versionMinor, headers, method,
103103
skipBody=parser.onIncoming(parser.incoming,shouldKeepAlive);
104104
}
105105

106-
returnskipBody;
106+
if(typeofskipBody!=='number')
107+
returnskipBody ? 1 : 0;
108+
else
109+
returnskipBody;
107110
}
108111

109112
// XXX This is a mess.

‎src/node_http_parser.cc‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ class Parser : public AsyncWrap {
300300
return -1;
301301
}
302302

303-
return head_response->IsTrue() ? 1 : 0;
303+
return head_response->IntegerValue();
304304
}
305305

306306

0 commit comments

Comments
 (0)