Skip to content

Commit 9866608

Browse files
CraigCavrvagg
authored andcommitted
zlib: only apply drain listener if given callback
When stream.flush() is called without a callback, an empty listener is being added. Since flush may be called multiple times to push SSE's down to the client, multiple noop listeners are being added. This in turn causes the memory leak detected message. PR-URL: #3534 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 97e6504 commit 9866608

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

lib/zlib.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -444,10 +444,9 @@ Zlib.prototype.flush = function(kind, callback) {
444444
if (callback)
445445
this.once('end', callback);
446446
} else if (ws.needDrain) {
447-
var self = this;
448-
this.once('drain', function() {
449-
self.flush(kind, callback);
450-
});
447+
if (callback) {
448+
this.once('drain', () => this.flush(kind, callback));
449+
}
451450
} else {
452451
this._flushFlag = kind;
453452
this.write(new Buffer(0), '', callback);

0 commit comments

Comments
 (0)