summaryrefslogtreecommitdiff
path: root/pysnmp/entity/rfc3413/cmdgen.py
diff options
context:
space:
mode:
authorelie <elie>2010-11-14 00:16:56 +0000
committerelie <elie>2010-11-14 00:16:56 +0000
commit407fb3430dbe5a7ebe26a3a8fe688da06be5ce93 (patch)
treece93c37fd7f3dfb3e904fcb551a0263814dfd256 /pysnmp/entity/rfc3413/cmdgen.py
parentbad5ac4ef0793187dc98e0a6204abf02d4b43da7 (diff)
downloadpysnmp-407fb3430dbe5a7ebe26a3a8fe688da06be5ce93.tar.gz
catch potential empty response condition at GETNEXT/GETBULK receiver
Diffstat (limited to 'pysnmp/entity/rfc3413/cmdgen.py')
-rw-r--r--pysnmp/entity/rfc3413/cmdgen.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/pysnmp/entity/rfc3413/cmdgen.py b/pysnmp/entity/rfc3413/cmdgen.py
index c97e281..42844fe 100644
--- a/pysnmp/entity/rfc3413/cmdgen.py
+++ b/pysnmp/entity/rfc3413/cmdgen.py
@@ -423,7 +423,9 @@ class NextCommandGenerator(CommandGeneratorBase):
):
varBindTable = pMod.apiPDU.getVarBindTable(PDU, rspPDU)
- if pMod.apiPDU.getErrorStatus(rspPDU):
+ if not varBindTable:
+ errorIndication = 'emptyResponse'
+ elif pMod.apiPDU.getErrorStatus(rspPDU):
errorIndication = None
else:
if map(lambda (o,v): o, pMod.apiPDU.getVarBinds(PDU)) < \
@@ -543,7 +545,9 @@ class BulkCommandGenerator(CommandGeneratorBase):
):
varBindTable = pMod.apiBulkPDU.getVarBindTable(PDU, rspPDU)
- if pMod.apiBulkPDU.getErrorStatus(rspPDU):
+ if not varBindTable:
+ errorIndication = 'emptyResponse'
+ elif pMod.apiBulkPDU.getErrorStatus(rspPDU):
errorIndication = None
else:
if map(lambda (o,v): o, pMod.apiBulkPDU.getVarBinds(PDU)) < \
@@ -561,6 +565,7 @@ class BulkCommandGenerator(CommandGeneratorBase):
return # app says enough
pMod.apiBulkPDU.setRequestID(PDU, pMod.getNextRequestID())
+
pMod.apiBulkPDU.setVarBinds(
PDU, map(lambda (x,y),n=pMod.Null(''): (x,n), varBindTable[-1])
)