diff --git a/lib/snmp.js b/lib/snmp.js index 844a2b3..c07edd7 100644 --- a/lib/snmp.js +++ b/lib/snmp.js @@ -410,7 +410,21 @@ function msgReceived(msg, rinfo) { try { pkt = parse(msg); } catch (error) { - return self.emit('error', error); + // cancel completely this request + // 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) { + description = description+'\n'+hex.slice(0, 32).replace(/([0-9a-f]{2})/g, '$1 '); + hex = hex.slice(32); + } + + 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; } // If this message's request id matches one we've sent,