diff options
author | isaacs <i@izs.me> | 2013-01-07 20:33:56 -0800 |
---|---|---|
committer | isaacs <i@izs.me> | 2013-01-10 13:50:06 -0800 |
commit | 9ece63b1d74ec1359df7b3ef4d6ed534ac49c0cf (patch) | |
tree | 061960449d252604da88ddbf8c59e5481418ea45 /lib/http.js | |
parent | bc8feb151c731f5862a02fccb58638105b44d45b (diff) | |
download | node-9ece63b1d74ec1359df7b3ef4d6ed534ac49c0cf.tar.gz |
http: Don't switch the socket into old-mode
Diffstat (limited to 'lib/http.js')
-rw-r--r-- | lib/http.js | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/http.js b/lib/http.js index 1bf85d234..687c335ef 100644 --- a/lib/http.js +++ b/lib/http.js @@ -35,6 +35,16 @@ if (process.env.NODE_DEBUG && /http/.test(process.env.NODE_DEBUG)) { debug = function() { }; } +function readStart(socket) { + if (!socket || !socket._handle || !socket._handle.readStart) return; + socket._handle.readStart(); +} + +function readStop(socket) { + if (!socket || !socket._handle || !socket._handle.readStop) return; + socket._handle.readStop(); +} + // Only called in the slow case where slow means // that the request headers were either fragmented // across multiple TCP packets or too large to be @@ -129,7 +139,7 @@ function parserOnBody(b, start, len) { var slice = b.slice(start, start + len); var ret = stream.push(slice); if (!ret) - socket.pause(); + readStop(socket); } } @@ -163,7 +173,7 @@ function parserOnMessageComplete() { if (parser.socket.readable) { // force to read the next incoming message - parser.socket.resume(); + readStart(parser.socket); } } @@ -325,7 +335,7 @@ IncomingMessage.prototype._read = function(n, callback) { if (!this.socket.readable) return callback(null, null); else - this.socket.resume(); + readStart(this.socket); }; @@ -399,7 +409,7 @@ IncomingMessage.prototype._dump = function() { this._dumped = true; this.socket.parser.incoming = null; this.push(null); - this.socket.resume(); + readStart(this.socket); }; |