summaryrefslogtreecommitdiff
path: root/test/parallel/test-dgram-bind-error-repeat.js
blob: a520d30a519cd288cb4f2bbc5a6d4ba147818245 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
'use strict';
const common = require('../common');
const dgram = require('dgram');

// Regression test for https://github.com/nodejs/node/issues/30209
// No warning should be emitted when re-trying `.bind()` on UDP sockets
// repeatedly.

process.on('warning', common.mustNotCall());

const reservePortSocket = dgram.createSocket('udp4');
reservePortSocket.bind(() => {
  const { port } = reservePortSocket.address();

  const newSocket = dgram.createSocket('udp4');

  let errors = 0;
  newSocket.on('error', common.mustCall(() => {
    if (++errors < 20) {
      newSocket.bind(port, common.mustNotCall());
    } else {
      newSocket.close();
      reservePortSocket.close();
    }
  }, 20));
  newSocket.bind(port, common.mustNotCall());
});