mirror of
https://github.com/zebrajr/express.git
synced 2025-12-06 00:19:48 +01:00
call callback once on listen error
This commit is contained in:
parent
26801a0afd
commit
ee40a881f5
|
|
@ -24,6 +24,7 @@ var compileTrust = require('./utils').compileTrust;
|
|||
var flatten = require('array-flatten').flatten
|
||||
var merge = require('utils-merge');
|
||||
var resolve = require('path').resolve;
|
||||
var once = require('once')
|
||||
var Router = require('router');
|
||||
var setPrototypeOf = require('setprototypeof')
|
||||
|
||||
|
|
@ -605,10 +606,15 @@ app.render = function render(name, options, callback) {
|
|||
* @public
|
||||
*/
|
||||
|
||||
app.listen = function listen() {
|
||||
var server = http.createServer(this);
|
||||
return server.listen.apply(server, arguments);
|
||||
};
|
||||
app.listen = function listen () {
|
||||
var server = http.createServer(this)
|
||||
var args = Array.prototype.slice.call(arguments)
|
||||
if (typeof args[args.length - 1] === 'function') {
|
||||
var done = args[args.length - 1] = once(args[args.length - 1])
|
||||
server.once('error', done)
|
||||
}
|
||||
return server.listen.apply(server, args)
|
||||
}
|
||||
|
||||
/**
|
||||
* Log error using console.error.
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@
|
|||
"methods": "~1.1.2",
|
||||
"mime-types": "~2.1.34",
|
||||
"on-finished": "2.4.1",
|
||||
"once": "1.4.0",
|
||||
"parseurl": "~1.3.3",
|
||||
"path-is-absolute": "1.0.1",
|
||||
"proxy-addr": "~2.0.7",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
'use strict'
|
||||
|
||||
var express = require('../')
|
||||
var assert = require('assert')
|
||||
|
||||
describe('app.listen()', function(){
|
||||
it('should wrap with an HTTP server', function(done){
|
||||
|
|
@ -10,4 +11,17 @@ describe('app.listen()', function(){
|
|||
server.close(done)
|
||||
});
|
||||
})
|
||||
it('should callback on HTTP server errors', function (done) {
|
||||
var app1 = express()
|
||||
var app2 = express()
|
||||
|
||||
var server1 = app1.listen(0, function (err) {
|
||||
assert(!err)
|
||||
app2.listen(server1.address().port, function (err) {
|
||||
assert(err.code === 'EADDRINUSE')
|
||||
server1.close()
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user