fix(p2p): situation when ignoring yourself address is very slow

This commit is contained in:
Alexey Kasyanchuk 2018-03-05 04:40:37 +03:00
parent e68087fda3
commit 5cd9b9f229
2 changed files with 17 additions and 3 deletions

View File

@ -74,7 +74,7 @@ class p2p {
// nothing
} else {
console.log('ignore local address', iface.address);
this.ignoreAddresses.push(iface.address)
this.ignore(iface.address)
}
++alias;
});
@ -152,6 +152,7 @@ class p2p {
clearTimeout(protocolTimeout)
// add to peers
address.emit = emit
address.disconnect = () => rawSocket.destroy()
this.size++;
this.send('peer', this.size)
console.log('new peer', address)
@ -211,6 +212,19 @@ class p2p {
return localPeer.address === peer.address
})
}
ignore(address)
{
this.ignoreAddresses.push(address)
// close all connected peers (if they connected already)
this.peers.forEach(peer => {
if(peer.address !== address)
return
if(peer.disconnect)
peer.disconnect()
})
}
}
module.exports = p2p

View File

@ -1101,7 +1101,7 @@ checkInternet((connected) => {
stunServer.close()
console.log('p2p stun ignore my address', address)
p2p.ignoreAddresses.push(address)
p2p.ignore(address)
})
stunServer.send(stunRequest, 19302, 'stun.l.google.com')
})
@ -1165,7 +1165,7 @@ if(config.upnp)
return
console.log('p2p upnp ignore my address', ip)
p2p.ignoreAddresses.push(ip)
p2p.ignore(ip)
});
}