Revert "test: don't assume broadcast traffic is unfiltered"
authorBen Noordhuis <info@bnoordhuis.nl>
Thu, 8 Jan 2015 10:42:34 +0000 (11:42 +0100)
committerBen Noordhuis <info@bnoordhuis.nl>
Thu, 8 Jan 2015 12:17:17 +0000 (13:17 +0100)
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>
test/parallel/test-dgram-broadcast-multi-process.js

index b05abd8..4d9eebc 100644 (file)
@@ -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,