diff --git a/package-lock.json b/package-lock.json index 3057171..bcd704d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rats-search", - "version": "1.1.1", + "version": "1.1.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/background/p2p.js b/src/background/p2p.js index cc0efdf..05453c9 100644 --- a/src/background/p2p.js +++ b/src/background/p2p.js @@ -13,10 +13,14 @@ const directoryFilesRecursive = require('./directoryFilesRecursive') const {promisify} = require('util'); const mkdirp = promisify(require('mkdirp')) const deleteFolderRecursive = require('./deleteFolderRecursive') +const compareVersions = require('compare-versions'); class p2p { constructor(send = () => {}) { + this.minClientVersion = '1.1.0' + this.minServerVersion = '1.1.0' + this.events = new EventEmitter this.peers = [] this.clients = [] @@ -92,6 +96,11 @@ class p2p { if(!data || data.protocol != 'rats') return + if(compareVersions(data.version, this.minServerVersion) < 0) { + logTE('p2p', `ignore peer because of version ${data.version} < ${this.minServerVersion}`); + return; + } + // protocol ok clearTimeout(socketObject.protocolTimeout) const { _socket: socket } = socketObject @@ -369,6 +378,12 @@ class p2p { if(this.ignoreAddresses.includes(address.address)) return; + if(compareVersions(data.version, this.minClientVersion) < 0) { + logTE('p2p', `ignore client peer because of version ${data.version} < ${this.minClientVersion}`) + rawSocket.destroy() + return; + } + // success clearTimeout(protocolTimeout)