Skip to content

Commit d7b199d

Browse files
jscissrevanlucas
authored andcommittedNov 24, 2015
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: #3946 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent 5169311 commit d7b199d

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed
 

Diff for: ‎lib/net.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,8 @@ function connect(self, address, port, addressType, localAddress, localPort) {
817817
req.oncomplete = afterConnect;
818818
req.address = address;
819819
req.port = port;
820+
req.localAddress = localAddress;
821+
req.localPort = localPort;
820822

821823
if (addressType === 4)
822824
err = self._handle.connect(req, address, port);
@@ -1058,15 +1060,17 @@ function afterConnect(status, handle, req, readable, writable) {
10581060
self._connecting = false;
10591061
var details;
10601062
if (req.localAddress && req.localPort) {
1061-
ex.localAddress = req.localAddress;
1062-
ex.localPort = req.localPort;
1063-
details = ex.localAddress + ':' + ex.localPort;
1063+
details = req.localAddress + ':' + req.localPort;
10641064
}
10651065
var ex = exceptionWithHostPort(status,
10661066
'connect',
10671067
req.address,
10681068
req.port,
10691069
details);
1070+
if (details) {
1071+
ex.localAddress = req.localAddress;
1072+
ex.localPort = req.localPort;
1073+
}
10701074
self._destroy(ex);
10711075
}
10721076
}

Diff for: ‎test/parallel/test-net-connect-local-error.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'use strict';
2+
const common = require('../common');
3+
const assert = require('assert');
4+
const net = require('net');
5+
6+
var client = net.connect({
7+
port: common.PORT + 1,
8+
localPort: common.PORT,
9+
localAddress: common.localhostIPv4
10+
});
11+
12+
client.on('error', common.mustCall(function onError(err) {
13+
assert.equal(err.localPort, common.PORT);
14+
assert.equal(err.localAddress, common.localhostIPv4);
15+
}));

0 commit comments

Comments
 (0)
Please sign in to comment.