Skip to content

0.12.7 vs 4.1.1 - Are there some changes in net.Socket? #3056

Description

@o5

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

  1. some timeouts aren't ~1000ms
  2. 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!

Activity

  1. changed the title [-]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?[/+] on Sep 24, 2015
  2. changed the title [-]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?[/+] on Sep 24, 2015
  3. added
    questionIssues asking questions about Node.js.
    netIssues and PRs related to the net subsystem.
    on Sep 25, 2015
  4. brendanashworth commented on Sep 25, 2015

    @brendanashworth
    Contributor

    I don't believe any major changes have landed in the net module since io.js's first release. Is the test case reliable? Perhaps you'd like to git bisect over the code base?

  5. o5 commented on Sep 25, 2015

    @o5
    Author

    @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?

  6. brendanashworth commented on Sep 25, 2015

    @brendanashworth
    Contributor

    @o5 after changing the IP to 127.0.0.1, I only get ECONNREFUSED for all (including :80), regardless of node version.

  7. o5 commented on Sep 25, 2015

    @o5
    Author

    @brendanashworth that is possible, but I don't want to scan local network.

  8. o5 commented on Sep 25, 2015

    @o5
    Author

    Its interesting, when you remove the "server wrapper", it works fine.

  9. mscdex commented on Sep 25, 2015

    @mscdex
    Contributor

    It's also better to have a reproducible example that excludes any/all third party modules.

  10. Fishrock123 commented on Sep 26, 2015

    @Fishrock123
    Contributor

    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.

  11. rvagg commented on Sep 29, 2015

    @rvagg
    Member

    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

  12. reopened this on Sep 29, 2015
  13. self-assigned this
    on Oct 6, 2015
  14. Fishrock123 commented on Oct 6, 2015

    @Fishrock123
    Contributor

    @rvagg hmmm, ok, I'll have a look this week if I get the chance.

  15. o5 commented on Oct 9, 2015

    @o5
    Author

    Same for v4.1.2 :-/

  16. Fishrock123 commented on Oct 9, 2015

    @Fishrock123
    Contributor

    Yes, until you hear here nothing will have changed. :)

    On Oct 9, 2015, at 1:10 PM, Petr Bugyík notifications@github.com wrote:

    Same for v4.1.2 :-/

    —
    Reply to this email directly or view it on GitHub.

  17. o5 commented on Oct 30, 2015

    @o5
    Author

    Can anyone confirm this bug?

  18. evanlucas commented on Feb 2, 2016

    @evanlucas
    Contributor

    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!

  19. jasnell commented on Mar 22, 2016

    @jasnell
    Member

    Closing for lack of any updates. Can reopen if necessary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

netIssues and PRs related to the net subsystem.questionIssues asking questions about Node.js.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions