Skip to content

Commit

Permalink
net,http2: merge write error handling & property names
Browse files Browse the repository at this point in the history
Merge error handling for `net.Socket`s and `Http2Stream`s,
and align the callback property names as `callback`.

Refs: #19060

PR-URL: #19734
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Tobias Nießen <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
  • Loading branch information
addaleax authored and jasnell committed Apr 16, 2018
1 parent 2a3a66a commit e85c20b
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 22 deletions.
2 changes: 0 additions & 2 deletions lib/internal/http2/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -1657,7 +1657,6 @@ class Http2Stream extends Duplex {

const req = createWriteWrap(this[kHandle], afterDoStreamWrite);
req.stream = this[kID];
req.callback = cb;

writeGeneric(this, req, data, encoding, cb);

Expand Down Expand Up @@ -1690,7 +1689,6 @@ class Http2Stream extends Duplex {

var req = createWriteWrap(this[kHandle], afterDoStreamWrite);
req.stream = this[kID];
req.callback = cb;

writevGeneric(this, req, data, cb);

Expand Down
15 changes: 12 additions & 3 deletions lib/internal/stream_base_commons.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,24 @@ function writevGeneric(self, req, data, cb) {
// Retain chunks
if (err === 0) req._chunks = chunks;

if (err)
return self.destroy(errnoException(err, 'write', req.error), cb);
afterWriteDispatched(self, req, err, cb);
}

function writeGeneric(self, req, data, encoding, cb) {
var err = handleWriteReq(req, data, encoding);

if (err)
afterWriteDispatched(self, req, err, cb);
}

function afterWriteDispatched(self, req, err, cb) {
if (err !== 0)
return self.destroy(errnoException(err, 'write', req.error), cb);

if (!req.async) {
cb();
} else {
req.callback = cb;
}
}

module.exports = {
Expand Down
24 changes: 7 additions & 17 deletions lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -754,23 +754,13 @@ Socket.prototype._writeGeneric = function(writev, data, encoding, cb) {
return false;
}

var ret;
var req = createWriteWrap(this._handle, afterWrite);
if (writev)
ret = writevGeneric(this, req, data, cb);
writevGeneric(this, req, data, cb);
else
ret = writeGeneric(this, req, data, encoding, cb);

// Bail out if handle.write* returned an error
if (ret) return ret;

if (!req.async) {
cb();
return;
}

req.cb = cb;
this[kLastWriteQueueSize] = req.bytes;
writeGeneric(this, req, data, encoding, cb);
if (req.async)
this[kLastWriteQueueSize] = req.bytes;
};


Expand Down Expand Up @@ -845,7 +835,7 @@ function afterWrite(status, handle, err) {
if (status < 0) {
var ex = errnoException(status, 'write', this.error);
debug('write failure', ex);
self.destroy(ex, this.cb);
self.destroy(ex, this.callback);
return;
}

Expand All @@ -854,8 +844,8 @@ function afterWrite(status, handle, err) {
if (self !== process.stderr && self !== process.stdout)
debug('afterWrite call cb');

if (this.cb)
this.cb.call(undefined);
if (this.callback)
this.callback.call(undefined);
}


Expand Down

0 comments on commit e85c20b

Please sign in to comment.