http: cork/uncork before flushing pipelined res
authorFedor Indutny <fedor@indutny.com>
Sun, 4 Oct 2015 04:01:06 +0000 (00:01 -0400)
committerJames M Snell <jasnell@gmail.com>
Thu, 8 Oct 2015 03:39:17 +0000 (20:39 -0700)
Make sure that the pipelined response data will be written as less TCP
packets as possible.

PR-URL: https://github.com/nodejs/node/pull/3172
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
lib/_http_outgoing.js

index 7bf8d56..dd78ddf 100644 (file)
@@ -157,10 +157,12 @@ OutgoingMessage.prototype._writeRaw = function(data, encoding, callback) {
       var output = this.output;
       var outputEncodings = this.outputEncodings;
       var outputCallbacks = this.outputCallbacks;
+      connection.cork();
       for (var i = 0; i < outputLength; i++) {
         connection.write(output[i], outputEncodings[i],
                          outputCallbacks[i]);
       }
+      connection.uncork();
 
       this.output = [];
       this.outputEncodings = [];
@@ -637,10 +639,12 @@ OutgoingMessage.prototype._flush = function() {
       var output = this.output;
       var outputEncodings = this.outputEncodings;
       var outputCallbacks = this.outputCallbacks;
+      socket.cork();
       for (var i = 0; i < outputLength; i++) {
         ret = socket.write(output[i], outputEncodings[i],
                            outputCallbacks[i]);
       }
+      socket.uncork();
 
       this.output = [];
       this.outputEncodings = [];