net: check and throw on error for getsockname
This commit attempts fix a TODO in net.js: TODO(bnoordhuis) Check err and throw? PR-URL: https://github.com/nodejs/node/pull/12871 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
771568a5a5
commit
cf980b0311
@ -1473,8 +1473,10 @@ Object.defineProperty(Server.prototype, 'listening', {
|
||||
Server.prototype.address = function() {
|
||||
if (this._handle && this._handle.getsockname) {
|
||||
var out = {};
|
||||
this._handle.getsockname(out);
|
||||
// TODO(bnoordhuis) Check err and throw?
|
||||
var err = this._handle.getsockname(out);
|
||||
if (err) {
|
||||
throw errnoException(err, 'address');
|
||||
}
|
||||
return out;
|
||||
} else if (this._pipeName) {
|
||||
return this._pipeName;
|
||||
|
17
test/parallel/test-socket-address.js
Normal file
17
test/parallel/test-socket-address.js
Normal file
@ -0,0 +1,17 @@
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
const net = require('net');
|
||||
|
||||
// This tests checks that if server._handle.getsockname
|
||||
// returns an error number, an error is thrown.
|
||||
|
||||
const server = net.createServer({});
|
||||
server.listen(0, common.mustCall(function() {
|
||||
server._handle.getsockname = function(out) {
|
||||
return -1;
|
||||
};
|
||||
assert.throws(() => this.address(),
|
||||
/^Error: address ([\w|\s-\d])+$/);
|
||||
server.close();
|
||||
}));
|
Loading…
x
Reference in New Issue
Block a user