http: Don't switch the socket into old-mode
authorisaacs <i@izs.me>
Tue, 8 Jan 2013 04:33:56 +0000 (20:33 -0800)
committerisaacs <i@izs.me>
Thu, 10 Jan 2013 21:50:06 +0000 (13:50 -0800)
lib/http.js

index 1bf85d2..687c335 100644 (file)
@@ -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);
 };