diff --git a/CHANGELOG.md b/CHANGELOG.md index fed790cd..e7f54ae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## To Be Released... ## 5.X.Y * Added Vintage Story support via the master server (#606) +* Fixed `registerRtt` breaking successful queries if it didn't respond in the query timeout (#610) * Added support for rFactor 2 (By @xCausxn #614) ## 4.3.2 diff --git a/protocols/core.js b/protocols/core.js index bbdfc462..c03d5d90 100644 --- a/protocols/core.js +++ b/protocols/core.js @@ -101,20 +101,17 @@ export default class Core extends EventEmitter { async run (/** Results */ state) {} /** Param can be a time in ms, or a promise (which will be timed) */ - async registerRtt (param) { - try { - if (param instanceof Promise) { - const start = Date.now() - await param - await this.registerRtt(Date.now() - start) - } else { - this.logger.debug(`Registered RTT: ${param}ms`) - if (this.shortestRTT === 0 || param < this.shortestRTT) { - this.shortestRTT = param - } + registerRtt (param) { + if (param instanceof Promise) { + const start = Date.now() + param.then(() => { + this.registerRtt(Date.now() - start) + }).catch((_) => {}) + } else { + this.logger.debug('Registered RTT: ' + param + 'ms') + if (this.shortestRTT === 0 || param < this.shortestRTT) { + this.shortestRTT = param } - } catch (error) { - this.logger.debug(`Error in promise: ${error}`) } } @@ -198,7 +195,7 @@ export default class Core extends EventEmitter { socket.on('ready', resolve) socket.on('close', () => reject(new Error('TCP Connection Refused'))) }) - await this.registerRtt(connectionPromise) + this.registerRtt(connectionPromise) connectionTimeout = Promises.createTimeout(this.options.socketTimeout, 'TCP Opening') await Promise.race([ connectionPromise,