Skip to content

Commit

Permalink
http: replace superfluous connection property with getter/setter
Browse files Browse the repository at this point in the history
PR-URL: #29015
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
  • Loading branch information
ronag authored and Trott committed Aug 17, 2019
1 parent 6f613d8 commit 0daec61
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 17 deletions.
18 changes: 18 additions & 0 deletions doc/api/deprecations.md
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 Down Expand 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
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 Down Expand Up @@ -1166,10 +1169,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
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 Down Expand 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 Down Expand Up @@ -3508,6 +3523,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
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 Down Expand 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
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 Down Expand 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
Expand Up @@ -102,7 +102,6 @@ function OutgoingMessage() {
this[kIsCorked] = false;

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

Expand Down Expand Up @@ -157,6 +156,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[kOutHeaders];
Expand Down Expand Up @@ -273,7 +281,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 Down Expand Up @@ -615,10 +623,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 Down Expand Up @@ -706,8 +714,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 @@ -729,16 +737,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 @@ -747,7 +755,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
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 Down Expand 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

0 comments on commit 0daec61

Please sign in to comment.