Index: trunk/include/scoreboard.h =================================================================== --- trunk/include/scoreboard.h (revision 579232) +++ trunk/include/scoreboard.h (working copy) @@ -163,7 +163,7 @@ AP_DECLARE(int) ap_exists_scoreboard_image(void); AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sbh, request_rec *r); -int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t); +int ap_create_scoreboard(apr_pool_t *pglobal, ap_scoreboard_e t); apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached); void ap_init_scoreboard(void *shared_score); AP_DECLARE(int) ap_calc_scoreboard_size(void); @@ -192,12 +192,12 @@ /* Hooks */ /** * Hook for post scoreboard creation, pre mpm. - * @param p Apache pool to allocate from. + * @param pglobal Apache pool to allocate from. * @param sb_type * @ingroup hooks * @return OK or DECLINE on success; anything else is a error */ -AP_DECLARE_HOOK(int, pre_mpm, (apr_pool_t *p, ap_scoreboard_e sb_type)) +AP_DECLARE_HOOK(int, pre_mpm, (apr_pool_t *pglobal, ap_scoreboard_e sb_type)) /** * proxy load balancer Index: trunk/modules/experimental/mod_example.c =================================================================== --- trunk/modules/experimental/mod_example.c (revision 579232) +++ trunk/modules/experimental/mod_example.c (working copy) @@ -1384,7 +1384,7 @@ * * This is a RUN_ALL hook. */ -static int x_pre_mpm(apr_pool_t *p, ap_scoreboard_e sb_type) +static int x_pre_mpm(apr_pool_t *pglobal, ap_scoreboard_e sb_type) { trace_nocontext(p, __FILE__, __LINE__, "x_pre_mpm()"); return DECLINED; Index: trunk/server/scoreboard.c =================================================================== --- trunk/server/scoreboard.c (revision 579232) +++ trunk/server/scoreboard.c (working copy) @@ -57,7 +57,7 @@ ) AP_IMPLEMENT_HOOK_RUN_ALL(int,pre_mpm, - (apr_pool_t *p, ap_scoreboard_e sb_type), + (apr_pool_t *pglobal, ap_scoreboard_e sb_type), (p, sb_type),OK,DECLINED) static APR_OPTIONAL_FN_TYPE(ap_proxy_lb_workers) @@ -177,39 +177,27 @@ * a scoreboard shared between processes using any IPC technique, * not just a shared memory segment */ -static apr_status_t open_scoreboard(apr_pool_t *pconf) +static apr_status_t open_scoreboard(apr_pool_t *pglobal) { #if APR_HAS_SHARED_MEMORY apr_status_t rv; char *fname = NULL; - apr_pool_t *global_pool; - /* We don't want to have to recreate the scoreboard after - * restarts, so we'll create a global pool and never clean it. - */ - rv = apr_pool_create(&global_pool, NULL); - if (rv != APR_SUCCESS) { - ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL, - "Fatal error: unable to create global pool " - "for use by the scoreboard"); - return rv; - } - /* The config says to create a name-based shmem */ if (ap_scoreboard_fname) { /* make sure it's an absolute pathname */ - fname = ap_server_root_relative(pconf, ap_scoreboard_fname); + fname = ap_server_root_relative(pglobal, ap_scoreboard_fname); if (!fname) { ap_log_error(APLOG_MARK, APLOG_CRIT, APR_EBADPATH, NULL, "Fatal error: Invalid Scoreboard path %s", ap_scoreboard_fname); return APR_EBADPATH; } - return create_namebased_scoreboard(global_pool, fname); + return create_namebased_scoreboard(pglobal, fname); } else { /* config didn't specify, we get to choose shmem type */ rv = apr_shm_create(&ap_scoreboard_shm, scoreboard_size, NULL, - global_pool); /* anonymous shared memory */ + pglobal); /* anonymous shared memory */ if ((rv != APR_SUCCESS) && (rv != APR_ENOTIMPL)) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL, "Unable to create or access scoreboard " @@ -220,9 +208,9 @@ else if (rv == APR_ENOTIMPL) { /* Make sure it's an absolute pathname */ ap_scoreboard_fname = DEFAULT_SCOREBOARD; - fname = ap_server_root_relative(pconf, ap_scoreboard_fname); + fname = ap_server_root_relative(pglobal, ap_scoreboard_fname); - return create_namebased_scoreboard(global_pool, fname); + return create_namebased_scoreboard(pglobal, fname); } } #endif /* APR_HAS_SHARED_MEMORY */ @@ -272,7 +260,7 @@ /* Create or reinit an existing scoreboard. The MPM can control whether * the scoreboard is shared across multiple processes or not */ -int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e sb_type) +int ap_create_scoreboard(apr_pool_t *pglobal, ap_scoreboard_e sb_type) { int running_gen = 0; int i; @@ -301,7 +289,7 @@ #if APR_HAS_SHARED_MEMORY if (sb_type == SB_SHARED) { void *sb_shared; - rv = open_scoreboard(p); + rv = open_scoreboard(pglobal); if (rv || !(sb_shared = apr_shm_baseaddr_get(ap_scoreboard_shm))) { return HTTP_INTERNAL_SERVER_ERROR; } @@ -326,7 +314,7 @@ ap_scoreboard_image->global->running_generation = running_gen; ap_scoreboard_image->global->restart_time = apr_time_now(); - apr_pool_cleanup_register(p, NULL, ap_cleanup_scoreboard, apr_pool_cleanup_null); + apr_pool_cleanup_register(pglobal, NULL, ap_cleanup_scoreboard, apr_pool_cleanup_null); return OK; }