#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) DEFAULT_HOOK_LINKS ) AP_IMPLEMENT_HOOK_RUN_ALL(int, fatal_exception, (ap_exception_info_t *ei), (ei), OK, DECLINED) #else APR_HOOK_STRUCT( DEFAULT_HOOK_LINKS ) #endif AP_IMPLEMENT_HOOK_RUN_ALL(int, monitor, (apr_pool_t *p, server_rec *s), (p, s), OK, DECLINED) AP_IMPLEMENT_HOOK_RUN_ALL(int, drop_privileges, (apr_pool_t * pchild, server_rec * s), (pchild, s), OK, DECLINED) AP_IMPLEMENT_HOOK_RUN_FIRST(int, mpm,
#include "ap_config.h" #include "httpd.h" #include "http_connection.h" #include "http_request.h" #include "http_protocol.h" #include "ap_mpm.h" #include "mpm_default.h" #include "http_config.h" #include "http_core.h" #include "http_vhost.h" #include "scoreboard.h" #include "http_log.h" #include "util_filter.h" APR_HOOK_STRUCT( APR_HOOK_LINK(create_connection) APR_HOOK_LINK(process_connection) APR_HOOK_LINK(pre_connection) ) AP_IMPLEMENT_HOOK_RUN_FIRST(conn_rec *,create_connection, (apr_pool_t *p, server_rec *server, apr_socket_t *csd, long conn_id, void *sbh, apr_bucket_alloc_t *alloc), (p, server, csd, conn_id, sbh, alloc), NULL) AP_IMPLEMENT_HOOK_RUN_FIRST(int,process_connection,(conn_rec *c),(c),DECLINED) AP_IMPLEMENT_HOOK_RUN_ALL(int,pre_connection,(conn_rec *c, void *csd),(c, csd),OK,DECLINED) /* * More machine-dependent networking gooo... on some systems, * you've got to be *really* sure that all the packets are acknowledged * before closing the connection, since the client will not be able * to see the last response if their TCP buffer is flushed by a RST * packet from us, which is what the server's TCP stack will send * if it receives any request data after closing the connection.
STANDARD20_MODULE_STUFF, NULL, /* create per-directory config structure */ NULL, /* merge per-directory config structures */ NULL, /* create per-server config structure */ NULL, /* merge per-server config structures */ wd_directives, /* command apr_table_t */ wd_register_hooks /* register hooks */ }; /*--------------------------------------------------------------------------*/ /* */ /* The list of optional hooks that we provide */ /* */ /*--------------------------------------------------------------------------*/ APR_HOOK_STRUCT( APR_HOOK_LINK(watchdog_need) APR_HOOK_LINK(watchdog_init) APR_HOOK_LINK(watchdog_exit) APR_HOOK_LINK(watchdog_step) ) APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ap, AP_WD, int, watchdog_need, (server_rec *s, const char *name, int parent, int singleton), (s, name, parent, singleton), DECLINED) APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap, AP_WD, int, watchdog_init, (server_rec *s, const char *name, apr_pool_t *pool), (s, name, pool), OK, DECLINED)
#include "scoreboard.h" #endif #ifdef HAVE_PWD_H #include <pwd.h> #endif #ifdef HAVE_GRP_H #include <grp.h> #endif #if APR_HAVE_UNISTD_H #include <unistd.h> #endif #if AP_ENABLE_EXCEPTION_HOOK APR_HOOK_STRUCT( APR_HOOK_LINK(fatal_exception) APR_HOOK_LINK(monitor) ) AP_IMPLEMENT_HOOK_RUN_ALL(int, fatal_exception, (ap_exception_info_t *ei), (ei), OK, DECLINED) #else APR_HOOK_STRUCT( APR_HOOK_LINK(monitor) ) #endif AP_IMPLEMENT_HOOK_RUN_ALL(int, monitor, (apr_pool_t *p), (p), OK, DECLINED) #ifdef AP_MPM_WANT_RECLAIM_CHILD_PROCESSES