GeezerVison is showing github.com — net: fix socket._getpeername · nodejs/node@29bcd47
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: lib/net.js +4-3Lines changed: 4 additions & 3 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -785,9 +785,10 @@ Socket.prototype._getpeername = function() { |
785 | 785 | if (!this._handle || !this._handle.getpeername || this.connecting) { |
786 | 786 | return this._peername || {}; |
787 | 787 | } else if (!this._peername) { |
788 | | - this._peername = {}; |
789 | | - // FIXME(bnoordhuis) Throw when the return value is not 0? |
790 | | - this._handle.getpeername(this._peername); |
| 788 | + const out = {}; |
| 789 | + const err = this._handle.getpeername(out); |
| 790 | + if (err) return out; |
| 791 | + this._peername = out; |
791 | 792 | } |
792 | 793 | return this._peername; |
793 | 794 | }; |
|
Collapse file
Copy file name to clipboard +23Lines changed: 23 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +const common = require('../common'); |
| 4 | +const net = require('net'); |
| 5 | +const { strictEqual } = require('assert'); |
| 6 | + |
| 7 | +const server = net.createServer(); |
| 8 | + |
| 9 | +server.listen(common.mustCall(function() { |
| 10 | + const socket = net.connect({ port: server.address().port }); |
| 11 | + |
| 12 | + strictEqual(socket.connecting, true); |
| 13 | + strictEqual(socket.remoteAddress, undefined); |
| 14 | + |
| 15 | + socket.on('connect', common.mustCall(function() { |
| 16 | + strictEqual(socket.remoteAddress !== undefined, true); |
| 17 | + socket.end(); |
| 18 | + })); |
| 19 | + |
| 20 | + socket.on('end', common.mustCall(function() { |
| 21 | + server.close(); |
| 22 | + })); |
| 23 | +})); |