Skip to content

Commit 47a2522

Browse files
theanarkhtargos
authored andcommitted
net: fix net.Server keepalive and noDelay
PR-URL: #43497 Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
1 parent 491c761 commit 47a2522

File tree

3 files changed

+52
-5
lines changed

3 files changed

+52
-5
lines changed

lib/net.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -1659,12 +1659,11 @@ function onconnection(err, clientHandle) {
16591659
writable: true
16601660
});
16611661

1662-
if (self.noDelay && handle.setNoDelay) {
1663-
handle.setNoDelay(true);
1662+
if (self.noDelay && clientHandle.setNoDelay) {
1663+
clientHandle.setNoDelay(true);
16641664
}
1665-
1666-
if (self.keepAlive && self.setKeepAlive) {
1667-
handle.setKeepAlive(true, handle.keepAliveInitialDelay);
1665+
if (self.keepAlive && clientHandle.setKeepAlive) {
1666+
clientHandle.setKeepAlive(true, self.keepAliveInitialDelay);
16681667
}
16691668

16701669
self._connections++;
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
'use strict';
2+
const common = require('../common');
3+
const assert = require('assert');
4+
const net = require('net');
5+
6+
const server = net.createServer({
7+
keepAlive: true,
8+
keepAliveInitialDelay: 1000
9+
}, common.mustCall((socket) => {
10+
socket.destroy();
11+
server.close();
12+
})).listen(0, common.mustCall(() => {
13+
net.connect(server.address().port);
14+
}));
15+
16+
const onconnection = server._handle.onconnection;
17+
server._handle.onconnection = common.mustCall((err, clientHandle) => {
18+
const setKeepAlive = clientHandle.setKeepAlive;
19+
clientHandle.setKeepAlive = common.mustCall((enable, initialDelayMsecs) => {
20+
assert.strictEqual(enable, server.keepAlive);
21+
assert.strictEqual(initialDelayMsecs, server.keepAliveInitialDelay);
22+
setKeepAlive.call(clientHandle, enable, initialDelayMsecs);
23+
});
24+
onconnection.call(server._handle, err, clientHandle);
25+
});
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict';
2+
const common = require('../common');
3+
const assert = require('assert');
4+
const net = require('net');
5+
6+
const server = net.createServer({
7+
noDelay: true
8+
}, common.mustCall((socket) => {
9+
socket.destroy();
10+
server.close();
11+
})).listen(0, common.mustCall(() => {
12+
net.connect(server.address().port);
13+
}));
14+
15+
const onconnection = server._handle.onconnection;
16+
server._handle.onconnection = common.mustCall((err, clientHandle) => {
17+
const setNoDelay = clientHandle.setNoDelay;
18+
clientHandle.setNoDelay = common.mustCall((enable) => {
19+
assert.strictEqual(enable, server.noDelay);
20+
setNoDelay.call(clientHandle, enable);
21+
});
22+
onconnection.call(server._handle, err, clientHandle);
23+
});

0 commit comments

Comments
 (0)