From 486aaceb058bed139f908876b64cac14a5a1c360 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Mon, 7 Aug 2017 14:17:18 -0400 Subject: [PATCH] feat(server-check): reintroduce server version check NODE-1085 --- lib/topologies/server.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/topologies/server.js b/lib/topologies/server.js index f9ed102d7..dff28a581 100644 --- a/lib/topologies/server.js +++ b/lib/topologies/server.js @@ -172,6 +172,12 @@ Object.defineProperty(Server.prototype, 'name', { get: function() { return this.s.options.host + ":" + this.s.options.port; } }); +function isSupportedServer(response) { + return response && + typeof response.maxWireVersion === 'number' && + response.maxWireVersion >= 2; +} + function configureWireProtocolHandler(self, ismaster) { // 3.2 wire protocol handler if (ismaster.maxWireVersion >= 4) { @@ -254,10 +260,14 @@ var eventHandler = function(self, event) { }, function(err, result) { // Set initial lastIsMasterMS self.lastIsMasterMS = new Date().getTime() - start; - if(err) { + if (err) { + self.destroy(); + return self.emit('error', err); + } + + if (!isSupportedServer(result.result)) { self.destroy(); - if(self.listeners('error').length > 0) self.emit('error', err); - return; + return self.emit('error', new MongoError('unsupported server version'), self); } // Determine whether the server is instructing us to use a compressor