From 5efb309dc1912bf77e5cb95cee5c8ba399300971 Mon Sep 17 00:00:00 2001 From: Alexey Kasyanchuk Date: Fri, 22 Jun 2018 20:50:43 +0300 Subject: [PATCH] fix(p2p): p2p proper closing --- src/background/p2p.js | 11 +++++++++++ src/background/spider.js | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/background/p2p.js b/src/background/p2p.js index dde5a25..8e2040c 100644 --- a/src/background/p2p.js +++ b/src/background/p2p.js @@ -12,6 +12,7 @@ class p2p { { this.events = new EventEmitter this.peers = [] + this.clients = [] this.ignoreAddresses = ['127.0.0.1'] this.messageHandlers = {} this.externalPeers = [] @@ -34,6 +35,10 @@ class p2p { console.log('server connected', con, 'max', this.tcpServer.maxConnections) }) socket = new JsonSocket(socket); + this.clients.push(socket) + socket.on('close', () => { + this.clients.splice(this.clients.indexOf(socket), 1); + }); socket.on('error', (err) => {}) socket.on('message', (message) => { if(message.type && this.messageHandlers[message.type]) @@ -171,6 +176,12 @@ class p2p { console.log('closing ssh...') this.ssh.kill() } + // close server + const promise = new Promise(resolve => this.tcpServer.close(resolve)) + for (const client in this.clients) { + this.clients[client]._socket.destroy(); + } + return promise } on(type, callback) { diff --git a/src/background/spider.js b/src/background/spider.js index a217a58..b5013a9 100644 --- a/src/background/spider.js +++ b/src/background/spider.js @@ -767,7 +767,7 @@ setInterval(() => { upnp.ratsUnmap() console.log('closing p2p...') - p2p.close() + await p2p.close() // save feed await feed.save()