summaryrefslogtreecommitdiff
path: root/lib/http.js
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2013-01-07 20:33:56 -0800
committerisaacs <i@izs.me>2013-01-10 13:50:06 -0800
commit9ece63b1d74ec1359df7b3ef4d6ed534ac49c0cf (patch)
tree061960449d252604da88ddbf8c59e5481418ea45 /lib/http.js
parentbc8feb151c731f5862a02fccb58638105b44d45b (diff)
downloadnode-9ece63b1d74ec1359df7b3ef4d6ed534ac49c0cf.tar.gz
http: Don't switch the socket into old-mode
Diffstat (limited to 'lib/http.js')
-rw-r--r--lib/http.js18
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);
};