Skip to content

Commit e914075

Browse files
committed
http,net: return this from setTimeout methods
Modifies the setTimeout methods for the following prototypes: - http.ClientRequest - http.IncomingMessage - http.OutgoingMessage - http.Server - net.Socket Previously, the above functions returned undefined. They now return `this`. This is useful for chaining function calls.
1 parent 4e2f999 commit e914075

11 files changed

+38
-13
lines changed

doc/api/http.markdown

+8
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ destroyed automatically if they time out. However, if you assign a
231231
callback to the Server's `'timeout'` event, then you are responsible
232232
for handling socket timeouts.
233233

234+
Returns `server`.
235+
234236
### server.timeout
235237

236238
* {Number} Default = 120000 (2 minutes)
@@ -318,6 +320,8 @@ assign a handler on the request, the response, or the server's
318320
`'timeout'` events, then it is your responsibility to handle timed out
319321
sockets.
320322

323+
Returns `response`.
324+
321325
### response.statusCode
322326

323327
When using implicit headers (not calling [response.writeHead()][] explicitly),
@@ -914,6 +918,8 @@ Aborts a request. (New since v0.3.8.)
914918
Once a socket is assigned to this request and is connected
915919
[socket.setTimeout()][] will be called.
916920

921+
Returns `request`.
922+
917923
### request.setNoDelay([noDelay])
918924

919925
Once a socket is assigned to this request and is connected
@@ -1003,6 +1009,8 @@ received. Only populated at the 'end' event.
10031009

10041010
Calls `message.connection.setTimeout(msecs, callback)`.
10051011

1012+
Returns `message`.
1013+
10061014
### message.method
10071015

10081016
**Only valid for request obtained from [http.Server][].**

doc/api/net.markdown

+3-1
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ For TCP sockets, `options` argument should be an object which specifies:
355355
- `localPort`: Local port to bind to for network connections.
356356

357357
- `family` : Version of IP stack. Defaults to `4`.
358-
358+
359359
- `lookup` : Custom lookup function. Defaults to `dns.lookup`.
360360

361361
For local domain sockets, `options` argument should be an object which
@@ -451,6 +451,8 @@ If `timeout` is 0, then the existing idle timeout is disabled.
451451
The optional `callback` parameter will be added as a one time listener for the
452452
`'timeout'` event.
453453

454+
Returns `socket`.
455+
454456
### socket.setNoDelay([noDelay])
455457

456458
Disables the Nagle algorithm. By default TCP connections use the Nagle

lib/_http_client.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,7 @@ ClientRequest.prototype.setTimeout = function(msecs, callback) {
538538
this.socket.setTimeout(0, this.timeoutCb);
539539
this.timeoutCb = emitTimeout;
540540
this.socket.setTimeout(msecs, emitTimeout);
541-
return;
541+
return this;
542542
}
543543

544544
// Set timeoutCb so that it'll get cleaned up on request end
@@ -548,12 +548,14 @@ ClientRequest.prototype.setTimeout = function(msecs, callback) {
548548
this.socket.once('connect', function() {
549549
sock.setTimeout(msecs, emitTimeout);
550550
});
551-
return;
551+
return this;
552552
}
553553

554554
this.once('socket', function(sock) {
555555
sock.setTimeout(msecs, emitTimeout);
556556
});
557+
558+
return this;
557559
};
558560

559561
ClientRequest.prototype.setNoDelay = function() {

lib/_http_incoming.js

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ IncomingMessage.prototype.setTimeout = function(msecs, callback) {
6868
if (callback)
6969
this.on('timeout', callback);
7070
this.socket.setTimeout(msecs);
71+
return this;
7172
};
7273

7374

lib/_http_outgoing.js

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ OutgoingMessage.prototype.setTimeout = function(msecs, callback) {
8888
} else {
8989
this.socket.setTimeout(msecs);
9090
}
91+
return this;
9192
};
9293

9394

lib/_http_server.js

+1
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ Server.prototype.setTimeout = function(msecs, callback) {
243243
this.timeout = msecs;
244244
if (callback)
245245
this.on('timeout', callback);
246+
return this;
246247
};
247248

248249

lib/net.js

+1
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ Socket.prototype.setTimeout = function(msecs, callback) {
310310
this.once('timeout', callback);
311311
}
312312
}
313+
return this;
313314
};
314315

315316

test/parallel/test-http-client-timeout.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ server.listen(options.port, options.host, function() {
2323
function destroy() {
2424
req.destroy();
2525
}
26-
req.setTimeout(1, destroy);
26+
var s = req.setTimeout(1, destroy);
27+
assert.ok(s instanceof http.ClientRequest);
2728
req.on('error', destroy);
2829
req.end();
2930
});

test/parallel/test-http-set-timeout-server.js

+12-6
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ test(function serverTimeout(cb) {
2929
// just do nothing, we should get a timeout event.
3030
});
3131
server.listen(common.PORT);
32-
server.setTimeout(50, function(socket) {
32+
var s = server.setTimeout(50, function(socket) {
3333
caughtTimeout = true;
3434
socket.destroy();
3535
server.close();
3636
cb();
3737
});
38+
assert.ok(s instanceof http.Server);
3839
http.get({ port: common.PORT }).on('error', function() {});
3940
});
4041

@@ -45,12 +46,13 @@ test(function serverRequestTimeout(cb) {
4546
});
4647
var server = http.createServer(function(req, res) {
4748
// just do nothing, we should get a timeout event.
48-
req.setTimeout(50, function() {
49+
var s = req.setTimeout(50, function() {
4950
caughtTimeout = true;
5051
req.socket.destroy();
5152
server.close();
5253
cb();
5354
});
55+
assert.ok(s instanceof http.IncomingMessage);
5456
});
5557
server.listen(common.PORT);
5658
var req = http.request({ port: common.PORT, method: 'POST' });
@@ -66,12 +68,13 @@ test(function serverResponseTimeout(cb) {
6668
});
6769
var server = http.createServer(function(req, res) {
6870
// just do nothing, we should get a timeout event.
69-
res.setTimeout(50, function() {
71+
var s = res.setTimeout(50, function() {
7072
caughtTimeout = true;
7173
res.socket.destroy();
7274
server.close();
7375
cb();
7476
});
77+
assert.ok(s instanceof http.OutgoingMessage);
7578
});
7679
server.listen(common.PORT);
7780
http.get({ port: common.PORT }).on('error', function() {});
@@ -86,9 +89,10 @@ test(function serverRequestNotTimeoutAfterEnd(cb) {
8689
});
8790
var server = http.createServer(function(req, res) {
8891
// just do nothing, we should get a timeout event.
89-
req.setTimeout(50, function(socket) {
92+
var s = req.setTimeout(50, function(socket) {
9093
caughtTimeoutOnRequest = true;
9194
});
95+
assert.ok(s instanceof http.IncomingMessage);
9296
res.on('timeout', function(socket) {
9397
caughtTimeoutOnResponse = true;
9498
});
@@ -108,9 +112,10 @@ test(function serverResponseTimeoutWithPipeline(cb) {
108112
assert.equal(caughtTimeout, '/2');
109113
});
110114
var server = http.createServer(function(req, res) {
111-
res.setTimeout(50, function() {
115+
var s = res.setTimeout(50, function() {
112116
caughtTimeout += req.url;
113117
});
118+
assert.ok(s instanceof http.OutgoingMessage);
114119
if (req.url === '/1') res.end();
115120
});
116121
server.on('timeout', function(socket) {
@@ -144,12 +149,13 @@ test(function idleTimeout(cb) {
144149
});
145150
res.end();
146151
});
147-
server.setTimeout(50, function(socket) {
152+
var s = server.setTimeout(50, function(socket) {
148153
caughtTimeoutOnServer = true;
149154
socket.destroy();
150155
server.close();
151156
cb();
152157
});
158+
assert.ok(s instanceof http.Server);
153159
server.listen(common.PORT);
154160
var c = net.connect({ port: common.PORT, allowHalfOpen: true }, function() {
155161
c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n');

test/parallel/test-http-set-timeout.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
var common = require('../common');
22
var assert = require('assert');
33
var http = require('http');
4+
var net = require('net');
45

56
var server = http.createServer(function(req, res) {
67
console.log('got request. setting 1 second timeout');
7-
req.connection.setTimeout(500);
8-
8+
var s = req.connection.setTimeout(500);
9+
assert.ok(s instanceof net.Socket);
910
req.connection.on('timeout', function() {
1011
req.connection.destroy();
1112
common.debug('TIMEOUT');

test/parallel/test-net-settimeout.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ var left = killers.length;
1818
killers.forEach(function(killer) {
1919
var socket = net.createConnection(common.PORT, 'localhost');
2020

21-
socket.setTimeout(T, function() {
21+
var s = socket.setTimeout(T, function() {
2222
socket.destroy();
2323
if (--left === 0) server.close();
2424
assert.ok(killer !== 0);
2525
clearTimeout(timeout);
2626
});
27+
assert.ok(s instanceof net.Socket);
2728

2829
socket.setTimeout(killer);
2930

0 commit comments

Comments
 (0)