diff -r 3909fd766280 -r eced0b6e2f82 components/net-snmp/patches/036.16356248.mteTrigger.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/net-snmp/patches/036.16356248.mteTrigger.patch Mon Mar 24 23:05:55 2014 -0700 @@ -0,0 +1,65 @@ +This patch fixes the issue related to delayed response +of the snmpd agent when monitors are used. + +This patch is taken from the community for the following bug. +snmpd: PATCH: 1918383: Fix DisMan monitoring of AgentX subagents +http://sourceforge.net/p/net-snmp/patches/897/ +--- net-snmp-5.4.1.old/agent/mibgroup/utilities/iquery.c 2006-10-12 15:21:28.000000000 -0700 ++++ net-snmp-5.4.1/agent/mibgroup/utilities/iquery.c 2013-07-09 14:39:34.856060200 -0700 +@@ -159,6 +159,8 @@ + memdup( &(ss->community), secName, strlen(secName)); + ss->community_len = strlen(secName); + } ++ ss->myvoid = netsnmp_check_outstanding_agent_requests; ++ ss->flags |= SNMP_FLAGS_RESP_CALLBACK | SNMP_FLAGS_DONT_PROBE; + } + #endif + +--- net-snmp-5.4.1.old/include/net-snmp/library/snmp_api.h 2007-03-23 02:44:49.000000000 -0700 ++++ net-snmp-5.4.1/include/net-snmp/library/snmp_api.h 2013-05-08 02:17:51.242309300 -0700 +@@ -300,7 +300,10 @@ + void *securityInfo; + + /** +- * use as you want data ++ * use as you want data ++ * ++ * used by 'SNMP_FLAGS_RESP_CALLBACK' handling in the agent ++ * XXX: or should we add a new field into this structure? + */ + void *myvoid; + }; +@@ -394,6 +397,7 @@ + + #define SNMP_DETAIL_SIZE 512 + ++#define SNMP_FLAGS_RESP_CALLBACK 0x400 /* Additional callback on response */ + #define SNMP_FLAGS_USER_CREATED 0x200 /* USM user has been created */ + #define SNMP_FLAGS_DONT_PROBE 0x100 /* don't probe for an engineID */ + #define SNMP_FLAGS_STREAM_SOCKET 0x80 +--- net-snmp-5.4.1.old/snmplib/snmp_client.c 2007-07-03 15:36:42.000000000 -0700 ++++ net-snmp-5.4.1/snmplib/snmp_client.c 2013-07-09 14:48:09.041945100 -0700 +@@ -1014,7 +1014,7 @@ + count = select(numfds, &fdset, 0, 0, tvp); + if (count > 0) { + snmp_read(&fdset); +- } else ++ } else { + switch (count) { + case 0: + snmp_timeout(); +@@ -1040,6 +1040,14 @@ + state->status = STAT_ERROR; + state->waiting = 0; + } ++ } ++ ++ if ( ss->flags & SNMP_FLAGS_RESP_CALLBACK ) { ++ void (*cb)(void); ++ cb = ss->myvoid; ++ cb(); /* Used to invoke 'netsnmp_check_outstanding_agent_requests();' ++ on internal AgentX queries. */ ++ } + } + *response = state->pdu; + ss->callback = cbsav;