http: there is no corked property of stream

Do not check/use unexistent property, use `OutgoingMessage` instead.

PR-URL: https://github.com/nodejs/node/pull/18325
Reviewed-By: Mithun Sasidharan <mithunsasidharan89@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Fedor Indutny 2018-01-23 15:23:33 -05:00
parent 287f21e31d
commit f29c2cbec5

View File

@ -38,6 +38,8 @@ const errors = require('internal/errors');
const { CRLF, debug } = common; const { CRLF, debug } = common;
const { utcDate } = internalHttp; const { utcDate } = internalHttp;
const kIsCorked = Symbol('isCorked');
var RE_FIELDS = var RE_FIELDS =
/^(?:Connection|Transfer-Encoding|Content-Length|Date|Expect|Trailer|Upgrade)$/i; /^(?:Connection|Transfer-Encoding|Content-Length|Date|Expect|Trailer|Upgrade)$/i;
var RE_CONN_VALUES = /(?:^|\W)close|upgrade(?:$|\W)/ig; var RE_CONN_VALUES = /(?:^|\W)close|upgrade(?:$|\W)/ig;
@ -99,6 +101,7 @@ function OutgoingMessage() {
this.finished = false; this.finished = false;
this._headerSent = false; this._headerSent = false;
this[kIsCorked] = false;
this.socket = null; this.socket = null;
this.connection = null; this.connection = null;
@ -648,9 +651,10 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
// signal the user to keep writing. // signal the user to keep writing.
if (chunk.length === 0) return true; if (chunk.length === 0) return true;
if (!fromEnd && msg.connection && !msg.connection.corked) { if (!fromEnd && msg.connection && !msg[kIsCorked]) {
msg.connection.cork(); msg.connection.cork();
process.nextTick(connectionCorkNT, msg.connection); msg[kIsCorked] = true;
process.nextTick(connectionCorkNT, msg, msg.connection);
} }
var len, ret; var len, ret;
@ -679,7 +683,8 @@ function writeAfterEndNT(err, callback) {
} }
function connectionCorkNT(conn) { function connectionCorkNT(msg, conn) {
msg[kIsCorked] = false;
conn.uncork(); conn.uncork();
} }