mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-31 19:10:37 +03:00 
			
		
		
		
	Revert r1294936 (Jeff's revert) and fix NetWare / Win32 build.
Added the missing AP_DECLARE* decorations for the function implementations and variables. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1303201 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
		
							
								
								
									
										2
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								CHANGES
									
									
									
									
									
								
							| @@ -14,6 +14,8 @@ Changes with Apache 2.5.0 | |||||||
|   *) core: Add filesystem paths to access denied / access failed messages |   *) core: Add filesystem paths to access denied / access failed messages | ||||||
|      AH00035 and AH00036. [Eric Covener] |      AH00035 and AH00036. [Eric Covener] | ||||||
|  |  | ||||||
|  |   *) Fix MPM DSO load failure on AIX.  [Jeff Trawick] | ||||||
|  |  | ||||||
|   *) core: Add the port number to the vhost's name in the scoreboard. |   *) core: Add the port number to the vhost's name in the scoreboard. | ||||||
|      [Stefan Fritsch] |      [Stefan Fritsch] | ||||||
|  |  | ||||||
|   | |||||||
| @@ -89,6 +89,7 @@ extern "C" { | |||||||
| typedef void ap_reclaim_callback_fn_t(int childnum, pid_t pid, | typedef void ap_reclaim_callback_fn_t(int childnum, pid_t pid, | ||||||
|                                       ap_generation_t gen); |                                       ap_generation_t gen); | ||||||
|  |  | ||||||
|  | #ifndef NETWARE | ||||||
| /** | /** | ||||||
|  * Make sure all child processes that have been spawned by the parent process |  * Make sure all child processes that have been spawned by the parent process | ||||||
|  * have died.  This includes process registered as "other_children". |  * have died.  This includes process registered as "other_children". | ||||||
| @@ -102,7 +103,7 @@ typedef void ap_reclaim_callback_fn_t(int childnum, pid_t pid, | |||||||
|  * in the scoreboard as well as those currently registered via |  * in the scoreboard as well as those currently registered via | ||||||
|  * ap_register_extra_mpm_process(). |  * ap_register_extra_mpm_process(). | ||||||
|  */ |  */ | ||||||
| void ap_reclaim_child_processes(int terminate, | AP_DECLARE(void) ap_reclaim_child_processes(int terminate, | ||||||
|                                             ap_reclaim_callback_fn_t *mpm_callback); |                                             ap_reclaim_callback_fn_t *mpm_callback); | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -115,7 +116,7 @@ void ap_reclaim_child_processes(int terminate, | |||||||
|  * in the scoreboard as well as those currently registered via |  * in the scoreboard as well as those currently registered via | ||||||
|  * ap_register_extra_mpm_process(). |  * ap_register_extra_mpm_process(). | ||||||
|  */ |  */ | ||||||
| void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback); | AP_DECLARE(void) ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Tell ap_reclaim_child_processes() and ap_relieve_child_processes() about |  * Tell ap_reclaim_child_processes() and ap_relieve_child_processes() about | ||||||
| @@ -128,7 +129,7 @@ void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback); | |||||||
|  * ap_reclaim_child_processes(), remove it from the list of such processes |  * ap_reclaim_child_processes(), remove it from the list of such processes | ||||||
|  * by calling ap_unregister_extra_mpm_process(). |  * by calling ap_unregister_extra_mpm_process(). | ||||||
|  */ |  */ | ||||||
| void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen); | AP_DECLARE(void) ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Unregister an MPM child process which was previously registered by a |  * Unregister an MPM child process which was previously registered by a | ||||||
| @@ -138,12 +139,7 @@ void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen); | |||||||
|  * @param old_gen Set to the server generation of the process, if found. |  * @param old_gen Set to the server generation of the process, if found. | ||||||
|  * @return 1 if the process was found and removed, 0 otherwise |  * @return 1 if the process was found and removed, 0 otherwise | ||||||
|  */ |  */ | ||||||
| int ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen); | AP_DECLARE(int) ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen); | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Pool cleanup for end-generation hook implementation |  | ||||||
|  */ |  | ||||||
| apr_status_t ap_mpm_end_gen_helper(void *unused); |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Safely signal an MPM child process, if the process is in the |  * Safely signal an MPM child process, if the process is in the | ||||||
| @@ -154,7 +150,27 @@ apr_status_t ap_mpm_end_gen_helper(void *unused); | |||||||
|  * APR_EINVAL is returned if passed either an invalid (< 1) pid, or if |  * APR_EINVAL is returned if passed either an invalid (< 1) pid, or if | ||||||
|  * the pid is not in the current process group |  * the pid is not in the current process group | ||||||
|  */ |  */ | ||||||
| apr_status_t ap_mpm_safe_kill(pid_t pid, int sig); | AP_DECLARE(apr_status_t) ap_mpm_safe_kill(pid_t pid, int sig); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Log why a child died to the error log, if the child died without the | ||||||
|  |  * parent signalling it. | ||||||
|  |  * @param pid The child that has died | ||||||
|  |  * @param why The return code of the child process | ||||||
|  |  * @param status The status returned from ap_wait_or_timeout | ||||||
|  |  * @return 0 on success, APEXIT_CHILDFATAL if MPM should terminate | ||||||
|  |  */ | ||||||
|  | AP_DECLARE(int) ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status); | ||||||
|  |  | ||||||
|  | AP_DECLARE(apr_status_t) ap_fatal_signal_setup(server_rec *s, apr_pool_t *pconf); | ||||||
|  | AP_DECLARE(apr_status_t) ap_fatal_signal_child_setup(server_rec *s); | ||||||
|  | #endif /* !NETWARE */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Pool cleanup for end-generation hook implementation | ||||||
|  |  * (core httpd function) | ||||||
|  |  */ | ||||||
|  | apr_status_t ap_mpm_end_gen_helper(void *unused); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Run the monitor hook (once every ten calls), determine if any child |  * Run the monitor hook (once every ten calls), determine if any child | ||||||
| @@ -166,18 +182,9 @@ apr_status_t ap_mpm_safe_kill(pid_t pid, int sig); | |||||||
|  * @param p The pool to allocate out of |  * @param p The pool to allocate out of | ||||||
|  * @param s The server_rec to pass |  * @param s The server_rec to pass | ||||||
|  */ |  */ | ||||||
| void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret, | AP_DECLARE(void) ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, | ||||||
|                         apr_pool_t *p, server_rec *s); |                                     apr_proc_t *ret, apr_pool_t *p,  | ||||||
|  |                                     server_rec *s); | ||||||
| /** |  | ||||||
|  * Log why a child died to the error log, if the child died without the |  | ||||||
|  * parent signalling it. |  | ||||||
|  * @param pid The child that has died |  | ||||||
|  * @param why The return code of the child process |  | ||||||
|  * @param status The status returned from ap_wait_or_timeout |  | ||||||
|  * @return 0 on success, APEXIT_CHILDFATAL if MPM should terminate |  | ||||||
|  */ |  | ||||||
| int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status); |  | ||||||
|  |  | ||||||
| #if defined(TCP_NODELAY) | #if defined(TCP_NODELAY) | ||||||
| /** | /** | ||||||
| @@ -289,14 +296,14 @@ AP_DECLARE(const char *) ap_check_mpm(void); | |||||||
|  * The maximum number of requests each child thread or |  * The maximum number of requests each child thread or | ||||||
|  * process handles before dying off |  * process handles before dying off | ||||||
|  */ |  */ | ||||||
| extern int ap_max_requests_per_child; | AP_DECLARE_DATA extern int ap_max_requests_per_child; | ||||||
| const char *ap_mpm_set_max_requests(cmd_parms *cmd, void *dummy, | const char *ap_mpm_set_max_requests(cmd_parms *cmd, void *dummy, | ||||||
|                                     const char *arg); |                                     const char *arg); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * The filename used to store the process id. |  * The filename used to store the process id. | ||||||
|  */ |  */ | ||||||
| extern const char *ap_pid_fname; | AP_DECLARE_DATA extern const char *ap_pid_fname; | ||||||
| const char *ap_mpm_set_pidfile(cmd_parms *cmd, void *dummy, | const char *ap_mpm_set_pidfile(cmd_parms *cmd, void *dummy, | ||||||
|                                const char *arg); |                                const char *arg); | ||||||
| void ap_mpm_dump_pidfile(apr_pool_t *p, apr_file_t *out); | void ap_mpm_dump_pidfile(apr_pool_t *p, apr_file_t *out); | ||||||
| @@ -304,16 +311,16 @@ void ap_mpm_dump_pidfile(apr_pool_t *p, apr_file_t *out); | |||||||
| /* | /* | ||||||
|  * The directory that the server changes directory to dump core. |  * The directory that the server changes directory to dump core. | ||||||
|  */ |  */ | ||||||
| extern char ap_coredump_dir[MAX_STRING_LEN]; | AP_DECLARE_DATA extern char ap_coredump_dir[MAX_STRING_LEN]; | ||||||
| extern int ap_coredumpdir_configured; | AP_DECLARE_DATA extern int ap_coredumpdir_configured; | ||||||
| const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy, | const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy, | ||||||
|                                    const char *arg); |                                    const char *arg); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Set the timeout period for a graceful shutdown. |  * Set the timeout period for a graceful shutdown. | ||||||
|  */ |  */ | ||||||
| extern int ap_graceful_shutdown_timeout; | AP_DECLARE_DATA extern int ap_graceful_shutdown_timeout; | ||||||
| const char *ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy, | AP_DECLARE(const char *)ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy, | ||||||
|                                          const char *arg); |                                          const char *arg); | ||||||
| #define AP_GRACEFUL_SHUTDOWN_TIMEOUT_COMMAND \ | #define AP_GRACEFUL_SHUTDOWN_TIMEOUT_COMMAND \ | ||||||
| AP_INIT_TAKE1("GracefulShutdownTimeout", ap_mpm_set_graceful_shutdown, NULL, \ | AP_INIT_TAKE1("GracefulShutdownTimeout", ap_mpm_set_graceful_shutdown, NULL, \ | ||||||
| @@ -324,17 +331,14 @@ AP_INIT_TAKE1("GracefulShutdownTimeout", ap_mpm_set_graceful_shutdown, NULL, \ | |||||||
| int ap_signal_server(int *, apr_pool_t *); | int ap_signal_server(int *, apr_pool_t *); | ||||||
| void ap_mpm_rewrite_args(process_rec *); | void ap_mpm_rewrite_args(process_rec *); | ||||||
|  |  | ||||||
| extern AP_DECLARE_DATA apr_uint32_t ap_max_mem_free; | AP_DECLARE_DATA extern apr_uint32_t ap_max_mem_free; | ||||||
| extern const char *ap_mpm_set_max_mem_free(cmd_parms *cmd, void *dummy, | extern const char *ap_mpm_set_max_mem_free(cmd_parms *cmd, void *dummy, | ||||||
|                                            const char *arg); |                                            const char *arg); | ||||||
|  |  | ||||||
| extern apr_size_t ap_thread_stacksize; | AP_DECLARE_DATA extern apr_size_t ap_thread_stacksize; | ||||||
| extern const char *ap_mpm_set_thread_stacksize(cmd_parms *cmd, void *dummy, | extern const char *ap_mpm_set_thread_stacksize(cmd_parms *cmd, void *dummy, | ||||||
|                                                const char *arg); |                                                const char *arg); | ||||||
|  |  | ||||||
| extern apr_status_t ap_fatal_signal_setup(server_rec *s, apr_pool_t *pconf); |  | ||||||
| extern apr_status_t ap_fatal_signal_child_setup(server_rec *s); |  | ||||||
|  |  | ||||||
| /* core's implementation of child_status hook */ | /* core's implementation of child_status hook */ | ||||||
| extern void ap_core_child_status(server_rec *s, pid_t pid, ap_generation_t gen, | extern void ap_core_child_status(server_rec *s, pid_t pid, ap_generation_t gen, | ||||||
|                                  int slot, mpm_child_status status); |                                  int slot, mpm_child_status status); | ||||||
|   | |||||||
| @@ -156,14 +156,21 @@ typedef struct { | |||||||
|  |  | ||||||
| typedef struct ap_sb_handle_t ap_sb_handle_t; | typedef struct ap_sb_handle_t ap_sb_handle_t; | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Creation and deletion (internal) | ||||||
|  |  */ | ||||||
|  | int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t); | ||||||
|  | apr_status_t ap_cleanup_scoreboard(void *d); | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * APIs for MPMs and other modules | ||||||
|  |  */ | ||||||
| AP_DECLARE(int) ap_exists_scoreboard_image(void); | AP_DECLARE(int) ap_exists_scoreboard_image(void); | ||||||
| AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sbh, request_rec *r); | 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); | AP_DECLARE(apr_status_t) ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached); | ||||||
| apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached); | AP_DECLARE(void) ap_init_scoreboard(void *shared_score); | ||||||
| void ap_init_scoreboard(void *shared_score); |  | ||||||
| AP_DECLARE(int) ap_calc_scoreboard_size(void); | AP_DECLARE(int) ap_calc_scoreboard_size(void); | ||||||
| apr_status_t ap_cleanup_scoreboard(void *d); |  | ||||||
|  |  | ||||||
| AP_DECLARE(void) ap_create_sb_handle(ap_sb_handle_t **new_sbh, apr_pool_t *p, | AP_DECLARE(void) ap_create_sb_handle(ap_sb_handle_t **new_sbh, apr_pool_t *p, | ||||||
|                                      int child_num, int thread_num); |                                      int child_num, int thread_num); | ||||||
|   | |||||||
| @@ -139,13 +139,13 @@ static struct mpm_gen_info_head_t *geninfo, *unused_geninfo; | |||||||
| static int gen_head_init; /* yuck */ | static int gen_head_init; /* yuck */ | ||||||
|  |  | ||||||
| /* variables representing config directives implemented here */ | /* variables representing config directives implemented here */ | ||||||
| const char *ap_pid_fname; | AP_DECLARE_DATA const char *ap_pid_fname; | ||||||
| int ap_max_requests_per_child; | AP_DECLARE_DATA int ap_max_requests_per_child; | ||||||
| char ap_coredump_dir[MAX_STRING_LEN]; | AP_DECLARE_DATA char ap_coredump_dir[MAX_STRING_LEN]; | ||||||
| int ap_coredumpdir_configured; | AP_DECLARE_DATA int ap_coredumpdir_configured; | ||||||
| int ap_graceful_shutdown_timeout; | AP_DECLARE_DATA int ap_graceful_shutdown_timeout; | ||||||
| AP_DECLARE_DATA apr_uint32_t ap_max_mem_free; | AP_DECLARE_DATA apr_uint32_t ap_max_mem_free; | ||||||
| apr_size_t ap_thread_stacksize; | AP_DECLARE_DATA apr_size_t ap_thread_stacksize; | ||||||
|  |  | ||||||
| #define ALLOCATOR_MAX_FREE_DEFAULT (2048*1024) | #define ALLOCATOR_MAX_FREE_DEFAULT (2048*1024) | ||||||
|  |  | ||||||
| @@ -170,8 +170,9 @@ void mpm_common_pre_config(apr_pool_t *pconf) | |||||||
| #endif | #endif | ||||||
| static int wait_or_timeout_counter; | static int wait_or_timeout_counter; | ||||||
|  |  | ||||||
| void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret, | AP_DECLARE(void) ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, | ||||||
|                         apr_pool_t *p, server_rec *s) |                                     apr_proc_t *ret, apr_pool_t *p, | ||||||
|  |                                     server_rec *s) | ||||||
| { | { | ||||||
|     apr_status_t rv; |     apr_status_t rv; | ||||||
|  |  | ||||||
| @@ -356,7 +357,8 @@ const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy, | |||||||
|     return NULL; |     return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| const char * ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy, | AP_DECLARE(const char *)ap_mpm_set_graceful_shutdown(cmd_parms *cmd, | ||||||
|  |                                                      void *dummy, | ||||||
|                                                      const char *arg) |                                                      const char *arg) | ||||||
| { | { | ||||||
|     const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); |     const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); | ||||||
|   | |||||||
| @@ -73,7 +73,7 @@ typedef struct extra_process_t { | |||||||
|  |  | ||||||
| static extra_process_t *extras; | static extra_process_t *extras; | ||||||
|  |  | ||||||
| void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen) | AP_DECLARE(void) ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen) | ||||||
| { | { | ||||||
|     extra_process_t *p = (extra_process_t *)ap_malloc(sizeof(extra_process_t)); |     extra_process_t *p = (extra_process_t *)ap_malloc(sizeof(extra_process_t)); | ||||||
|  |  | ||||||
| @@ -83,7 +83,7 @@ void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen) | |||||||
|     extras = p; |     extras = p; | ||||||
| } | } | ||||||
|  |  | ||||||
| int ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *gen) | AP_DECLARE(int) ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen) | ||||||
| { | { | ||||||
|     extra_process_t *cur = extras; |     extra_process_t *cur = extras; | ||||||
|     extra_process_t *prev = NULL; |     extra_process_t *prev = NULL; | ||||||
| @@ -173,7 +173,7 @@ static int reclaim_one_pid(pid_t pid, action_t action) | |||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| void ap_reclaim_child_processes(int terminate, | AP_DECLARE(void) ap_reclaim_child_processes(int terminate, | ||||||
|                                             ap_reclaim_callback_fn_t *mpm_callback) |                                             ap_reclaim_callback_fn_t *mpm_callback) | ||||||
| { | { | ||||||
|     apr_time_t waittime = 1024 * 16; |     apr_time_t waittime = 1024 * 16; | ||||||
| @@ -270,7 +270,7 @@ void ap_reclaim_child_processes(int terminate, | |||||||
|              action_table[cur_action].action != GIVEUP); |              action_table[cur_action].action != GIVEUP); | ||||||
| } | } | ||||||
|  |  | ||||||
| void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback) | AP_DECLARE(void) ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback) | ||||||
| { | { | ||||||
|     int i; |     int i; | ||||||
|     extra_process_t *cur_extra; |     extra_process_t *cur_extra; | ||||||
| @@ -313,7 +313,7 @@ void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback) | |||||||
|  * the pid is a member of the current process group; either using |  * the pid is a member of the current process group; either using | ||||||
|  * apr_proc_wait(), where waitpid() guarantees to fail for non-child |  * apr_proc_wait(), where waitpid() guarantees to fail for non-child | ||||||
|  * processes; or by using getpgid() directly, if available. */ |  * processes; or by using getpgid() directly, if available. */ | ||||||
| apr_status_t ap_mpm_safe_kill(pid_t pid, int sig) | AP_DECLARE(apr_status_t) ap_mpm_safe_kill(pid_t pid, int sig) | ||||||
| { | { | ||||||
| #ifndef HAVE_GETPGID | #ifndef HAVE_GETPGID | ||||||
|     apr_proc_t proc; |     apr_proc_t proc; | ||||||
| @@ -368,7 +368,8 @@ apr_status_t ap_mpm_safe_kill(pid_t pid, int sig) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status) | AP_DECLARE(int) ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, | ||||||
|  |                                         int status) | ||||||
| { | { | ||||||
|     int signum = status; |     int signum = status; | ||||||
|     const char *sigdesc; |     const char *sigdesc; | ||||||
| @@ -869,13 +870,14 @@ static void sig_coredump(int sig) | |||||||
|      */ |      */ | ||||||
| } | } | ||||||
|  |  | ||||||
| apr_status_t ap_fatal_signal_child_setup(server_rec *s) | AP_DECLARE(apr_status_t) ap_fatal_signal_child_setup(server_rec *s) | ||||||
| { | { | ||||||
|     my_pid = getpid(); |     my_pid = getpid(); | ||||||
|     return APR_SUCCESS; |     return APR_SUCCESS; | ||||||
| } | } | ||||||
|  |  | ||||||
| apr_status_t ap_fatal_signal_setup(server_rec *s, apr_pool_t *in_pconf) | AP_DECLARE(apr_status_t) ap_fatal_signal_setup(server_rec *s, | ||||||
|  |                                                apr_pool_t *pconf) | ||||||
| { | { | ||||||
| #ifndef NO_USE_SIGACTION | #ifndef NO_USE_SIGACTION | ||||||
|     struct sigaction sa; |     struct sigaction sa; | ||||||
|   | |||||||
| @@ -143,7 +143,7 @@ AP_DECLARE(int) ap_calc_scoreboard_size(void) | |||||||
|     return scoreboard_size; |     return scoreboard_size; | ||||||
| } | } | ||||||
|  |  | ||||||
| void ap_init_scoreboard(void *shared_score) | AP_DECLARE(void) ap_init_scoreboard(void *shared_score) | ||||||
| { | { | ||||||
|     char *more_storage; |     char *more_storage; | ||||||
|     int i; |     int i; | ||||||
| @@ -251,7 +251,8 @@ static apr_status_t open_scoreboard(apr_pool_t *pconf) | |||||||
| /* If detach is non-zero, this is a separate child process, | /* If detach is non-zero, this is a separate child process, | ||||||
|  * if zero, it is a forked child. |  * if zero, it is a forked child. | ||||||
|  */ |  */ | ||||||
| apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached) | AP_DECLARE(apr_status_t) ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, | ||||||
|  |                                               int detached) | ||||||
| { | { | ||||||
| #if APR_HAS_SHARED_MEMORY | #if APR_HAS_SHARED_MEMORY | ||||||
|     if (!detached) { |     if (!detached) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user