Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions doc/api/deprecations.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2500,6 +2500,20 @@ Type: Runtime
Passing a callback to [`worker.terminate()`][] is deprecated. Use the returned
`Promise` instead, or a listener to the worker’s `'exit'` event.

<a id="DEP0XXX"></a>
### DEP0XXX: http connection
<!-- YAML
changes:
- version: REPLACEME
pr-url: https://github.com/nodejs/node/pull/29015
description: Documentation-only deprecation.
-->

Type: Documentation-only

Prefer [`response.socket`][] over [`response.connection`] and
[`request.socket`][] over [`request.connection`].

[`--http-parser=legacy`]: cli.html#cli_http_parser_library
[`--pending-deprecation`]: cli.html#cli_pending_deprecation
[`--throw-deprecation`]: cli.html#cli_throw_deprecation
Expand DownExpand Up@@ -2555,6 +2569,10 @@ Passing a callback to [`worker.terminate()`][] is deprecated. Use the returned
[`process.env`]: process.html#process_process_env
[`punycode`]: punycode.html
[`require.extensions`]: modules.html#modules_require_extensions
[`request.socket`]: http.html#http_request_socket
[`request.connection`]: http.html#http_request_connection
[`response.socket`]: http.html#http_response_socket
[`response.connection`]: http.html#http_response_connection
[`script.createCachedData()`]: vm.html#vm_script_createcacheddata
[`setInterval()`]: timers.html#timers_setinterval_callback_delay_args
[`setTimeout()`]: timers.html#timers_settimeout_callback_delay_args
Expand Down
6 changes: 6 additions & 0 deletions doc/api/http.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -568,8 +568,11 @@ been aborted.
### request.connection
<!-- YAML
added: v0.3.0
deprecated: REPLACEME
-->

> Stability: 0 - Deprecated. Use [`request.socket`][].

* {net.Socket}

See [`request.socket`][].
Expand DownExpand Up@@ -1145,10 +1148,13 @@ will result in a [`TypeError`][] being thrown.
### response.connection
<!-- YAML
added: v0.3.0
deprecated: REPLACEME
-->

* {net.Socket}

> Stability: 0 - Deprecated. Use [`response.socket`][].

See [`response.socket`][].

### response.end([data][, encoding][, callback])
Expand Down
16 changes: 16 additions & 0 deletions doc/api/http2.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2702,6 +2702,18 @@ added: v8.4.0
The request authority pseudo header field. It can also be accessed via
`req.headers[':authority']`.

#### request.connection
<!-- YAML
added: v8.4.0
deprecated: REPLACEME
-->

> Stability: 0 - Deprecated. Use [`request.socket`][].

* {net.Socket|tls.TLSSocket}

See [`request.socket`][].

#### request.destroy([error])
<!-- YAML
added: v8.4.0
Expand DownExpand Up@@ -2995,8 +3007,11 @@ will result in a [`TypeError`][] being thrown.
#### response.connection
<!-- YAML
added: v8.4.0
deprecated: REPLACEME
-->

> Stability: 0 - Deprecated. Use [`response.socket`][].

* {net.Socket|tls.TLSSocket}

See [`response.socket`][].
Expand DownExpand Up@@ -3497,6 +3512,7 @@ following additional properties:
[`net.Socket.prototype.unref()`]: net.html#net_socket_unref
[`net.Socket`]: net.html#net_class_net_socket
[`net.connect()`]: net.html#net_net_connect
[`request.socket`]: #http2_request_socket
[`request.socket.getPeerCertificate()`]: tls.html#tls_tlssocket_getpeercertificate_detailed
[`response.end()`]: #http2_response_end_data_encoding_callback
[`response.setHeader()`]: #http2_response_setheader_name_value
Expand Down
3 changes: 1 addition & 2 deletions lib/_http_client.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -299,7 +299,7 @@ Object.setPrototypeOf(ClientRequest.prototype, OutgoingMessage.prototype);
Object.setPrototypeOf(ClientRequest, OutgoingMessage);

ClientRequest.prototype._finish = function _finish() {
DTRACE_HTTP_CLIENT_REQUEST(this, this.connection);
DTRACE_HTTP_CLIENT_REQUEST(this, this.socket);
OutgoingMessage.prototype._finish.call(this);
};

Expand DownExpand Up@@ -643,7 +643,6 @@ function emitFreeNT(socket) {
function tickOnSocket(req, socket) {
const parser = parsers.alloc();
req.socket = socket;
req.connection = socket;
parser.initialize(HTTPParser.RESPONSE,
new HTTPClientAsyncResource('HTTPINCOMINGMESSAGE', req));
parser.socket = socket;
Expand Down
10 changes: 9 additions & 1 deletion lib/_http_incoming.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -42,7 +42,6 @@ function IncomingMessage(socket) {
this._readableState.readingMore = true;

this.socket = socket;
this.connection = socket;

this.httpVersionMajor = null;
this.httpVersionMinor = null;
Expand DownExpand Up@@ -76,6 +75,15 @@ function IncomingMessage(socket) {
Object.setPrototypeOf(IncomingMessage.prototype, Stream.Readable.prototype);
Object.setPrototypeOf(IncomingMessage, Stream.Readable);

Object.defineProperty(IncomingMessage.prototype, 'connection', {
get: function() {
return this.socket;
},
set: function(val) {
this.socket = val;
}
});

IncomingMessage.prototype.setTimeout = function setTimeout(msecs, callback) {
if (callback)
this.on('timeout', callback);
Expand Down
30 changes: 19 additions & 11 deletions lib/_http_outgoing.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -100,7 +100,6 @@ function OutgoingMessage() {
this[kIsCorked] = false;

this.socket = null;
this.connection = null;
this._header = null;
this[outHeadersKey] = null;

Expand DownExpand Up@@ -137,6 +136,15 @@ Object.defineProperty(OutgoingMessage.prototype, '_headers', {
}, 'OutgoingMessage.prototype._headers is deprecated', 'DEP0066')
});

Object.defineProperty(OutgoingMessage.prototype, 'connection', {
get: function() {
return this.socket;
},
set: function(val) {
this.socket = val;
}
});

Object.defineProperty(OutgoingMessage.prototype, '_headerNames', {
get: internalUtil.deprecate(function() {
const headers = this[outHeadersKey];
Expand DownExpand Up@@ -253,7 +261,7 @@ OutgoingMessage.prototype._send = function _send(data, encoding, callback) {

OutgoingMessage.prototype._writeRaw = _writeRaw;
function _writeRaw(data, encoding, callback) {
const conn = this.connection;
const conn = this.socket;
if (conn && conn.destroyed) {
// The socket was destroyed. If we're still trying to write to it,
// then we haven't gotten the 'close' event yet.
Expand DownExpand Up@@ -591,10 +599,10 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
['string', 'Buffer'], chunk);
}

if (!fromEnd && msg.connection && !msg[kIsCorked]) {
msg.connection.cork();
if (!fromEnd && msg.socket && !msg[kIsCorked]) {
msg.socket.cork();
msg[kIsCorked] = true;
process.nextTick(connectionCorkNT, msg, msg.connection);
process.nextTick(connectionCorkNT, msg, msg.socket);
}

var len, ret;
Expand DownExpand Up@@ -682,8 +690,8 @@ OutgoingMessage.prototype.end = function end(chunk, encoding, callback) {
else
this._contentLength = chunk.length;
}
if (this.connection) {
this.connection.cork();
if (this.socket) {
this.socket.cork();
uncork = true;
}
write_(this, chunk, encoding, null, true);
Expand All@@ -705,16 +713,16 @@ OutgoingMessage.prototype.end = function end(chunk, encoding, callback) {
}

if (uncork)
this.connection.uncork();
this.socket.uncork();

this.finished = true;

// There is the first message on the outgoing queue, and we've sent
// everything to the socket.
debug('outgoing message end.');
if (this.outputData.length === 0 &&
this.connection &&
this.connection._httpMessage === this) {
this.socket &&
this.socket._httpMessage === this) {
this._finish();
}

Expand All@@ -723,7 +731,7 @@ OutgoingMessage.prototype.end = function end(chunk, encoding, callback) {


OutgoingMessage.prototype._finish = function _finish() {
assert(this.connection);
assert(this.socket);
this.emit('prefinish');
};

Expand Down
5 changes: 2 additions & 3 deletions lib/_http_server.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -167,7 +167,7 @@ Object.setPrototypeOf(ServerResponse.prototype, OutgoingMessage.prototype);
Object.setPrototypeOf(ServerResponse, OutgoingMessage);

ServerResponse.prototype._finish = function _finish() {
DTRACE_HTTP_SERVER_RESPONSE(this.connection);
DTRACE_HTTP_SERVER_RESPONSE(this.socket);
if (this[kServerResponseStatistics] !== undefined) {
emitStatistics(this[kServerResponseStatistics]);
}
Expand DownExpand Up@@ -205,7 +205,6 @@ ServerResponse.prototype.assignSocket = function assignSocket(socket) {
socket._httpMessage = this;
socket.on('close', onServerResponseClose);
this.socket = socket;
this.connection = socket;
this.emit('socket', socket);
this._flush();
};
Expand All@@ -214,7 +213,7 @@ ServerResponse.prototype.detachSocket = function detachSocket(socket) {
assert(socket._httpMessage === this);
socket.removeListener('close', onServerResponseClose);
socket._httpMessage = null;
this.socket = this.connection = null;
this.socket = null;
};

ServerResponse.prototype.writeContinue = function writeContinue(cb) {
Expand Down