From: Jim Jagielski Date: Tue, 10 Aug 2010 19:10:19 +0000 (+0000) Subject: Merge r893027 from trunk: X-Git-Tag: 2.2.17~91 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab0f9a4be705912000f964b983b4836105e25c50;p=thirdparty%2Fapache%2Fhttpd.git Merge r893027 from trunk: (re)-introduce -T commandline option to suppress documentroot check at startup PR 41887 Patch by Jan van den Berg Submitted by: niq Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@984171 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 3aad360abe4..c2062a20474 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.2.17 + *) core: (re)-introduce -T commandline option to suppress documentroot + check at startup. + PR 41887 [Jan van den Berg ] + Changes with Apache 2.2.16 *) SECURITY: CVE-2010-1452 (cve.mitre.org) diff --git a/STATUS b/STATUS index d46b459f498..bc22ad049dd 100644 --- a/STATUS +++ b/STATUS @@ -87,13 +87,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * core: (re)-introduce -T commandline option to suppress documentroot - check at startup - PR 41887 - Trunk patch: http://svn.apache.org/viewvc?view=revision&revision=893027 - 2.2 patch: trunk patch Works with offset. - +1: niq, rpluem, jim - * VHosts: fix parsing of pure-numeric hostname. PR 44979 Trunk patch: http://svn.apache.org/viewvc?view=revision&revision=832172 diff --git a/docs/manual/programs/httpd.xml b/docs/manual/programs/httpd.xml index 598421eec25..bfdd582d24a 100644 --- a/docs/manual/programs/httpd.xml +++ b/docs/manual/programs/httpd.xml @@ -152,6 +152,10 @@ places where the directive is valid.
Show the settings as parsed from the config file (currently only shows the virtualhost settings).
+
-T
+ +
Skip document root check at startup/restart.
+
-t
Run syntax tests for configuration files only. The program diff --git a/include/http_main.h b/include/http_main.h index d70e0d29372..15e32b55aa4 100644 --- a/include/http_main.h +++ b/include/http_main.h @@ -32,7 +32,7 @@ * in apr_getopt() format. Use this for default'ing args that the MPM * can safely ignore and pass on from its rewrite_args() handler. */ -#define AP_SERVER_BASEARGS "C:c:D:d:E:e:f:vVlLtSMh?X" +#define AP_SERVER_BASEARGS "C:c:D:d:E:e:f:vVlLtTSMh?X" #ifdef __cplusplus extern "C" { @@ -53,6 +53,8 @@ AP_DECLARE_DATA extern apr_array_header_t *ap_server_post_read_config; /** An array of all -D defines on the command line. This allows people to * effect the server based on command line options */ AP_DECLARE_DATA extern apr_array_header_t *ap_server_config_defines; +/** Available integer for using the -T switch */ +AP_DECLARE_DATA extern int ap_document_root_check; /** * An optional function to send signal to server on presence of '-k' diff --git a/server/core.c b/server/core.c index ab43719779d..d7081fd1a76 100644 --- a/server/core.c +++ b/server/core.c @@ -1183,13 +1183,19 @@ static const char *set_document_root(cmd_parms *cmd, void *dummy, return err; } + /* When ap_document_root_check is false; skip all the stuff below */ + if (!ap_document_root_check) { + conf->ap_document_root = arg; + return NULL; + } + /* Make it absolute, relative to ServerRoot */ arg = ap_server_root_relative(cmd->pool, arg); if (arg == NULL) { return "DocumentRoot must be a directory"; } - /* TODO: ap_configtestonly && ap_docrootcheck && */ + /* TODO: ap_configtestonly */ if (apr_filepath_merge((char**)&conf->ap_document_root, NULL, arg, APR_FILEPATH_TRUENAME, cmd->pool) != APR_SUCCESS || !ap_is_directory(cmd->pool, arg)) { diff --git a/server/main.c b/server/main.c index 24a54d3fbf4..384423d9490 100644 --- a/server/main.c +++ b/server/main.c @@ -361,7 +361,7 @@ static void usage(process_rec *process) #endif /* AP_MPM_WANT_SET_GRACEFUL_SHUTDOWN */ #endif ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, - " %s [-v] [-V] [-h] [-l] [-L] [-t] [-S]", pad); + " %s [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]", pad); ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, "Options:"); @@ -440,10 +440,15 @@ static void usage(process_rec *process) " -M : a synonym for -t -D DUMP_MODULES"); ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, " -t : run syntax check for config files"); + ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, + " -T : start without DocumentRoot(s) check"); destroy_and_exit_process(process, 1); } +/* Set ap_document_root_check to default value: true */ +AP_DECLARE_DATA int ap_document_root_check = 1; + int main(int argc, const char * const argv[]) { char c; @@ -592,6 +597,10 @@ int main(int argc, const char * const argv[]) configtestonly = 1; break; + case 'T': + ap_document_root_check = 0; + break; + case 'S': configtestonly = 1; new = (char **)apr_array_push(ap_server_config_defines);