Permalink
Browse files

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: #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>
  • Loading branch information...
danbev committed May 6, 2017
1 parent 771568a commit cf980b0311ec37154c3ad70bffe69b2b929c7660
Showing with 21 additions and 2 deletions.
  1. +4 −2 lib/net.js
  2. +17 −0 test/parallel/test-socket-address.js
View
@@ -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;
@@ -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();
}));

0 comments on commit cf980b0

Please sign in to comment.