#include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "http_log.h" #include static int delay; static const char* set_delay(cmd_parms* cmd, void* empty, char* arg) { delay = atoi(arg); if (delay != 0) { ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, " setting InitDelay to %d.", delay); } return NULL; } // static void initdelay_init(apr_pool_t* p, apr_pool_t* plog, apr_pool_t* ptemp, server_rec* s) static void initdelay_init(apr_pool_t *p, server_rec *s) { if (!delay) set_delay(NULL, NULL, "No Delay at Init"); ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, " sleeping %d seconds.", delay); sleep(delay); ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, " finished sleeping."); } command_rec initdelay_cmds[] = { { "InitDelay", set_delay, NULL, RSRC_CONF, TAKE1, "Set Delay at module initialization" }, { NULL } }; static void initdelay_register_hooks(apr_pool_t* p) { // ap_hook_post_config (initdelay_init, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_child_init (initdelay_init, NULL, NULL, APR_HOOK_MIDDLE); } module AP_MODULE_DECLARE_DATA initdelay_module = { STANDARD20_MODULE_STUFF, NULL, /* create per-directory config structures */ NULL, /* merge per-directory config structures */ NULL, /* create per-server config structures */ NULL, /* merge per-server config structures */ initdelay_cmds, /* command handlers */ initdelay_register_hooks /* register hooks */ };