This patch creates a new hook, pre_mpm. ap_create_scoreboard is moved to a
function registered with the pre_mpm hook.
This allows modules like mod_snmp and others to register further functions
to be run in relation to the creation of the scoreboard, and before mpm.
--
Cody Sherr
Engineer
Covalent Technologies
phone: (415)536-5292
email: [EMAIL PROTECTED]
Index: include/scoreboard.h
===================================================================
RCS file: /home/cvspublic/httpd-2.0/include/scoreboard.h,v
retrieving revision 1.25
diff -u -r1.25 scoreboard.h
--- include/scoreboard.h 2001/07/16 02:29:33 1.25
+++ include/scoreboard.h 2001/07/17 00:25:04
@@ -69,7 +69,9 @@
#include <time.h>
#endif
+#include "ap_config.h"
#include "mpm_default.h" /* For HARD_.*_LIMIT */
+#include "apr_hooks.h"
#include "apr_thread_proc.h"
#include "apr_portable.h"
@@ -220,6 +222,15 @@
AP_DECLARE_DATA extern apr_time_t ap_restart_time;
AP_DECLARE_DATA extern ap_generation_t volatile ap_my_generation;
+
+/* Hooks */
+/**
+ * Hook for post scoreboard creation, pre mpm.
+ * @param p Apache pool to allocate from.
+ * @param sb_type
+ * @ingroup hooks
+ */
+AP_DECLARE_HOOK(void, pre_mpm, (apr_pool_t *p, ap_scoreboard_e sb_type))
/* for time_process_request() in http_main.c */
#define START_PREQUEST 1
Index: server/core.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/core.c,v
retrieving revision 1.25
diff -u -r1.25 core.c
--- server/core.c 2001/07/06 18:41:56 1.25
+++ server/core.c 2001/07/17 00:25:06
@@ -3319,6 +3319,7 @@
ap_hook_type_checker(do_nothing,NULL,NULL,APR_HOOK_REALLY_LAST);
ap_hook_access_checker(do_nothing,NULL,NULL,APR_HOOK_REALLY_LAST);
ap_hook_create_request(core_create_req, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_pre_mpm(ap_create_scoreboard, NULL, NULL, APR_HOOK_MIDDLE);
/* register the core's insert_filter hook and register core-provided
* filters
Index: server/scoreboard.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/scoreboard.c,v
retrieving revision 1.27
diff -u -r1.27 scoreboard.c
--- server/scoreboard.c 2001/07/16 02:29:33 1.27
+++ server/scoreboard.c 2001/07/17 00:25:06
@@ -88,6 +88,15 @@
#include "apr_shmem.h"
static apr_shmem_t *scoreboard_shm = NULL;
#endif
+
+APR_HOOK_STRUCT(
+ APR_HOOK_LINK(pre_mpm)
+)
+
+AP_IMPLEMENT_HOOK_VOID(pre_mpm,
+ (apr_pool_t *p, ap_scoreboard_e sb_type),
+ (p, sb_type))
+
/*
* ToDo:
* This function should be renamed to cleanup_shared
Index: server/mpm/beos/beos.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/beos/beos.c,v
retrieving revision 1.53
diff -u -r1.53 beos.c
--- server/mpm/beos/beos.c 2001/06/27 17:43:33 1.53
+++ server/mpm/beos/beos.c 2001/07/17 00:25:06
@@ -764,7 +764,7 @@
*/
if (!is_graceful)
- ap_create_scoreboard(pconf, SB_SHARED);
+ ap_run_pre_mpm(pconf, SB_SHARED);
if (!is_graceful) {
for (i = 0; i < HARD_SERVER_LIMIT; i++) {
Index: server/mpm/perchild/perchild.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/perchild/perchild.c,v
retrieving revision 1.69
diff -u -r1.69 perchild.c
--- server/mpm/perchild/perchild.c 2001/06/27 17:43:36 1.69
+++ server/mpm/perchild/perchild.c 2001/07/17 00:25:07
@@ -1208,7 +1208,7 @@
}
if (!is_graceful) {
- ap_create_scoreboard(pconf, SB_SHARED);
+ ap_run_pre_mpm(pconf, SB_SHARED);
}
/* Initialize the child table */
if (!is_graceful) {
Index: server/mpm/prefork/prefork.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/prefork/prefork.c,v
retrieving revision 1.190
diff -u -r1.190 prefork.c
--- server/mpm/prefork/prefork.c 2001/07/16 02:29:33 1.190
+++ server/mpm/prefork/prefork.c 2001/07/17 00:25:07
@@ -1106,7 +1106,7 @@
SAFE_ACCEPT(accept_mutex_init(pconf));
if (!is_graceful) {
- ap_create_scoreboard(pconf, SB_SHARED);
+ ap_run_pre_mpm(pconf, SB_SHARED);
}
#ifdef SCOREBOARD_FILE
else {
Index: server/mpm/spmt_os2/spmt_os2.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/spmt_os2/spmt_os2.c,v
retrieving revision 1.96
diff -u -r1.96 spmt_os2.c
--- server/mpm/spmt_os2/spmt_os2.c 2001/06/27 17:43:43 1.96
+++ server/mpm/spmt_os2/spmt_os2.c 2001/07/17 00:25:07
@@ -938,7 +938,7 @@
SAFE_ACCEPT(accept_mutex_init(pconf));
if (!is_graceful) {
- ap_create_scoreboard(pconf, SB_NOT_SHARED);
+ ap_run_pre_mpm(pconf, SB_NOT_SHARED);
memset(thread_control, 0, sizeof(thread_control));
}
Index: server/mpm/threaded/threaded.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/threaded/threaded.c,v
retrieving revision 1.44
diff -u -r1.44 threaded.c
--- server/mpm/threaded/threaded.c 2001/07/03 13:58:10 1.44
+++ server/mpm/threaded/threaded.c 2001/07/17 00:25:08
@@ -1165,7 +1165,7 @@
}
if (!is_graceful) {
- ap_create_scoreboard(pconf, SB_SHARED);
+ ap_run_pre_mpm(pconf, SB_SHARED);
}
set_signals();
Index: server/mpm/winnt/mpm_winnt.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/winnt/mpm_winnt.c,v
retrieving revision 1.163
diff -u -r1.163 mpm_winnt.c
--- server/mpm/winnt/mpm_winnt.c 2001/07/16 18:14:51 1.163
+++ server/mpm/winnt/mpm_winnt.c 2001/07/17 00:25:08
@@ -1978,7 +1978,7 @@
"Child %d: Child process is running", my_pid);
/* Set up the scoreboard. */
- ap_create_scoreboard(pconf, SB_NOT_SHARED);
+ ap_run_pre_mpm(pconf, SB_NOT_SHARED);
if (one_process) {
if (ap_setup_listeners(server_conf) < 1) {
return 1;