@@ -10,9 +10,11 @@ var inherits = require('util').inherits,
10
10
parseHeader = require ( '../wireprotocol/shared' ) . parseHeader ,
11
11
decompress = require ( '../wireprotocol/compression' ) . decompress ,
12
12
Response = require ( './commands' ) . Response ,
13
+ BinMsg = require ( './msg' ) . BinMsg ,
13
14
MongoNetworkError = require ( '../error' ) . MongoNetworkError ,
14
15
Logger = require ( './logger' ) ,
15
16
OP_COMPRESSED = require ( '../wireprotocol/shared' ) . opcodes . OP_COMPRESSED ,
17
+ OP_MSG = require ( '../wireprotocol/shared' ) . opcodes . OP_MSG ,
16
18
MESSAGE_HEADER_SIZE = require ( '../wireprotocol/shared' ) . MESSAGE_HEADER_SIZE ,
17
19
Buffer = require ( 'safe-buffer' ) . Buffer ;
18
20
@@ -301,14 +303,22 @@ var emitMessageHandler = function(self, message) {
301
303
'Decompressing a compressed message from the server failed. The message is corrupt.'
302
304
) ;
303
305
}
306
+ const ResponseConstructor = msgHeader . opCode === OP_MSG ? BinMsg : Response ;
304
307
self . messageHandler (
305
- new Response ( self . bson , message , msgHeader , decompressedMsgBody , self . responseOptions ) ,
308
+ new ResponseConstructor (
309
+ self . bson ,
310
+ message ,
311
+ msgHeader ,
312
+ decompressedMsgBody ,
313
+ self . responseOptions
314
+ ) ,
306
315
self
307
316
) ;
308
317
} ) ;
309
318
} else {
319
+ const ResponseConstructor = msgHeader . opCode === OP_MSG ? BinMsg : Response ;
310
320
self . messageHandler (
311
- new Response (
321
+ new ResponseConstructor (
312
322
self . bson ,
313
323
message ,
314
324
msgHeader ,
0 commit comments