Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
net: include local port/address in error messages
Browse files Browse the repository at this point in the history
  • Loading branch information
evanlucas committed Aug 13, 2014
1 parent 81edc26 commit 7def1f0
Showing 1 changed file with 83 additions and 32 deletions.
115 changes: 83 additions & 32 deletions lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -809,18 +809,29 @@ function connect(self, address, port, addressType, localAddress, localPort) {
err = bind(localAddress, localPort);

if (err) {
var details = util.format('%s:%s', address, port || '');
var additions = {
address: address
};
if (port) additions.port = port;
var details;
if (port) {
details = util.format('%s:%s', address, port);
additions.port = port;
} else {
details = address;
}
var ex = errnoException(err, 'bind', details, additions);
self._destroy(ex);
return;
}
}

var req = { oncomplete: afterConnect };
var req = {
oncomplete: afterConnect,
port: undefined,
address: undefined,
localAddress: undefined,
localPort: undefined
};
if (addressType === 6 || addressType === 4) {
port = port | 0;
if (port <= 0 || port > 65535)
Expand All @@ -838,13 +849,16 @@ function connect(self, address, port, addressType, localAddress, localPort) {
err = self._handle.connect(req, address, afterConnect);
}

self._getsockname();
if (self._sockname) {
req.localAddress = self._sockname.address;
req.localPort = self._sockname.port;
}
if (err) {
var details = util.format('%s:%s', address, port || '');
var additions = {
address: address
};
if (port) additions.port = port;
var ex = errnoException(err, 'connect', details, additions);
var details = port ?
util.format('%s:%s', address, port) :
address;
var ex = errnoException(err, 'connect', details, req);
self._destroy(ex);
}
}
Expand Down Expand Up @@ -928,8 +942,15 @@ Socket.prototype.connect = function(options, cb) {
// There are no event listeners registered yet so defer the
// error event to the next tick.
process.nextTick(function() {
if (options.port) err.port = options.port;
self.emit('error', err);
// The errno may not be recognized by libuv
var ex = util._extend(err, options);
var message = util.format('%s %s %s:%s',
err.syscall,
err.errno,
options.host,
options.port);
ex.message = message;
self.emit('error', ex);
self._destroy();
});
} else {
Expand Down Expand Up @@ -996,12 +1017,17 @@ function afterConnect(status, handle, req, readable, writable) {

} else {
self._connecting = false;
var details = util.format('%s:%s', req.address, req.port || '');
var additions = {
address: req.address
};
if (req.port) additions.port = req.port;
var ex = errnoException(status, 'connect', details, additions);
var details = req.port ?
util.format('%s:%s', req.address, req.port) :
req.address;

if (req.localAddress && req.localPort) {
details = util.format('%s - Local (%s:%s)',
details,
req.localAddress,
req.localPort);
}
var ex = errnoException(status, 'connect', details, req);
self._destroy(ex);
}
}
Expand Down Expand Up @@ -1130,11 +1156,20 @@ Server.prototype._listen2 = function(address, port, addressType, backlog, fd) {
debug('_listen2: create a handle');
var rval = createServerHandle(address, port, addressType, fd);
if (util.isNumber(rval)) {
var details = util.format('%s:%s', address, port > 0 ? port : '');
var additions = {
address: address
};
if (port > 0) additions.port = port;
var details, additions;
if (port > 0) {
details = util.format('%s:%s', address, port);
additions = {
address: address,
port: port
};
} else {
details = address;
additions = {
address: address
};
}

var error = errnoException(rval, 'listen', details, additions);
process.nextTick(function() {
self.emit('error', error);
Expand All @@ -1152,11 +1187,19 @@ Server.prototype._listen2 = function(address, port, addressType, backlog, fd) {
var err = _listen(self._handle, backlog);

if (err) {
var details = util.format('%s:%s', address, port > 0 ? port : '');
var additions = {
address: address
};
if (port > 0) additions.port = port;
var details, additions;
if (port > 0) {
details = util.format('%s:%s', address, port);
additions = {
address: address,
port: port
};
} else {
details = address;
additions = {
address: address
};
}
var ex = errnoException(err, 'listen', details, additions);
self._handle.close();
self._handle = null;
Expand Down Expand Up @@ -1204,11 +1247,19 @@ function listen(self, address, port, addressType, backlog, fd) {
}

if (err) {
var details = util.format('%s:%s', address, port > 0 ? port : '');
var additions = {
address: address
};
if (port > 0) additions.port = port;
var details, additions;
if (port > 0) {
details = util.format('%s:%s', address, port);
additions = {
address: address,
port: port
};
} else {
details = address;
additions = {
address: address
};
}
var ex = errnoException(err, 'bind', details, additions);
return self.emit('error', ex);
}
Expand Down

0 comments on commit 7def1f0

Please sign in to comment.