From cce0f9a4063f94c5fad521f684f40876aeb038b3 Mon Sep 17 00:00:00 2001 From: Alexey Kasyanchuk Date: Sat, 3 Mar 2018 04:00:18 +0300 Subject: [PATCH] fix(p2p): fix back connection --- src/background/p2p.js | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/background/p2p.js b/src/background/p2p.js index daee0433..42521462 100644 --- a/src/background/p2p.js +++ b/src/background/p2p.js @@ -14,13 +14,6 @@ class p2p { this.send = send this.tcpServer = net.createServer(); this.tcpServer.on('connection', (socket) => { - // try to setup back connection - const address = socket.address() - if(address.family == 'IPv4') - { - this.add(address) - } - socket = new JsonSocket(socket); socket.on('error', (err) => {}) socket.on('message', (message) => { @@ -31,18 +24,27 @@ class p2p { id: message.id, data }); - }) + }, socket._socket) } }); }) // check protocol - this.on('protocol', (data, callback) => { + this.on('protocol', (data, callback, socket) => { if(!data || data.protocol != 'rats') return callback({ protocol: 'rats' }) + + // try to connect back + if(socket.remoteFamily == 'IPv4') + { + this.add({ + address: socket.remoteAddress, + port: data.port ? data.port : socket.remotePort + }) + } }) // ignore local addresses @@ -67,7 +69,7 @@ class p2p { listen() { console.log('listen p2p on', config.spiderPort, 'port') - this.tcpServer.listen(config.spiderPort); + this.tcpServer.listen(config.spiderPort, '0.0.0.0'); } on(type, callback) { @@ -124,7 +126,10 @@ class p2p { // check protocol const protocolTimeout = setTimeout(() => rawSocket.destroy(), 7000) - emit('protocol', {protocol: 'rats'}, (data) => { + emit('protocol', { + protocol: 'rats', + port: config.spiderPort + }, (data) => { if(!data || data.protocol != 'rats') return