mirror of
https://github.com/expressjs/express.git
synced 2026-02-21 19:41:36 +00:00
call callback once on listen error
This commit is contained in:
@@ -24,6 +24,7 @@ var compileTrust = require('./utils').compileTrust;
|
|||||||
var flatten = require('array-flatten').flatten
|
var flatten = require('array-flatten').flatten
|
||||||
var merge = require('utils-merge');
|
var merge = require('utils-merge');
|
||||||
var resolve = require('path').resolve;
|
var resolve = require('path').resolve;
|
||||||
|
var once = require('once')
|
||||||
var Router = require('router');
|
var Router = require('router');
|
||||||
var setPrototypeOf = require('setprototypeof')
|
var setPrototypeOf = require('setprototypeof')
|
||||||
|
|
||||||
@@ -605,10 +606,15 @@ app.render = function render(name, options, callback) {
|
|||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
|
|
||||||
app.listen = function listen() {
|
app.listen = function listen () {
|
||||||
var server = http.createServer(this);
|
var server = http.createServer(this)
|
||||||
return server.listen.apply(server, arguments);
|
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.
|
* Log error using console.error.
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
"methods": "~1.1.2",
|
"methods": "~1.1.2",
|
||||||
"mime-types": "~2.1.34",
|
"mime-types": "~2.1.34",
|
||||||
"on-finished": "2.4.1",
|
"on-finished": "2.4.1",
|
||||||
|
"once": "1.4.0",
|
||||||
"parseurl": "~1.3.3",
|
"parseurl": "~1.3.3",
|
||||||
"path-is-absolute": "1.0.1",
|
"path-is-absolute": "1.0.1",
|
||||||
"proxy-addr": "~2.0.7",
|
"proxy-addr": "~2.0.7",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
var express = require('../')
|
var express = require('../')
|
||||||
|
var assert = require('assert')
|
||||||
|
|
||||||
describe('app.listen()', function(){
|
describe('app.listen()', function(){
|
||||||
it('should wrap with an HTTP server', function(done){
|
it('should wrap with an HTTP server', function(done){
|
||||||
@@ -10,4 +11,17 @@ describe('app.listen()', function(){
|
|||||||
server.close(done)
|
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()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user