snmp/snmp_agentx.patch

changeset 384
590d931d793c
     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 + 

mercurial