diff options
author | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2009-09-24 23:50:39 +0000 |
---|---|---|
committer | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2009-09-24 23:50:39 +0000 |
commit | 18ecb4282108afe096df4958d992c80bb5f2b570 (patch) | |
tree | d41d1b895293498ec62aa785616eb291919db0cf /cups/snmp.c | |
parent | 7a0cbd5e5715d715c3fddfaace2f800ef820d328 (diff) |
Merge changes from CUPS 1.5svn-r8829.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1695 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'cups/snmp.c')
-rw-r--r-- | cups/snmp.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/cups/snmp.c b/cups/snmp.c index d37582b96..c9951702e 100644 --- a/cups/snmp.c +++ b/cups/snmp.c @@ -608,6 +608,8 @@ _cupsSNMPWalk(int fd, /* I - SNMP socket */ int count = 0; /* Number of OIDs found */ int request_id = 0; /* Current request ID */ cups_snmp_t packet; /* Current response packet */ + int lastoid[CUPS_SNMP_MAX_OID]; + /* Last OID we got */ /* @@ -631,14 +633,15 @@ _cupsSNMPWalk(int fd, /* I - SNMP socket */ */ _cupsSNMPCopyOID(packet.object_name, prefix, CUPS_SNMP_MAX_OID); + lastoid[0] = -1; for (;;) { request_id ++; if (!_cupsSNMPWrite(fd, address, version, community, - CUPS_ASN1_GET_NEXT_REQUEST, request_id, - packet.object_name)) + CUPS_ASN1_GET_NEXT_REQUEST, request_id, + packet.object_name)) { DEBUG_puts("5_cupsSNMPWalk: Returning -1"); @@ -652,7 +655,8 @@ _cupsSNMPWalk(int fd, /* I - SNMP socket */ return (-1); } - if (!_cupsSNMPIsOIDPrefixed(&packet, prefix)) + if (!_cupsSNMPIsOIDPrefixed(&packet, prefix) || + _cupsSNMPIsOID(&packet, lastoid)) { DEBUG_printf(("5_cupsSNMPWalk: Returning %d", count)); @@ -666,6 +670,8 @@ _cupsSNMPWalk(int fd, /* I - SNMP socket */ return (count > 0 ? count : -1); } + _cupsSNMPCopyOID(lastoid, packet.object_name, CUPS_SNMP_MAX_OID); + count ++; (*cb)(&packet, data); @@ -1280,7 +1286,7 @@ asn1_get_integer( int value; /* Integer value */ - for (value = 0; + for (value = (**buffer & 0x80) ? -1 : 0; length > 0 && *buffer < bufend; length --, (*buffer) ++) value = (value << 8) | **buffer; |