From e9f55e96c3bfbba62d467b8f85c00b7506792207 Mon Sep 17 00:00:00 2001 From: leo-combes Date: Wed, 30 May 2018 21:46:04 -0300 Subject: [PATCH 1/2] proposed solution to #70 When a malformed package is found, an error message is left in the log with the sample of the package that originated it. There is no exception or cause stop the program. Is my first PR, so I'm not sure if I are doing this fine. --- lib/snmp.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/snmp.js b/lib/snmp.js index 844a2b3..a9d17dd 100644 --- a/lib/snmp.js +++ b/lib/snmp.js @@ -410,7 +410,20 @@ function msgReceived(msg, rinfo) { try { pkt = parse(msg); } catch (error) { - return self.emit('error', error); + // cancel completely this request + // console.warn('Error while parsing response, maybe a malformed package has been received...'); + console.warn('Error while parsing response, maybe a malformed package has been received...'); + + console.error('Message that caused the error:'); + var hex = msg.toString('hex'); + while (hex.length > 0) { + console.error(' ' + hex.slice(0, 32).replace(/([0-9a-f]{2})/g, '$1 ')); + hex = hex.slice(32); + } + + var response = self.reqs[Object.keys(self.reqs)[0]].callback(new Error("problem parsing response, malformed packet?")); + clearRequest(self.reqs, Object.keys(self.reqs)[0]); + return response; } // If this message's request id matches one we've sent, From f5072a36981e008fabadecb0ecf18e909c5f2633 Mon Sep 17 00:00:00 2001 From: leo-combes Date: Sat, 2 Jun 2018 10:44:58 -0300 Subject: [PATCH 2/2] Update snmp.js --- lib/snmp.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/snmp.js b/lib/snmp.js index a9d17dd..c07edd7 100644 --- a/lib/snmp.js +++ b/lib/snmp.js @@ -411,17 +411,18 @@ function msgReceived(msg, rinfo) { pkt = parse(msg); } catch (error) { // cancel completely this request - // console.warn('Error while parsing response, maybe a malformed package has been received...'); - console.warn('Error while parsing response, maybe a malformed package has been received...'); - - console.error('Message that caused the error:'); + // an error while parsing response, maybe a malformed package has been received... var hex = msg.toString('hex'); + var description = "problem parsing snmp response, malformed packet?"; while (hex.length > 0) { - console.error(' ' + hex.slice(0, 32).replace(/([0-9a-f]{2})/g, '$1 ')); + description = description+'\n'+hex.slice(0, 32).replace(/([0-9a-f]{2})/g, '$1 '); hex = hex.slice(32); } - var response = self.reqs[Object.keys(self.reqs)[0]].callback(new Error("problem parsing response, malformed packet?")); + var error = new Error(description); + error.name = "Error decoding response"; + var response = self.reqs[Object.keys(self.reqs)[0]].callback(error); + clearRequest(self.reqs, Object.keys(self.reqs)[0]); return response; }