summaryrefslogtreecommitdiff
path: root/examples/v1arch/asyncore/agent
diff options
context:
space:
mode:
authorelie <elie>2006-05-21 11:33:05 +0000
committerelie <elie>2006-05-21 11:33:05 +0000
commit16d8bf0e639ab07a5ddcfd374a74715eec9a7cc3 (patch)
tree941512d4fb5831e60305fbc5a5d9f06bb5c9a08c /examples/v1arch/asyncore/agent
parent231e66b6f7afdd8f9f39db57a0227ff2d16a9fae (diff)
downloadpysnmp-git-16d8bf0e639ab07a5ddcfd374a74715eec9a7cc3.tar.gz
fix to setting errors while building PDU
Diffstat (limited to 'examples/v1arch/asyncore/agent')
-rw-r--r--examples/v1arch/asyncore/agent/cmdrsp/implementing-scalar-mib-objects.py22
1 files changed, 14 insertions, 8 deletions
diff --git a/examples/v1arch/asyncore/agent/cmdrsp/implementing-scalar-mib-objects.py b/examples/v1arch/asyncore/agent/cmdrsp/implementing-scalar-mib-objects.py
index 2ba34528..d7a99564 100644
--- a/examples/v1arch/asyncore/agent/cmdrsp/implementing-scalar-mib-objects.py
+++ b/examples/v1arch/asyncore/agent/cmdrsp/implementing-scalar-mib-objects.py
@@ -44,18 +44,21 @@ def cbFun(transportDispatcher, transportDomain, transportAddress, wholeMsg):
rspMsg = pMod.apiMessage.getResponse(reqMsg)
rspPDU = pMod.apiMessage.getPDU(rspMsg)
reqPDU = pMod.apiMessage.getPDU(reqMsg)
- varBinds = []; errorIndex = -1
+ varBinds = []; pendingErrors = []
+ errorIndex = 0
# GETNEXT PDU
if reqPDU.isSameTypeWith(pMod.GetNextRequestPDU()):
# Produce response var-binds
- errorIndex = -1
for oid, val in pMod.apiPDU.getVarBinds(reqPDU):
errorIndex = errorIndex + 1
# Search next OID to report
nextIdx = bisect.bisect(mibInstr, oid)
if nextIdx == len(mibInstr):
# Out of MIB
- pMod.apiPDU.setEndOfMibError(rspPDU, errorIndex)
+ varBinds.append((oid, val))
+ pendingErrors.append(
+ (pMod.apiPDU.setEndOfMibError, errorIndex)
+ )
else:
# Report value if OID is found
varBinds.append(
@@ -64,18 +67,21 @@ def cbFun(transportDispatcher, transportDomain, transportAddress, wholeMsg):
elif reqPDU.isSameTypeWith(pMod.GetRequestPDU()):
for oid, val in pMod.apiPDU.getVarBinds(reqPDU):
if mibInstrIdx.has_key(oid):
- varBinds.append(
- (oid, mibInstrIdx[oid](msgVer))
- )
+ varBinds.append((oid, mibInstrIdx[oid](msgVer)))
else:
# No such instance
- pMod.apiPDU.setNoSuchInstanceError(rspPDU, errorIndex)
- varBinds = pMod.apiPDU.getVarBinds(reqPDU)
+ varBinds.append((oid, val))
+ pendingErrors.append(
+ (pMod.apiPDU.setNoSuchInstanceError, errorIndex)
+ )
break
else:
# Report unsupported request type
pMod.apiPDU.setErrorStatus(rspPDU, 'genErr')
pMod.apiPDU.setVarBinds(rspPDU, varBinds)
+ # Commit possible error indices to response PDU
+ for f, i in pendingErrors:
+ f(rspPDU, i)
transportDispatcher.sendMessage(
encoder.encode(rspMsg), transportDomain, transportAddress
)