diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2015-01-08 11:42:34 +0100 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2015-01-08 13:17:17 +0100 |
commit | df3c4ca16ed2c72b72ea261753a910548d097e87 (patch) | |
tree | 440b34a8106c4f916ac30b427b1fa168b3746616 /test | |
parent | 4519db0407e394170eee958920112f153c27912a (diff) | |
download | node-new-df3c4ca16ed2c72b72ea261753a910548d097e87.tar.gz |
Revert "test: don't assume broadcast traffic is unfiltered"
This reverts commit 52e600a9c8655f578fae55d85e778b58d731201a.
Reverted for:
* making the test fail with ENETUNREACH on OS X 10.8, and
* making the test fail with EHOSTDOWN on OS X 10.9 and 10.10 when there
is no network connectivity, and
* leaving behind orphan processes that make subsequent tests fail with
EADDRINUSE errors
PR-URL: https://github.com/iojs/io.js/pull/259
Reviewed-By: Rod Vagg <rod@vagg.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-dgram-broadcast-multi-process.js | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/test/parallel/test-dgram-broadcast-multi-process.js b/test/parallel/test-dgram-broadcast-multi-process.js index b05abd8d4f..4d9eebc101 100644 --- a/test/parallel/test-dgram-broadcast-multi-process.js +++ b/test/parallel/test-dgram-broadcast-multi-process.js @@ -23,6 +23,7 @@ var common = require('../common'), assert = require('assert'), dgram = require('dgram'), util = require('util'), + networkInterfaces = require('os').networkInterfaces(), Buffer = require('buffer').Buffer, fork = require('child_process').fork, LOCAL_BROADCAST_HOST = '255.255.255.255', @@ -34,6 +35,19 @@ var common = require('../common'), new Buffer('Fourth message to send') ]; +// take the first non-internal interface as the address for binding +get_bindAddress: for (var name in networkInterfaces) { + var interfaces = networkInterfaces[name]; + for(var i = 0; i < interfaces.length; i++) { + var localInterface = interfaces[i]; + if (!localInterface.internal && localInterface.family === 'IPv4') { + var bindAddress = localInterface.address; + break get_bindAddress; + } + } +} +assert.ok(bindAddress); + if (process.argv[2] !== 'child') { var workers = {}, listeners = 3, @@ -150,7 +164,7 @@ if (process.argv[2] !== 'child') { // bind the address explicitly for sending // INADDR_BROADCAST to only one interface - sendSocket.bind(common.PORT, '127.0.0.1'); + sendSocket.bind(common.PORT, bindAddress); sendSocket.on('listening', function () { sendSocket.setBroadcast(true); }); @@ -197,7 +211,7 @@ if (process.argv[2] === 'child') { listenSocket.on('message', function(buf, rinfo) { // receive udp messages only sent from parent - if (rinfo.address !== '127.0.0.1') return; + if (rinfo.address !== bindAddress) return; console.error('[CHILD] %s received %s from %j', process.pid, |