mirror of https://github.com/lukechilds/node.git
Browse Source
Allow listening on reused dgram ports in cluster workers. Fix: https://github.com/joyent/node/issues/9261 PR-URL: https://github.com/nodejs/node/pull/2548 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>v4.x
Fedor Indutny
9 years ago
committed by
Rod Vagg
4 changed files with 87 additions and 23 deletions
@ -0,0 +1,40 @@ |
|||
'use strict'; |
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const cluster = require('cluster'); |
|||
const dgram = require('dgram'); |
|||
|
|||
if (common.isWindows) { |
|||
console.log('1..0 # Skipped: dgram clustering is currently not supported ' + |
|||
'on windows.'); |
|||
return; |
|||
} |
|||
|
|||
if (cluster.isMaster) { |
|||
cluster.fork().on('exit', function(code) { |
|||
assert.equal(code, 0); |
|||
}); |
|||
return; |
|||
} |
|||
|
|||
const sockets = []; |
|||
function next() { |
|||
sockets.push(this); |
|||
if (sockets.length !== 2) |
|||
return; |
|||
|
|||
// Work around health check issue
|
|||
process.nextTick(function() { |
|||
for (var i = 0; i < sockets.length; i++) |
|||
sockets[i].close(close); |
|||
}); |
|||
} |
|||
|
|||
var waiting = 2; |
|||
function close() { |
|||
if (--waiting === 0) |
|||
cluster.worker.disconnect(); |
|||
} |
|||
|
|||
for (var i = 0; i < 2; i++) |
|||
dgram.createSocket({ type: 'udp4', reuseAddr: true }).bind(common.PORT, next); |
Loading…
Reference in new issue