summaryrefslogtreecommitdiff
path: root/cups/snmp.c
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2009-09-24 23:50:39 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2009-09-24 23:50:39 +0000
commit18ecb4282108afe096df4958d992c80bb5f2b570 (patch)
treed41d1b895293498ec62aa785616eb291919db0cf /cups/snmp.c
parent7a0cbd5e5715d715c3fddfaace2f800ef820d328 (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.c14
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;