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: https://github.com/nodejs/node/pull/3534 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
fa27c5634b
commit
1736ad8264
@ -444,10 +444,9 @@ Zlib.prototype.flush = function(kind, callback) {
|
||||
if (callback)
|
||||
this.once('end', callback);
|
||||
} else if (ws.needDrain) {
|
||||
var self = this;
|
||||
this.once('drain', function() {
|
||||
self.flush(kind, callback);
|
||||
});
|
||||
if (callback) {
|
||||
this.once('drain', () => this.flush(kind, callback));
|
||||
}
|
||||
} else {
|
||||
this._flushFlag = kind;
|
||||
this.write(new Buffer(0), '', callback);
|
||||
|
Loading…
x
Reference in New Issue
Block a user