diff --git a/src/socket-to-conn.js b/src/socket-to-conn.js index 573dbc2..026f373 100644 --- a/src/socket-to-conn.js +++ b/src/socket-to-conn.js @@ -44,9 +44,7 @@ module.exports = (socket, options = {}) => { conn: socket, - localAddr: socket.localAddress && socket.localPort - ? toMultiaddr(socket.localAddress, socket.localPort) - : undefined, + localAddr: toLocalAddr(socket), // If the remote address was passed, use it - it may have the peer ID encapsulated remoteAddr: options.remoteAddr, @@ -98,3 +96,19 @@ module.exports = (socket, options = {}) => { return maConn } + +/** + * Get local multiaddr from socket. + * + * @param {SimplePeer} socket + * @returns {Multiaddr|undefined} + */ +function toLocalAddr (socket) { + if (socket.localAddress && socket.localPort) { + try { + return toMultiaddr(socket.localAddress, socket.localPort) + } catch { + // Might fail if the socket.localAddress is fqdn + } + } +}