@@ -38,7 +38,8 @@ const {
38
38
ObjectPrototypeHasOwnProperty,
39
39
ObjectSetPrototypeOf,
40
40
RegExpPrototypeTest,
41
- StringPrototypeToLowerCase
41
+ StringPrototypeToLowerCase,
42
+ Symbol,
42
43
} = primordials ;
43
44
44
45
const { getDefaultHighWaterMark } = require ( 'internal/streams/state' ) ;
@@ -80,6 +81,8 @@ const { construct, destroy } = require('internal/streams/destroy');
80
81
const HIGH_WATER_MARK = getDefaultHighWaterMark ( ) ;
81
82
const { CRLF , debug } = common ;
82
83
84
+ const kCorked = Symbol ( 'kCorked' ) ;
85
+
83
86
const nop = FunctionPrototype ;
84
87
85
88
const RE_CONN_CLOSE = / (?: ^ | \W ) c l o s e (?: $ | \W ) / i;
@@ -120,6 +123,7 @@ function OutgoingMessage(opts) {
120
123
this . _trailer = '' ;
121
124
122
125
this . _headerSent = false ;
126
+ this [ kCorked ] = 0 ;
123
127
124
128
this . socket = null ;
125
129
this . _header = null ;
@@ -283,6 +287,8 @@ OutgoingMessage.prototype.cork = function() {
283
287
284
288
if ( this . socket ) {
285
289
this . socket . cork ( ) ;
290
+ } else {
291
+ this [ kCorked ] ++ ;
286
292
}
287
293
} ;
288
294
@@ -293,6 +299,8 @@ OutgoingMessage.prototype.uncork = function() {
293
299
294
300
if ( this . socket ) {
295
301
this . socket . uncork ( ) ;
302
+ } else if ( this [ kCorked ] ) {
303
+ this [ kCorked ] -- ;
296
304
}
297
305
} ;
298
306
@@ -313,14 +321,14 @@ OutgoingMessage.prototype.setTimeout = function setTimeout(msecs, callback) {
313
321
314
322
OutgoingMessage . prototype . _construct = function ( callback ) {
315
323
if ( this . socket ) {
316
- for ( let n = 0 ; n < this . _writableState . corked ; ++ n ) {
324
+ for ( let n = 0 ; n < this [ kCorked ] ; ++ n ) {
317
325
this . socket . cork ( ) ;
318
326
}
319
327
callback ( ) ;
320
328
} else {
321
329
// TODO(ronag): What if never assigned socket?
322
330
this . once ( 'socket' , function ( socket ) {
323
- for ( let n = 0 ; n < this . _writableState . corked ; ++ n ) {
331
+ for ( let n = 0 ; n < this [ kCorked ] ; ++ n ) {
324
332
socket . cork ( ) ;
325
333
}
326
334
callback ( ) ;
@@ -772,7 +780,7 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
772
780
773
781
if ( ! fromEnd && ! state . corked ) {
774
782
msg . cork ( ) ;
775
- process . nextTick ( connectionCorkNT , msg ) ;
783
+ process . nextTick ( uncorkNT , msg ) ;
776
784
}
777
785
778
786
let ret ;
@@ -790,8 +798,8 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
790
798
}
791
799
792
800
793
- function connectionCorkNT ( conn ) {
794
- conn . uncork ( ) ;
801
+ function uncorkNT ( msg ) {
802
+ msg . uncork ( ) ;
795
803
}
796
804
797
805
0 commit comments