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() {
|
Server.prototype.address = function() {
|
||||||
if (this._handle && this._handle.getsockname) {
|
if (this._handle && this._handle.getsockname) {
|
||||||
var out = {};
|
var out = {};
|
||||||
this._handle.getsockname(out);
|
var err = this._handle.getsockname(out);
|
||||||
// TODO(bnoordhuis) Check err and throw?
|
if (err) {
|
||||||
|
throw errnoException(err, 'address');
|
||||||
|
}
|
||||||
return out;
|
return out;
|
||||||
} else if (this._pipeName) {
|
} else if (this._pipeName) {
|
||||||
return 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