mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
net_uv: fix test-net-eaddrinuse.js
This commit is contained in:
@@ -450,10 +450,7 @@ function Server(/* [ options, ] listener */) {
|
||||
this.connections = 0;
|
||||
this.allowHalfOpen = options.allowHalfOpen || false;
|
||||
|
||||
|
||||
this._handle = new TCP();
|
||||
this._handle.socket = this;
|
||||
this._handle.onconnection = onconnection;
|
||||
this._handle = null;
|
||||
}
|
||||
util.inherits(Server, events.EventEmitter);
|
||||
exports.Server = Server;
|
||||
@@ -465,6 +462,11 @@ function toPort(x) { return (x = Number(x)) >= 0 ? x : false; }
|
||||
function listenip(self, ip, port, addressType) {
|
||||
var r = 0;
|
||||
|
||||
// assign handle in listen, and clean up if bind or listen fails
|
||||
self._handle = new TCP();
|
||||
self._handle.socket = this;
|
||||
self._handle.onconnection = onconnection;
|
||||
|
||||
if (ip && port) {
|
||||
debug("bind to " + ip);
|
||||
if (addressType == 6) {
|
||||
@@ -473,14 +475,27 @@ function listenip(self, ip, port, addressType) {
|
||||
r = self._handle.bind(ip, port);
|
||||
}
|
||||
}
|
||||
|
||||
if (r) {
|
||||
self.emit('error', errnoException(errno, 'listen'));
|
||||
} else {
|
||||
self._handle.listen(self._backlog || 128);
|
||||
self._handle.close();
|
||||
self._handle = null;
|
||||
|
||||
process.nextTick(function() {
|
||||
self.emit('listening');
|
||||
self.emit('error', errnoException(errno, 'listen'));
|
||||
});
|
||||
} else {
|
||||
r = self._handle.listen(self._backlog || 128);
|
||||
if (r) {
|
||||
self._handle.close();
|
||||
self._handle = null;
|
||||
|
||||
process.nextTick(function() {
|
||||
self.emit('error', errnoException(errno, 'listen'));
|
||||
});
|
||||
} else {
|
||||
process.nextTick(function() {
|
||||
self.emit('listening');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -539,7 +554,10 @@ function onconnection(clientHandle) {
|
||||
|
||||
|
||||
Server.prototype.close = function() {
|
||||
this._handle.close();
|
||||
if (this._handle != null) {
|
||||
this._handle.close();
|
||||
this._handle = null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user