net: add local address/port for better errors
Adds localAddress and localPort to req so we have better error messages. Also fixes a case where ex is used before it is declared. PR-URL: https://github.com/nodejs/node/pull/3946 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
5169311bf9
commit
d7b199d9e3
10
lib/net.js
10
lib/net.js
@ -817,6 +817,8 @@ function connect(self, address, port, addressType, localAddress, localPort) {
|
|||||||
req.oncomplete = afterConnect;
|
req.oncomplete = afterConnect;
|
||||||
req.address = address;
|
req.address = address;
|
||||||
req.port = port;
|
req.port = port;
|
||||||
|
req.localAddress = localAddress;
|
||||||
|
req.localPort = localPort;
|
||||||
|
|
||||||
if (addressType === 4)
|
if (addressType === 4)
|
||||||
err = self._handle.connect(req, address, port);
|
err = self._handle.connect(req, address, port);
|
||||||
@ -1058,15 +1060,17 @@ function afterConnect(status, handle, req, readable, writable) {
|
|||||||
self._connecting = false;
|
self._connecting = false;
|
||||||
var details;
|
var details;
|
||||||
if (req.localAddress && req.localPort) {
|
if (req.localAddress && req.localPort) {
|
||||||
ex.localAddress = req.localAddress;
|
details = req.localAddress + ':' + req.localPort;
|
||||||
ex.localPort = req.localPort;
|
|
||||||
details = ex.localAddress + ':' + ex.localPort;
|
|
||||||
}
|
}
|
||||||
var ex = exceptionWithHostPort(status,
|
var ex = exceptionWithHostPort(status,
|
||||||
'connect',
|
'connect',
|
||||||
req.address,
|
req.address,
|
||||||
req.port,
|
req.port,
|
||||||
details);
|
details);
|
||||||
|
if (details) {
|
||||||
|
ex.localAddress = req.localAddress;
|
||||||
|
ex.localPort = req.localPort;
|
||||||
|
}
|
||||||
self._destroy(ex);
|
self._destroy(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
15
test/parallel/test-net-connect-local-error.js
Normal file
15
test/parallel/test-net-connect-local-error.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
'use strict';
|
||||||
|
const common = require('../common');
|
||||||
|
const assert = require('assert');
|
||||||
|
const net = require('net');
|
||||||
|
|
||||||
|
var client = net.connect({
|
||||||
|
port: common.PORT + 1,
|
||||||
|
localPort: common.PORT,
|
||||||
|
localAddress: common.localhostIPv4
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on('error', common.mustCall(function onError(err) {
|
||||||
|
assert.equal(err.localPort, common.PORT);
|
||||||
|
assert.equal(err.localAddress, common.localhostIPv4);
|
||||||
|
}));
|
Loading…
x
Reference in New Issue
Block a user