mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
http: remove internal error in assignSocket
Change ServerResponse.assignSocket to not throw an internal error, but an error with its own code. Signed-off-by: Matteo Collina <hello@matteocollina.com> PR-URL: https://github.com/nodejs/node/pull/47723 Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
This commit is contained in:
parent
d2156f1bf0
commit
46c3f4da05
@ -1438,6 +1438,12 @@ Status code was outside the regular status code range (100-999).
|
||||
|
||||
The client has not sent the entire request within the allowed time.
|
||||
|
||||
<a id="ERR_HTTP_SOCKET_ASSIGNED"></a>
|
||||
|
||||
### `ERR_HTTP_SOCKET_ASSIGNED`
|
||||
|
||||
The given [`ServerResponse`][] was already assigned a socket.
|
||||
|
||||
<a id="ERR_HTTP_SOCKET_ENCODING"></a>
|
||||
|
||||
### `ERR_HTTP_SOCKET_ENCODING`
|
||||
@ -3590,6 +3596,7 @@ The native call from `process.cpuUsage` could not be processed.
|
||||
[`Object.getPrototypeOf`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf
|
||||
[`Object.setPrototypeOf`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf
|
||||
[`REPL`]: repl.md
|
||||
[`ServerResponse`]: http.md#class-httpserverresponse
|
||||
[`Writable`]: stream.md#class-streamwritable
|
||||
[`child_process`]: child_process.md
|
||||
[`cipher.getAuthTag()`]: crypto.md#ciphergetauthtag
|
||||
|
@ -75,6 +75,7 @@ const {
|
||||
ERR_HTTP_HEADERS_SENT,
|
||||
ERR_HTTP_INVALID_STATUS_CODE,
|
||||
ERR_HTTP_SOCKET_ENCODING,
|
||||
ERR_HTTP_SOCKET_ASSIGNED,
|
||||
ERR_INVALID_ARG_VALUE,
|
||||
ERR_INVALID_CHAR,
|
||||
} = codes;
|
||||
@ -276,7 +277,9 @@ function onServerResponseClose() {
|
||||
}
|
||||
|
||||
ServerResponse.prototype.assignSocket = function assignSocket(socket) {
|
||||
assert(!socket._httpMessage);
|
||||
if (socket._httpMessage) {
|
||||
throw new ERR_HTTP_SOCKET_ASSIGNED();
|
||||
}
|
||||
socket._httpMessage = this;
|
||||
socket.on('close', onServerResponseClose);
|
||||
this.socket = socket;
|
||||
|
@ -1162,6 +1162,8 @@ E('ERR_HTTP_INVALID_HEADER_VALUE',
|
||||
'Invalid value "%s" for header "%s"', TypeError);
|
||||
E('ERR_HTTP_INVALID_STATUS_CODE', 'Invalid status code: %s', RangeError);
|
||||
E('ERR_HTTP_REQUEST_TIMEOUT', 'Request timeout', Error);
|
||||
E('ERR_HTTP_SOCKET_ASSIGNED',
|
||||
'ServerResponse has an already assigned socket', Error);
|
||||
E('ERR_HTTP_SOCKET_ENCODING',
|
||||
'Changing the socket encoding is not allowed per RFC7230 Section 3.', Error);
|
||||
E('ERR_HTTP_TRAILER_INVALID',
|
||||
|
@ -31,4 +31,10 @@ const ws = new Writable({
|
||||
|
||||
res.assignSocket(ws);
|
||||
|
||||
assert.throws(function() {
|
||||
res.assignSocket(ws);
|
||||
}, {
|
||||
code: 'ERR_HTTP_SOCKET_ASSIGNED'
|
||||
});
|
||||
|
||||
res.end('hello world');
|
||||
|
Loading…
Reference in New Issue
Block a user