diff options
author | elie <elie> | 2010-11-14 00:16:56 +0000 |
---|---|---|
committer | elie <elie> | 2010-11-14 00:16:56 +0000 |
commit | 407fb3430dbe5a7ebe26a3a8fe688da06be5ce93 (patch) | |
tree | ce93c37fd7f3dfb3e904fcb551a0263814dfd256 /pysnmp/entity/rfc3413/cmdgen.py | |
parent | bad5ac4ef0793187dc98e0a6204abf02d4b43da7 (diff) | |
download | pysnmp-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.py | 9 |
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]) ) |