Repository navigation
0.12.7 vs 4.1.1 - Are there some changes in net.Socket? #3056
Copy link
Copy link
Closed
Labels
netIssues and PRs related to the net subsystem.Issues and PRs related to the net subsystem.questionIssues asking questions about Node.js.Issues asking questions about Node.js.
Description
Hi,
I created a small micro-service called "Port Checker Tool", but today, I tried to upgrade from v0.12.7 to v4.1.1 but service doesn't work for now.
I prepared a small code for reproduction. It does nothing special, it creates a HTTP server, listen on port 8000 and when you open http://localhost:8000/start in your browser, it will create a sync queue with ports for checking connection (is connection on some port is open or not). I'm using a last version of async library "async": "~1.4.2".
index.js
var Http = require('http'),
Net = require('net'),
Async = require('async');
var server = Http.createServer(function(request, response) {
if (request.url === '/start') {
var queue = Async.queue(function(port, done) {
console.time('PORT:' + port);
var socket = new Net.Socket();
socket.setTimeout(1000);
socket.connect(port, '173.194.122.7', function () {
console.timeEnd('PORT:' + port);
console.log('OPEN\n');
socket.destroy();
done();
});
socket.on('error', function (e) {
console.timeEnd('PORT:' + port);
console.log('ERROR:', e, '\n');
socket.destroy();
done();
});
socket.on('timeout', function () {
console.timeEnd('PORT:' + port);
console.log('CLOSED\n');
socket.destroy();
done();
});
}, 1);
queue.push([70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90]);
queue.drain = function() {
console.log('THE END!');
};
}
response.end('OK');
});
server.listen(8000);There are two differences when node is 4.1.1
- some timeouts aren't ~1000ms
- some check ends with error
There is an output from terminal, when I use an old version of Node.
[~/]$ node -v
v0.12.7
[~/]$ node index.js
PORT:70: 1009ms
CLOSED
PORT:72: 1002ms
CLOSED
PORT:74: 1004ms
CLOSED
PORT:76: 1003ms
CLOSED
PORT:78: 1005ms
CLOSED
PORT:80: 15ms
OPEN
PORT:82: 1003ms
CLOSED
PORT:84: 1004ms
CLOSED
PORT:86: 1003ms
CLOSED
PORT:88: 1004ms
CLOSED
PORT:90: 1004ms
CLOSED
THE END!and there for new Node.js.
[~/]$ node -v
v4.1.1
[~/]$ node index.js
PORT:70: 1007ms
CLOSED
PORT:72: 75187ms
ERROR: { [Error: connect ETIMEDOUT 173.194.122.7:72]
code: 'ETIMEDOUT',
errno: 'ETIMEDOUT',
syscall: 'connect',
address: '173.194.122.7',
port: 72 }
PORT:74: 1002ms
CLOSED
PORT:76: 43151ms
CLOSED
PORT:78: 1003ms
CLOSED
PORT:80: 61ms
OPEN
PORT:82: 1005ms
CLOSED
PORT:84: 1004ms
CLOSED
PORT:86: 1003ms
CLOSED
PORT:88: 1003ms
CLOSED
PORT:90: 1006ms
CLOSED
THE END!Maybe, I have something wrong with my code which work only with old version of node.
OSX 10.10.5
Thank you!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
netIssues and PRs related to the net subsystem.Issues and PRs related to the net subsystem.questionIssues asking questions about Node.js.Issues asking questions about Node.js.
Activity
[-]Node.js v0.12.7 vs Node.js v4.1.1 - Are there some changes in net.Socket class?[/-][+]0.12.7 vs 4.1.1 - Are there some changes in net.Socket class?[/+][-]0.12.7 vs 4.1.1 - Are there some changes in net.Socket class?[/-][+]0.12.7 vs 4.1.1 - Are there some changes in net.Socket?[/+]brendanashworth commentedon Sep 25, 2015
I don't believe any major changes have landed in the
netmodule since io.js's first release. Is the test case reliable? Perhaps you'd like togit bisectover the code base?o5 commentedon Sep 25, 2015
@brendanashworth I don't understand, what should I do more now. I added the minimal code for reproduction, did you try it? Did you same results?
brendanashworth commentedon Sep 25, 2015
@o5 after changing the IP to
127.0.0.1, I only getECONNREFUSEDfor all (including:80), regardless of node version.o5 commentedon Sep 25, 2015
@brendanashworth that is possible, but I don't want to scan local network.
o5 commentedon Sep 25, 2015
Its interesting, when you remove the "server wrapper", it works fine.
mscdex commentedon Sep 25, 2015
It's also better to have a reproducible example that excludes any/all third party modules.
Fishrock123 commentedon Sep 26, 2015
Please see https://github.com/nodejs/node/wiki/API-changes-between-v0.10-and-v4#net
It's possible that there were more changes than that, but I did an awful lot of digging and didn't find anything else.
rvagg commentedon Sep 29, 2015
libuv is likely where changes have occurred that impact on this, perhaps have a scan through the libuv changelog to see if anything stands out
Fishrock123 commentedon Oct 6, 2015
@rvagg hmmm, ok, I'll have a look this week if I get the chance.
o5 commentedon Oct 9, 2015
Same for v4.1.2 :-/
Fishrock123 commentedon Oct 9, 2015
Yes, until you hear here nothing will have changed. :)
o5 commentedon Oct 30, 2015
Can anyone confirm this bug?
evanlucas commentedon Feb 2, 2016
Can you try running this with the latest stable? The latest stable version is v5.5.0. I am not able to reproduce the issue on it. Thanks!
jasnell commentedon Mar 22, 2016
Closing for lack of any updates. Can reopen if necessary.