]> granicus.if.org Git - apache/commitdiff
Add monitor hook (discussed under "watchdog" thread).
authorNick Kew <niq@apache.org>
Tue, 7 Jun 2005 19:13:37 +0000 (19:13 +0000)
committerNick Kew <niq@apache.org>
Tue, 7 Jun 2005 19:13:37 +0000 (19:13 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@188846 13f79535-47bb-0310-9956-ffa450edef68

include/mpm_common.h
server/mpm_common.c

index 1fdac30671aac3333d34da3227a3ecd4f9eb0674..a36b926ff570c60c62acb4d458d2b63025987676 100644 (file)
@@ -296,6 +296,8 @@ extern const char *ap_mpm_set_exception_hook(cmd_parms *cmd, void *dummy,
                                              const char *arg);
 #endif
 
+AP_DECLARE_HOOK(int,monitor,(apr_pool_t *p))
+
 #ifdef __cplusplus
 }
 #endif
index 2d502b47a6bcc7e5b7a2b6f238eb32a0291dbe9a..e6bf91ffbed9c32138eda05699c64388c3abc13f 100644 (file)
 #include <unistd.h>
 #endif
 
+APR_HOOK_STRUCT(
+#if AP_ENABLE_EXCEPTION_HOOK
+    APR_HOOK_LINK(fatal_exception)
+#endif
+    APR_HOOK_LINK(monitor)
+)
+
+#if AP_ENABLE_EXCEPTION_HOOK
+AP_IMPLEMENT_HOOK_RUN_ALL(int, fatal_exception,
+                          (ap_exception_info_t *ei), (ei), OK, DECLINED)
+#endif
+AP_IMPLEMENT_HOOK_RUN_ALL(int, monitor,
+                          (apr_pool_t *p), (p), OK, DECLINED)
+
+
 #ifdef AP_MPM_WANT_RECLAIM_CHILD_PROCESSES
 
 typedef enum {DO_NOTHING, SEND_SIGTERM, SEND_SIGKILL, GIVEUP} action_t;
@@ -275,6 +290,7 @@ void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret,
     ++wait_or_timeout_counter;
     if (wait_or_timeout_counter == INTERVAL_OF_WRITABLE_PROBES) {
         wait_or_timeout_counter = 0;
+        ap_run_monitor(p);
     }
 
     rv = apr_proc_wait_all_procs(ret, exitcode, status, APR_NOWAIT, p);
@@ -1028,13 +1044,6 @@ const char *ap_mpm_set_exception_hook(cmd_parms *cmd, void *dummy,
     return NULL;
 }
 
-APR_HOOK_STRUCT(
-    APR_HOOK_LINK(fatal_exception)
-)
-
-AP_IMPLEMENT_HOOK_RUN_ALL(int, fatal_exception,
-                          (ap_exception_info_t *ei), (ei), OK, DECLINED)
-
 static void run_fatal_exception_hook(int sig)
 {
     ap_exception_info_t ei = {0};