http-party / node-portfinder

A simple tool to find an open port or domain socket on the current machine
https://github.com/http-party/node-portfinder
Other
882 stars 95 forks source link

`testPort` gets called with `65536` #147

Open fryorcraken opened 1 year ago

fryorcraken commented 1 year ago

Somehow, the library tests an invalid port:

Uncaught RangeError [ERR_SOCKET_BAD_PORT]: options.port should be >= 0 and < 65536. Received type number (65536).
      at new NodeError (node:internal/errors:399:5)
      at validatePort (node:internal/validators:390:11)
      at Server.listen (node:net:1868:5)
      at Object.internals.testPort (/home/runner/work/js-waku/js-waku/node_modules/portfinder/lib/portfinder.js:72:20)
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/lib/portfinder.js:154:22
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:3113:16
      at replenish (/home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:1014:17)
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:1019:9
      at eachLimit$1 (/home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:3199:24)
      at Object.<anonymous> (/home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:1049:16)
      at Object.exports.getPort (/home/runner/work/js-waku/js-waku/node_modules/portfinder/lib/portfinder.js:151:17)
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/lib/portfinder.js:258:13
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:1138:9
      at replenish (/home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:1014:17)
      at iterateeCallback (/home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:998:17)
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:972:16
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:1140:13
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/lib/portfinder.js:263:9
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/lib/portfinder.js:202:16
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:473:16
      at replenish (/home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:1009:25)
      at iterateeCallback (/home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:998:17)
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/node_modules/async/dist/async.js:972:16
      at /home/runner/work/js-waku/js-waku/node_modules/portfinder/lib/portfinder.js:163:16
      at Server.onListen (/home/runner/work/js-waku/js-waku/node_modules/portfinder/lib/portfinder.js:43:5)
      at Object.onceWrapper (node:events:627:28)
      at Server.emit (node:events:513:28)
      at Server.emit (node:domain:489:12)
      at emitListeningNT (node:net:1774:10)
      at processTicksAndRejections (node:internal/process/task_queues:81:21)

I called the library with a random port as some calls are done in parallel and I had conflict issues in the past:

    const startPort = Math.floor(Math.random() * (65535 - 1025) + 1025);

    const ports: number[] = await new Promise((resolve, reject) => {
      portfinder.getPorts(4, { port: startPort }, (err, ports) => {
        if (err) reject(err);
        resolve(ports);
      });
    });

I was expecting this error to be thrown instead:

https://github.com/http-party/node-portfinder/blob/123a06f8028288a0f196cef4bf1346f818a8cd73/lib/portfinder.js#L58