static const char *cmd_spread_logs(cmd_parms *cmd, void *dummy, int flag) { log_spread2_options *opt = ap_get_module_config(cmd->server->module_config, &log_spread2_module); const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); if (err) { return err; } APR_OPTIONAL_FN_TYPE(ap_log_set_writer_init) *set_writer_init; APR_OPTIONAL_FN_TYPE(ap_log_set_writer) *set_writer; set_writer_init = APR_RETRIEVE_OPTIONAL_FN(ap_log_set_writer_init); set_writer = APR_RETRIEVE_OPTIONAL_FN(ap_log_set_writer); if (set_writer_init == NULL || set_writer == NULL) { return MNAME ": can't install log writer - ap_log_set_writer not available"; } SP_disconnect(opt->mbox); opt->enabled = 0; if (flag) { apr_status_t rv = SP_connect(opt->name, 0, 0, 0, &opt->mbox, opt->priv); if (rv != ACCEPT_SESSION) { ap_log_error(APLOG_MARK, APLOG_ERR, rv, cmd->server, MNAME ": could not open connection to daemon."); return NULL; } opt->old_writer_init = set_writer_init(ap_spread_log_writer_init); opt->old_writer = set_writer(ap_spread_log_writer); opt->enabled = 1; } else { if (opt->old_writer_init) { set_writer_init(opt->old_writer_init); opt->old_writer_init = NULL; } if (opt->old_writer) { set_writer(opt->old_writer); opt->old_writer = NULL; } } return NULL; }
static const char *set_rotated_logs(cmd_parms *cmd, void *dummy, int flag) { log_options *ls = ap_get_module_config(cmd->server->module_config, &log_rotate_module); if (flag) { /* Always hook the writer functions when we're enabled even if we've * done it already. We can't unhook which means that once we've been * enabled we become responsible for all transfer log output. Note that * a subsequent BufferedLogs On in conf will clobber these hooks and * disable us. */ APR_OPTIONAL_FN_TYPE(ap_log_set_writer_init) *set_writer_init; APR_OPTIONAL_FN_TYPE(ap_log_set_writer) *set_writer; set_writer_init = APR_RETRIEVE_OPTIONAL_FN(ap_log_set_writer_init); set_writer = APR_RETRIEVE_OPTIONAL_FN(ap_log_set_writer); if (NULL != set_writer_init && NULL != set_writer) { set_writer_init(ap_rotated_log_writer_init); set_writer(ap_rotated_log_writer); ls->enabled = 1; } else { ap_log_error(APLOG_MARK, APLOG_ERR, APR_SUCCESS, cmd->server, "can't install log rotator - ap_log_set_writer not available"); ls->enabled = 0; } } else { ls->enabled = 0; } return NULL; }