bitcore-p2p icon indicating copy to clipboard operation
bitcore-p2p copied to clipboard

Unknown command or malformed message should reply with `reject` to peer

Open akloboucnik opened this issue 6 years ago • 4 comments

If peer is unable to parse message for specific reasons it should not throw error but reply with a reject message.

I've stumble upon this in our code, we see exceptions like:

2018-05-11T11:47:34.663Z ERROR  <module> Uncaught exception: { stack:
   [ 'Error: Data still available after parsing',
     'at Object.checkFinished (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/messages/utils.js:20:13)',
     'at AddrMessage.setPayload (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/messages/commands/addr.js:48:9)',
     'at Function.exported.commands.(anonymous function).fromBuffer (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/messages/builder.js:75:15)',
     'at Messages._buildFromBuffer (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/messages/index.js:103:41)',
     'at Messages.parseBuffer (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/messages/index.js:74:15)',
     'at Peer._readMessage (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/peer.js:219:31)',
     'at Socket.<anonymous> (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/peer.js:167:10)',
     'at emitOne (events.js:116:13)',
     'at Socket.emit (events.js:211:7)',
     'at addChunk (_stream_readable.js:263:12)' ],
  message: 'Data still available after parsing' }

or

2018-05-11T11:01:30.571Z ERROR  <module> Uncaught exception: { stack:
   [ 'Error: Unsupported message command: encinit',
     'at Messages._buildFromBuffer (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/messages/index.js:101:11)',
     'at Messages.parseBuffer (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/messages/index.js:74:15)',
     'at Peer._readMessage (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/peer.js:219:31)',
     'at Socket.<anonymous> (/Users/adam/Work/blockcollider/bcnode/node_modules/bitcore-p2p/lib/peer.js:167:10)',
     'at emitOne (events.js:116:13)',
     'at Socket.emit (events.js:211:7)',
     'at addChunk (_stream_readable.js:263:12)',
     'at readableAddChunk (_stream_readable.js:250:11)',
     'at Socket.Readable.push (_stream_readable.js:208:10)',
     'at TCP.onread (net.js:594:20)' ],
  message: 'Unsupported message command: encinit' }

akloboucnik avatar May 14 '18 09:05 akloboucnik

Coverage Status

Coverage decreased (-0.09%) to 99.534% when pulling 5c56eb7d52063f2cee56f45c580373550df8a4b7 on akloboucnik:fix-unknown-message-or-malformed-payload into 10a21524d875efd8d28d4207011f391d778609d6 on bitpay:master.

coveralls avatar May 14 '18 09:05 coveralls

Hi @maraoz is there any plan to merge this? Or fix the issue mentioned by @akloboucnik ?

korczis avatar Jun 19 '18 16:06 korczis

Hi @maraoz! Is there any chance of this getting merged?

akloboucnik avatar Feb 15 '19 05:02 akloboucnik

I no longer have commit access to this repo, sorry!

maraoz avatar Feb 15 '19 14:02 maraoz