1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/snmp/snmp_agentx.patch Wed Sep 21 16:28:06 2011 +0200 1.3 @@ -0,0 +1,74 @@ 1.4 +diff Nau agent/snmp_agent.c.orig agent/snmp_agent.c 1.5 +Index: agent/snmp_agent.c 1.6 +--- agent/snmp_agent.c.orig 1.7 ++++ agent/snmp_agent.c 1.8 +@@ -1535,38 +1535,42 @@ int 1.9 + netsnmp_remove_delegated_requests_for_session(netsnmp_session *sess) 1.10 + { 1.11 + netsnmp_agent_session *asp; 1.12 +- int count = 0; 1.13 +- 1.14 +- for (asp = agent_delegated_list; asp; asp = asp->next) { 1.15 +- /* 1.16 +- * check each request 1.17 +- */ 1.18 +- netsnmp_request_info *request; 1.19 +- for(request = asp->requests; request; request = request->next) { 1.20 +- /* 1.21 +- * check session 1.22 +- */ 1.23 +- netsnmp_assert(NULL!=request->subtree); 1.24 +- if(request->subtree->session != sess) 1.25 +- continue; 1.26 ++ int count; 1.27 + 1.28 ++ do { 1.29 ++ count = 0; 1.30 ++ for (asp = agent_delegated_list; asp; asp = asp->next) { 1.31 + /* 1.32 +- * matched! mark request as done 1.33 ++ * check each request 1.34 + */ 1.35 +- netsnmp_request_set_error(request, SNMP_ERR_GENERR); 1.36 +- ++count; 1.37 ++ netsnmp_request_info *request; 1.38 ++ for(request = asp->requests; request; request = request->next) { 1.39 ++ /* 1.40 ++ * check session 1.41 ++ */ 1.42 ++ netsnmp_assert(NULL!=request->subtree); 1.43 ++ if(request->subtree->session != sess) 1.44 ++ continue; 1.45 ++ 1.46 ++ /* 1.47 ++ * matched! mark request as done 1.48 ++ */ 1.49 ++ netsnmp_request_set_error(request, SNMP_ERR_GENERR); 1.50 ++ ++count; 1.51 ++ } 1.52 + } 1.53 +- } 1.54 + 1.55 +- /* 1.56 +- * if we found any, that request may be finished now 1.57 +- */ 1.58 +- if(count) { 1.59 +- DEBUGMSGTL(("snmp_agent", "removed %d delegated request(s) for session " 1.60 +- "%8p\n", count, sess)); 1.61 +- netsnmp_check_outstanding_agent_requests(); 1.62 +- } 1.63 +- 1.64 ++ /* 1.65 ++ * if we found any, that request may be finished now 1.66 ++ */ 1.67 ++ if(count) { 1.68 ++ DEBUGMSGTL(("snmp_agent", "removed %d delegated request(s) for session " 1.69 ++ "%8p\n", count, sess)); 1.70 ++ netsnmp_check_outstanding_agent_requests(); 1.71 ++ /* the request may get delegated if it was GETNEXT, retry the loop */ 1.72 ++ } 1.73 ++ } while (count); 1.74 ++ 1.75 + return count; 1.76 + } 1.77 +