diff options
author | elie <elie> | 2010-06-28 16:02:37 +0000 |
---|---|---|
committer | elie <elie> | 2010-06-28 16:02:37 +0000 |
commit | 3f0b5d7b91c9ba9cd182dc153e3f42c7ab3b3dda (patch) | |
tree | 8678992425d649c9f9521e9045f402b5db6debb2 | |
parent | 37ae1865458decb5b71f4d5705e9717789ff82f4 (diff) | |
download | pysnmp-3f0b5d7b91c9ba9cd182dc153e3f42c7ab3b3dda.tar.gz |
* MibScalarInstance.createUndo() fixed to invoke writeUndo(), not
writeCleanup
* MibTableColumn.createUndo() now handles possible uninitialized
pyasn1 values
-rw-r--r-- | pysnmp/smi/mibs/SNMPv2-SMI.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pysnmp/smi/mibs/SNMPv2-SMI.py b/pysnmp/smi/mibs/SNMPv2-SMI.py index 25241e8..d633280 100644 --- a/pysnmp/smi/mibs/SNMPv2-SMI.py +++ b/pysnmp/smi/mibs/SNMPv2-SMI.py @@ -3,7 +3,7 @@ from pysnmp.smi.indices import OidOrderedDict from pysnmp.smi import exval, error from pysnmp.proto import rfc1902 from pyasn1.type import constraint -from pyasn1.error import ValueConstraintError +from pyasn1.error import ValueConstraintError, PyAsn1Error from pysnmp import debug ( Integer, ObjectIdentifier, Null ) = mibBuilder.importSymbols("ASN1", "Integer", "ObjectIdentifier", "Null") @@ -490,7 +490,7 @@ class MibScalarInstance(MibTree): self.writeCleanup(name, val, idx, (acFun, acCtx)) def createUndo(self, name, val, idx, (acFun, acCtx)): if val is not None: - self.writeCleanup(name, val, idx, (acFun, acCtx)) + self.writeUndo(name, val, idx, (acFun, acCtx)) # Destroy operation @@ -592,12 +592,18 @@ class MibTableColumn(MibScalar): # Set back previous column instance, drop the new one if self.__createdInstances.has_key(name): self._vars[name] = self.__createdInstances[name] - del self.__createdInstances[name] + del self.__createdInstances[name] # Remove new instance on rollback if self._vars[name] is None: del self._vars[name] else: - self._vars[name].createUndo(name, val, idx, (acFun, acCtx)) + # Catch half-created instances (hackerish) + try: + self._vars[name] == 0 + except PyAsn1Error: + del self._vars[name] + else: + self._vars[name].createUndo(name, val, idx, (acFun, acCtx)) # Column destruction |