mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-07-07 21:01:36 +00:00
* refactor: add dialing over relay support * chore: fix lint * fix: dont clear listeners on close * fix: if dial errors already have codes, just rethrow them * fix: clear the registrar when libp2p stops * fix: improve connection maintenance with circuit * chore: correct feedback * test: use chai as promised * test(fix): reset multiaddrs on dial test
52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
'use strict'
|
|
|
|
const multiaddr = require('multiaddr')
|
|
const { CircuitRelay } = require('../protocol')
|
|
|
|
/**
|
|
* Write a response
|
|
*
|
|
* @param {StreamHandler} streamHandler
|
|
* @param {CircuitRelay.Status} status
|
|
*/
|
|
function writeResponse (streamHandler, status) {
|
|
streamHandler.write({
|
|
type: CircuitRelay.Type.STATUS,
|
|
code: status
|
|
})
|
|
}
|
|
|
|
/**
|
|
* Validate incomming HOP/STOP message
|
|
*
|
|
* @param {*} msg A CircuitRelay unencoded protobuf message
|
|
* @param {StreamHandler} streamHandler
|
|
*/
|
|
function validateAddrs (msg, streamHandler) {
|
|
try {
|
|
msg.dstPeer.addrs.forEach((addr) => {
|
|
return multiaddr(addr)
|
|
})
|
|
} catch (err) {
|
|
writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
|
|
? CircuitRelay.Status.HOP_DST_MULTIADDR_INVALID
|
|
: CircuitRelay.Status.STOP_DST_MULTIADDR_INVALID)
|
|
throw err
|
|
}
|
|
|
|
try {
|
|
msg.srcPeer.addrs.forEach((addr) => {
|
|
return multiaddr(addr)
|
|
})
|
|
} catch (err) {
|
|
writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
|
|
? CircuitRelay.Status.HOP_SRC_MULTIADDR_INVALID
|
|
: CircuitRelay.Status.STOP_SRC_MULTIADDR_INVALID)
|
|
throw err
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
validateAddrs
|
|
}
|