]> granicus.if.org Git - apache/blobdiff - server/mpm_common.c
Documentation rebuild
[apache] / server / mpm_common.c
index 6791cca96ba64207ee76408296cd156d33248c72..3ea43e7922653c00f2a589da957e522bd8b0ff67 100644 (file)
 #undef APLOG_MODULE_INDEX
 #define APLOG_MODULE_INDEX AP_CORE_MODULE_INDEX
 
+#define DEFAULT_HOOK_LINKS \
+    APR_HOOK_LINK(monitor) \
+    APR_HOOK_LINK(drop_privileges) \
+    APR_HOOK_LINK(mpm) \
+    APR_HOOK_LINK(mpm_query) \
+    APR_HOOK_LINK(mpm_register_timed_callback) \
+    APR_HOOK_LINK(mpm_get_name) \
+    APR_HOOK_LINK(end_generation) \
+    APR_HOOK_LINK(child_status) \
+    APR_HOOK_LINK(suspend_connection) \
+    APR_HOOK_LINK(resume_connection)
+
 #if AP_ENABLE_EXCEPTION_HOOK
 APR_HOOK_STRUCT(
     APR_HOOK_LINK(fatal_exception)
-    APR_HOOK_LINK(monitor)
-    APR_HOOK_LINK(drop_privileges)
-    APR_HOOK_LINK(mpm)
-    APR_HOOK_LINK(mpm_query)
-    APR_HOOK_LINK(mpm_register_timed_callback)
-    APR_HOOK_LINK(mpm_get_name)
-    APR_HOOK_LINK(end_generation)
-    APR_HOOK_LINK(child_status)
+    DEFAULT_HOOK_LINKS
 )
 AP_IMPLEMENT_HOOK_RUN_ALL(int, fatal_exception,
                           (ap_exception_info_t *ei), (ei), OK, DECLINED)
 #else
 APR_HOOK_STRUCT(
-    APR_HOOK_LINK(monitor)
-    APR_HOOK_LINK(drop_privileges)
-    APR_HOOK_LINK(mpm)
-    APR_HOOK_LINK(mpm_query)
-    APR_HOOK_LINK(mpm_register_timed_callback)
-    APR_HOOK_LINK(mpm_get_name)
-    APR_HOOK_LINK(end_generation)
-    APR_HOOK_LINK(child_status)
+    DEFAULT_HOOK_LINKS
 )
 #endif
 AP_IMPLEMENT_HOOK_RUN_ALL(int, monitor,
@@ -108,6 +106,12 @@ AP_IMPLEMENT_HOOK_VOID(end_generation,
 AP_IMPLEMENT_HOOK_VOID(child_status,
                        (server_rec *s, pid_t pid, ap_generation_t gen, int slot, mpm_child_status status),
                        (s,pid,gen,slot,status))
+AP_IMPLEMENT_HOOK_VOID(suspend_connection,
+                       (conn_rec *c, request_rec *r),
+                       (c, r))
+AP_IMPLEMENT_HOOK_VOID(resume_connection,
+                       (conn_rec *c, request_rec *r),
+                       (c, r))
 
 /* hooks with no args are implemented last, after disabling APR hook probes */
 #if defined(APR_HOOK_PROBES_ENABLED)
@@ -139,13 +143,13 @@ static struct mpm_gen_info_head_t *geninfo, *unused_geninfo;
 static int gen_head_init; /* yuck */
 
 /* variables representing config directives implemented here */
-const char *ap_pid_fname;
-int ap_max_requests_per_child;
-char ap_coredump_dir[MAX_STRING_LEN];
-int ap_coredumpdir_configured;
-int ap_graceful_shutdown_timeout;
+AP_DECLARE_DATA const char *ap_pid_fname;
+AP_DECLARE_DATA int ap_max_requests_per_child;
+AP_DECLARE_DATA char ap_coredump_dir[MAX_STRING_LEN];
+AP_DECLARE_DATA int ap_coredumpdir_configured;
+AP_DECLARE_DATA int ap_graceful_shutdown_timeout;
 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)
 
@@ -170,8 +174,9 @@ void mpm_common_pre_config(apr_pool_t *pconf)
 #endif
 static int wait_or_timeout_counter;
 
-void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret,
-                        apr_pool_t *p, server_rec *s)
+AP_DECLARE(void) ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode,
+                                    apr_proc_t *ret, apr_pool_t *p,
+                                    server_rec *s)
 {
     apr_status_t rv;
 
@@ -193,7 +198,6 @@ void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret,
 
     apr_sleep(apr_time_from_sec(1));
     ret->pid = -1;
-    return;
 }
 
 #if defined(TCP_NODELAY)
@@ -211,7 +215,7 @@ void ap_sock_disable_nagle(apr_socket_t *s)
     apr_status_t status = apr_socket_opt_set(s, APR_TCP_NODELAY, 1);
 
     if (status != APR_SUCCESS) {
-        ap_log_error(APLOG_MARK, APLOG_WARNING, status, ap_server_conf,
+        ap_log_error(APLOG_MARK, APLOG_WARNING, status, ap_server_conf, APLOGNO(00542)
                      "apr_socket_opt_set: (TCP_NODELAY)");
     }
 }
@@ -226,7 +230,7 @@ AP_DECLARE(uid_t) ap_uname2id(const char *name)
         return (atoi(&name[1]));
 
     if (!(ent = getpwnam(name))) {
-        ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL,
+        ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, APLOGNO(00543)
                      "%s: bad user name %s", ap_server_argv0, name);
         exit(1);
     }
@@ -244,7 +248,7 @@ AP_DECLARE(gid_t) ap_gname2id(const char *name)
         return (atoi(&name[1]));
 
     if (!(ent = getgrnam(name))) {
-        ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL,
+        ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, APLOGNO(00544)
                      "%s: bad group name %s", ap_server_argv0, name);
         exit(1);
     }
@@ -318,7 +322,7 @@ const char *ap_mpm_set_max_requests(cmd_parms *cmd, void *dummy,
     }
 
     if (!strcasecmp(cmd->cmd->name, "MaxRequestsPerChild")) {
-        ap_log_error(APLOG_MARK, APLOG_INFO, 0, NULL,
+        ap_log_error(APLOG_MARK, APLOG_INFO, 0, NULL, APLOGNO(00545)
                      "MaxRequestsPerChild is deprecated, use "
                      "MaxConnectionsPerChild instead.");
     }
@@ -338,7 +342,7 @@ const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy,
         return err;
     }
 
-    fname = ap_server_root_relative(cmd->pool, arg);
+    fname = ap_server_root_relative(cmd->temp_pool, arg);
     if (!fname) {
         return apr_pstrcat(cmd->pool, "Invalid CoreDumpDirectory path ",
                            arg, NULL);
@@ -356,8 +360,9 @@ const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy,
     return NULL;
 }
 
-const char * ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy,
-                                          const char *arg)
+AP_DECLARE(const char *)ap_mpm_set_graceful_shutdown(cmd_parms *cmd,
+                                                     void *dummy,
+                                                     const char *arg)
 {
     const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
     if (err != NULL) {
@@ -376,6 +381,7 @@ const char *ap_mpm_set_max_mem_free(cmd_parms *cmd, void *dummy,
         return err;
     }
 
+    errno = 0;
     value = strtol(arg, NULL, 10);
     if (value < 0 || errno == ERANGE)
         return apr_pstrcat(cmd->pool, "Invalid MaxMemFree value: ",
@@ -395,6 +401,7 @@ const char *ap_mpm_set_thread_stacksize(cmd_parms *cmd, void *dummy,
         return err;
     }
 
+    errno = 0;
     value = strtol(arg, NULL, 10);
     if (value < 0 || errno == ERANGE)
         return apr_pstrcat(cmd->pool, "Invalid ThreadStackSize value: ",
@@ -505,7 +512,7 @@ void ap_core_child_status(server_rec *s, pid_t pid,
     case MPM_CHILD_EXITED:
         status_msg = "exited";
         if (cur == APR_RING_SENTINEL(geninfo, mpm_gen_info_t, link)) {
-            ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
+            ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, APLOGNO(00546)
                          "no record of generation %d of exiting child %" APR_PID_T_FMT,
                          gen, pid);
         }