diff options
author | Fedor Indutny <fedor@indutny.com> | 2015-10-13 02:16:39 -0400 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2015-10-14 12:16:18 -0400 |
commit | ab03635fb1fd9d380d214116d2ba5bd96b2b9311 (patch) | |
tree | d198293dbe5a740d644b96f7b17bd5a920ce1c77 /lib/_http_common.js | |
parent | f45c31576358cf587f2551f9fbd492d9e1b55983 (diff) | |
download | android-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.js | 4 |
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; |