summaryrefslogtreecommitdiff
path: root/lib/_http_common.js
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2015-10-13 02:16:39 -0400
committerFedor Indutny <fedor@indutny.com>2015-10-14 12:16:18 -0400
commitab03635fb1fd9d380d214116d2ba5bd96b2b9311 (patch)
treed198293dbe5a740d644b96f7b17bd5a920ce1c77 /lib/_http_common.js
parentf45c31576358cf587f2551f9fbd492d9e1b55983 (diff)
downloadandroid-node-v8-ab03635fb1fd9d380d214116d2ba5bd96b2b9311.tar.gz
android-node-v8-ab03635fb1fd9d380d214116d2ba5bd96b2b9311.tar.bz2
android-node-v8-ab03635fb1fd9d380d214116d2ba5bd96b2b9311.zip
http: fix stalled pipeline bug
This is a two-part fix: - Fix pending data notification in `OutgoingMessage` to notify server about flushed data too - Fix pause/resume behavior for the consumed socket. `resume` event is emitted on a next tick, and `socket._paused` can already be `true` at this time. Pause the socket again to avoid PAUSED error on parser. Fix: https://github.com/nodejs/node/issues/3332 PR-URL: https://github.com/nodejs/node/pull/3342 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Diffstat (limited to 'lib/_http_common.js')
-rw-r--r--lib/_http_common.js4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/_http_common.js b/lib/_http_common.js
index addf9a0fa4..5140d36666 100644
--- a/lib/_http_common.js
+++ b/lib/_http_common.js
@@ -140,6 +140,7 @@ var parsers = new FreeList('parsers', 1000, function() {
parser._headers = [];
parser._url = '';
+ parser._consumed = false;
// Only called in the slow case where slow means
// that the request headers were either fragmented
@@ -167,6 +168,9 @@ function freeParser(parser, req, socket) {
if (parser) {
parser._headers = [];
parser.onIncoming = null;
+ if (parser._consumed)
+ parser.unconsume();
+ parser._consumed = false;
if (parser.socket)
parser.socket.parser = null;
parser.socket = null;