>> The plot thickens; with "16bitIDs yes" set, the following PHP script
>> will crash before finishing (assuming that the snmpget actually
>> works):
>> <?
>> $maxI = 100000;
>> for( $i = 0; $i < $maxI; $i++ ) {
>>        echo "$i :: ";
>>        snmpget( '127.0.0.1', 'public', 'sysDescr.0' );
>> }
>> ?>
>>
>> Removing "16bitIDs yes" allows this script to finish withoutA trouble.
>>
>
> Preliminary tests show that net-snmp 5.4.3 does *not* have the issue;
> I'll be diffing the code to see what the problem was...
>

It looks like the following may have fixed the issue; apparently the
crash happens when the request ID gets to 0 (I see the request go out
and come back, but then we crash).  This change apparently guarantees
that a nonzero request ID is returned.

--- net-snmp-5.4.2.1/snmplib/snmp_api.c 2008-05-27 17:22:12.000000000 -0400
+++ net-snmp-5.4.3/snmplib/snmp_api.c   2009-08-26 10:50:10.000000000 -0400
@@ -412,65 +412,85 @@ snmp_get_next_reqid(void)
     long            retVal;
     snmp_res_lock(MT_LIBRARY_ID, MT_LIB_REQUESTID);
     retVal = 1 + Reqid;         /*MTCRITICAL_RESOURCE */
     if (!retVal)
         retVal = 2;
     Reqid = retVal;
-    snmp_res_unlock(MT_LIBRARY_ID, MT_LIB_REQUESTID);
     if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
NETSNMP_DS_LIB_16BIT_IDS))
-        return (retVal & 0x7fff);      /* mask to 15 bits */
+        retVal &= 0x7fff;      /* mask to 15 bits */
     else
-        return (retVal & 0x7fffffff);  /* mask to 31 bits */
+        retVal &= 0x7fffffff;  /* mask to 31 bits */
+
+    if (!retVal) {
+        Reqid = retVal = 2;
+    }
+    snmp_res_unlock(MT_LIBRARY_ID, MT_LIB_REQUESTID);
+    return retVal;
 }

Thanks for all the help.

------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to