Skip to content

Commit

Permalink
net, tls, http: remove socket.ondrain
Browse files Browse the repository at this point in the history
Replace the ondrain hack with a regular 'drain' listener. Speeds up the
bytes/1024 http benchmark by about 1.2%.
  • Loading branch information
bnoordhuis committed Jan 24, 2012
1 parent 5988872 commit e806ad3
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 11 deletions.
14 changes: 8 additions & 6 deletions lib/http.js
Original file line number Diff line number Diff line change
Expand Up @@ -1406,13 +1406,15 @@ exports.get = function(options, cb) {
return req;
};


function ondrain() {
if (this._httpMessage) this._httpMessage.emit('drain');
}


function httpSocketSetup(socket) {
// NOTE: be sure not to use ondrain elsewhere in this file!
socket.ondrain = function() {
if (socket._httpMessage) {
socket._httpMessage.emit('drain');
}
};
socket.removeListener('drain', ondrain);
socket.on('drain', ondrain);
}


Expand Down
2 changes: 0 additions & 2 deletions lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -516,8 +516,6 @@ function afterWrite(status, handle, req, buffer) {
self._pendingWriteReqs--;

if (self._pendingWriteReqs == 0) {
// TODO remove all uses of ondrain - this is not a good hack.
if (self.ondrain) self.ondrain();
self.emit('drain');
}

Expand Down
3 changes: 0 additions & 3 deletions lib/tls.js
Original file line number Diff line number Diff line change
Expand Up @@ -461,9 +461,6 @@ CryptoStream.prototype._pull = function() {
debug('drain ' + (this === this.pair.cleartext ? 'clear' : 'encrypted'));
var self = this;
process.nextTick(function() {
if (typeof self.ondrain === 'function') {
self.ondrain();
}
self.emit('drain');
});
this._needDrain = false;
Expand Down

0 comments on commit e806ad3

Please sign in to comment.