summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2012-04-20 19:34:28 +0000
committerelie <elie>2012-04-20 19:34:28 +0000
commit9b5408e005d77a635e059cd79862c89c20a95671 (patch)
treebbec9d80278a60a97c6c3f1de43c801026b85dc6
parent72d53b165dc9fcdf1dc155d27d7c936b52ea6a5f (diff)
downloadpysnmp-9b5408e005d77a635e059cd79862c89c20a95671.tar.gz
added pyasn1 decoder failures diagnistics in debug mode
-rw-r--r--CHANGES1
-rw-r--r--pysnmp/proto/mpmod/rfc2576.py2
-rw-r--r--pysnmp/proto/mpmod/rfc3412.py1
-rw-r--r--pysnmp/proto/secmod/rfc3414/service.py11
4 files changed, 10 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 11252e3..40f6917 100644
--- a/CHANGES
+++ b/CHANGES
@@ -26,6 +26,7 @@ Revision 4.2.2
- When running on Python3, SMI will re-raise exceptions with the original
traceback for easier diagnostics.
- Out of PYTHONPATH MIB paths now supported.
+- Added pyasn1 decoder failures diagnistics in debug mode.
- Fix to non-MT-safe class attributes at SNMPv3 MP & SEC modules.
- Fix to ContextName handling in bytes form whilst running Python3. Data
mismatch error would return otherwise.
diff --git a/pysnmp/proto/mpmod/rfc2576.py b/pysnmp/proto/mpmod/rfc2576.py
index 2498d6a..6e74f27 100644
--- a/pysnmp/proto/mpmod/rfc2576.py
+++ b/pysnmp/proto/mpmod/rfc2576.py
@@ -1,4 +1,5 @@
# SNMP v1 & v2c message processing models implementation
+import sys
from pyasn1.codec.ber import decoder
from pyasn1.type import univ
from pyasn1.compat.octets import null
@@ -223,6 +224,7 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
wholeMsg, asn1Spec=self._snmpMsgSpec
)
except PyAsn1Error:
+ debug.logger & debug.flagMP and debug.logger('prepareDataElements: %s' % (sys.exc_info()[1],))
snmpInASNParseErrs, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpInASNParseErrs')
snmpInASNParseErrs.syntax = snmpInASNParseErrs.syntax + 1
raise error.StatusInformation(
diff --git a/pysnmp/proto/mpmod/rfc3412.py b/pysnmp/proto/mpmod/rfc3412.py
index aa90caa..e51eb21 100644
--- a/pysnmp/proto/mpmod/rfc3412.py
+++ b/pysnmp/proto/mpmod/rfc3412.py
@@ -459,6 +459,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
wholeMsg, asn1Spec=self._snmpMsgSpec
)
except PyAsn1Error:
+ debug.logger & debug.flagMP and debug.logger('prepareDataElements: %s' % (sys.exc_info()[1],))
snmpInASNParseErrs, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpInASNParseErrs')
snmpInASNParseErrs.syntax = snmpInASNParseErrs.syntax + 1
raise error.StatusInformation(
diff --git a/pysnmp/proto/secmod/rfc3414/service.py b/pysnmp/proto/secmod/rfc3414/service.py
index 586f6a3..375b90c 100644
--- a/pysnmp/proto/secmod/rfc3414/service.py
+++ b/pysnmp/proto/secmod/rfc3414/service.py
@@ -490,11 +490,12 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
asn1Spec=self.__securityParametersSpec
)
except PyAsn1Error:
- snmpInASNParseErrs, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpInASNParseErrs')
- snmpInASNParseErrs.syntax = snmpInASNParseErrs.syntax + 1
- raise error.StatusInformation(
- errorIndication=errind.parseError
- )
+ debug.logger & debug.flagSM and debug.logger('processIncomingMsg: %s' % (sys.exc_info()[1],))
+ snmpInASNParseErrs, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpInASNParseErrs')
+ snmpInASNParseErrs.syntax = snmpInASNParseErrs.syntax + 1
+ raise error.StatusInformation(
+ errorIndication=errind.parseError
+ )
debug.logger & debug.flagSM and debug.logger('processIncomingMsg: %s' % (securityParameters.prettyPrint(),))