net,http2: merge write error handling & property names
Merge error handling for `net.Socket`s and `Http2Stream`s, and align the callback property names as `callback`. Refs: https://github.com/nodejs/node/issues/19060 PR-URL: https://github.com/nodejs/node/pull/19734 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit is contained in:
Родитель
2a3a66afb3
Коммит
e85c20b511
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 = {
|
||||
|
|
24
lib/net.js
24
lib/net.js
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче