]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
make mod_snmp module unload more failsafe
authorDaniel Swarbrick <daniel@seventhsignal.de>
Mon, 24 Jan 2011 23:26:58 +0000 (00:26 +0100)
committerDaniel Swarbrick <daniel@seventhsignal.de>
Mon, 24 Jan 2011 23:27:18 +0000 (00:27 +0100)
src/mod/event_handlers/mod_snmp/mod_snmp.c

index 040e82b602afb530fa2d86a5b2bd5703e4b3b30b..36a133c80504472486389e921b70a3781a2b6e8f 100644 (file)
@@ -98,6 +98,13 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_snmp_load)
        netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
 
        init_agent("mod_snmp");
+
+       /*
+        * Override master/subagent ping interval to 5s, to ensure that
+        * agent_check_and_process() never blocks for longer than that.
+        */
+       netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 5);
+
        init_subagent();  
        init_snmp("mod_snmp");
 
@@ -107,8 +114,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_snmp_load)
 
 SWITCH_MODULE_RUNTIME_FUNCTION(mod_snmp_runtime)
 {
-       /* block on select() */
-       agent_check_and_process(1);
+       while (!globals.shutdown) {
+               /* Block on select() */
+               agent_check_and_process(1);
+       }
 
        return SWITCH_STATUS_SUCCESS;
 }