Changeset 1949

Show
Ignore:
Timestamp:
11/19/04 12:57:51 (19 years ago)
Author:
jalet
Message:

Modified the SNMP fix as hinted by pysnmp's maintainer

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/accounters/hardware.py

    r1948 r1949  
    2222# 
    2323# $Log$ 
     24# Revision 1.34  2004/11/19 11:57:51  jalet 
     25# Modified the SNMP fix as hinted by pysnmp's maintainer 
     26# 
    2427# Revision 1.33  2004/11/19 10:35:37  jalet 
    2528# Catches TypeMismatchError in SNMP answer handling code 
     
    182185            try : 
    183186                tsp.sendAndReceive(req.berEncode(), (self.printerHostname, 161), (self.handleAnswer, req)) 
    184             except (TypeMismatchError, SnmpOverUdpError), msg :     
     187            except SnmpOverUdpError, msg :     
    185188                self.parent.filter.printInfo(_("Network error while doing SNMP queries on printer %s : %s") % (self.printerHostname, msg), "warn") 
    186189            tsp.close() 
     
    188191        def handleAnswer(self, wholeMsg, notusedhere, req): 
    189192            """Decodes and handles the SNMP answer.""" 
     193            self.parent.filter.logdebug("SNMP message : '%s'" % repr(wholeMsg)) 
    190194            ver = alpha.protoVersions[alpha.protoVersionId1] 
    191195            rsp = ver.Message() 
    192             rsp.berDecode(wholeMsg) 
    193             if req.apiAlphaMatch(rsp): 
    194                 errorStatus = rsp.apiAlphaGetPdu().apiAlphaGetErrorStatus() 
    195                 if errorStatus: 
    196                     self.parent.filter.printInfo(_("Problem encountered while doing SNMP queries on printer %s : %s") % (self.printerHostname, errorStatus), "warn") 
    197                 else: 
    198                     self.values = [] 
    199                     for varBind in rsp.apiAlphaGetPdu().apiAlphaGetVarBindList(): 
    200                         self.values.append(varBind.apiAlphaGetOidVal()[1].rawAsn1Value) 
    201                     try :     
    202                         # keep maximum value seen for printer's internal page counter 
    203                         self.printerInternalPageCounter = max(self.printerInternalPageCounter, self.values[0]) 
    204                         self.printerStatus = self.values[1] 
    205                     except IndexError :     
    206                         pass 
    207                     else :     
    208                         return 1 
     196            try : 
     197                rsp.berDecode(wholeMsg) 
     198            except TypeMismatchError, msg :     
     199                self.parent.filter.printInfo(_("SNMP message decoding error for printer %s : %s") % (self.printerHostname, msg), "warn") 
     200            else : 
     201                if req.apiAlphaMatch(rsp): 
     202                    errorStatus = rsp.apiAlphaGetPdu().apiAlphaGetErrorStatus() 
     203                    if errorStatus: 
     204                        self.parent.filter.printInfo(_("Problem encountered while doing SNMP queries on printer %s : %s") % (self.printerHostname, errorStatus), "warn") 
     205                    else: 
     206                        self.values = [] 
     207                        for varBind in rsp.apiAlphaGetPdu().apiAlphaGetVarBindList(): 
     208                            self.values.append(varBind.apiAlphaGetOidVal()[1].rawAsn1Value) 
     209                        try :     
     210                            # keep maximum value seen for printer's internal page counter 
     211                            self.printerInternalPageCounter = max(self.printerInternalPageCounter, self.values[0]) 
     212                            self.printerStatus = self.values[1] 
     213                        except IndexError :     
     214                            pass 
     215                        else :     
     216                            return 1 
    209217                         
    210218        def waitPrinting(self) :