|
|
@ -27,33 +27,36 @@ var path = require('path'); |
|
|
|
var fs = require('fs'); |
|
|
|
var net = require('net'); |
|
|
|
|
|
|
|
// No win32 support so far
|
|
|
|
if (process.platform === 'win32') |
|
|
|
return; |
|
|
|
|
|
|
|
var socketPath = path.join(common.fixturesDir, 'socket-path'); |
|
|
|
|
|
|
|
if (cluster.isMaster) { |
|
|
|
cluster.fork(); |
|
|
|
} else { |
|
|
|
fs.writeFileSync(socketPath, 'some contents'); |
|
|
|
|
|
|
|
var server = net.createServer().listen(socketPath, function() { |
|
|
|
console.log('here'); |
|
|
|
}); |
|
|
|
|
|
|
|
var worker = cluster.fork(); |
|
|
|
var gotError = 0; |
|
|
|
server.on('error', function(err) { |
|
|
|
worker.on('message', function(err) { |
|
|
|
gotError++; |
|
|
|
assert(/EADDRINUSE/.test(err.message)); |
|
|
|
process.exit(); |
|
|
|
console.log(err); |
|
|
|
if (process.platform === 'win32') |
|
|
|
assert.strictEqual('EACCES', err.code); |
|
|
|
else |
|
|
|
assert.strictEqual('EADDRINUSE', err.code); |
|
|
|
worker.disconnect(); |
|
|
|
}); |
|
|
|
|
|
|
|
process.on('exit', function() { |
|
|
|
console.log('master exited'); |
|
|
|
try { |
|
|
|
fs.unlinkSync(socketPath); |
|
|
|
} catch (e) { |
|
|
|
} |
|
|
|
assert.equal(gotError, 1); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
fs.writeFileSync(socketPath, 'some contents'); |
|
|
|
|
|
|
|
var server = net.createServer().listen(socketPath, function() { |
|
|
|
console.log('here'); |
|
|
|
}); |
|
|
|
|
|
|
|
server.on('error', function(err) { |
|
|
|
process.send(err); |
|
|
|
}); |
|
|
|
} |
|
|
|