@@ -211,7 +211,7 @@ ObjectDefineProperty(OutgoingMessage.prototype, 'writableHighWaterMark', {
211
211
ObjectDefineProperty ( OutgoingMessage . prototype , 'writableCorked' , {
212
212
__proto__ : null ,
213
213
get ( ) {
214
- return this [ kCorked ] ;
214
+ return this [ kSocket ] ? this [ kSocket ] . writableCorked : this [ kCorked ] ;
215
215
} ,
216
216
} ) ;
217
217
@@ -252,6 +252,9 @@ ObjectDefineProperty(OutgoingMessage.prototype, 'socket', {
252
252
return this [ kSocket ] ;
253
253
} ,
254
254
set : function ( val ) {
255
+ for ( let n = 0 ; n < this [ kCorked ] ; n ++ ) {
256
+ val ?. cork ( ) ;
257
+ }
255
258
for ( let n = 0 ; n < this [ kCorked ] ; n ++ ) {
256
259
val ?. cork ( ) ;
257
260
this [ kSocket ] ?. uncork ( ) ;
@@ -1000,9 +1003,9 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
1000
1003
}
1001
1004
}
1002
1005
1003
- if ( ! fromEnd && msg . socket && ! msg . socket . writableCorked ) {
1004
- msg . socket . cork ( ) ;
1005
- process . nextTick ( connectionCorkNT , msg . socket ) ;
1006
+ if ( ! fromEnd && ! msg . writableCorked ) {
1007
+ msg . cork ( ) ;
1008
+ process . nextTick ( connectionUncorkNT , msg ) ;
1006
1009
}
1007
1010
1008
1011
let ret ;
@@ -1027,8 +1030,8 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
1027
1030
}
1028
1031
1029
1032
1030
- function connectionCorkNT ( conn ) {
1031
- conn . uncork ( ) ;
1033
+ function connectionUncorkNT ( msg ) {
1034
+ msg . uncork ( ) ;
1032
1035
}
1033
1036
1034
1037
OutgoingMessage . prototype . addTrailers = function addTrailers ( headers ) {
@@ -1143,9 +1146,9 @@ OutgoingMessage.prototype.end = function end(chunk, encoding, callback) {
1143
1146
// Fully uncork connection on end().
1144
1147
this [ kSocket ] . _writableState . corked = 1 ;
1145
1148
this [ kSocket ] . uncork ( ) ;
1149
+ } else {
1150
+ this [ kCorked ] = 0 ;
1146
1151
}
1147
- this [ kCorked ] = 1 ;
1148
- this . uncork ( ) ;
1149
1152
1150
1153
this . finished = true ;
1151
1154
0 commit comments