Skip to content

Commit

Permalink
Implement port probing.
Browse files Browse the repository at this point in the history
  • Loading branch information
flatheadmill committed Dec 17, 2015
1 parent a6d2b03 commit f1befd4
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 4 deletions.
15 changes: 14 additions & 1 deletion establishment.js
Original file line number Diff line number Diff line change
@@ -1 +1,14 @@
module.exports = 1
var cadence = require('cadence')
var Delta = require('delta')

module.exports = cadence(function (async, server, port, address) {
var loop = async([function () {
new Delta(async()).ee(server).on('listening')
server.listen(port, address)
}, /^EADDRINUSE$/, function () {
port++
return [ loop.continue ]
}], function () {
return [ loop.break ]
})()
})
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
],
"dependencies":
{
"cadence": "0.4.3",
"delta": "0.0.4"
},
"devDependencies":
{
Expand Down
19 changes: 16 additions & 3 deletions t/establishment/establishment.t.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
require('proof')(1, prove)
require('proof')(1, require('cadence')(prove))

function prove (assert) {
assert(require('../..'), 'require')
function prove (async, assert) {
var net = require('net')
var establishment = require('../..')
var first, second
async(function () {
first = net.createServer()
establishment(first, 22000, '0.0.0.0', async())
}, function () {
second = net.createServer()
establishment(second, 22000, '0.0.0.0', async())
}, function () {
assert(first.address().port && first.address().port != second.address().port, 'bound')
first.close(async())
second.close(async())
})
}

0 comments on commit f1befd4

Please sign in to comment.