]> granicus.if.org Git - apache/commitdiff
PR61009: be as helpful as possible during -V operation
authorJacob Champion <jchampion@apache.org>
Wed, 19 Apr 2017 20:38:26 +0000 (20:38 +0000)
committerJacob Champion <jchampion@apache.org>
Wed, 19 Apr 2017 20:38:26 +0000 (20:38 +0000)
A configtest isn't useful if you're just trying to get compile settings.
Move the settings dump up to just after ap_read_config(), which has
already done the minimum necessary to figure out which MPM is in use.

Even if ap_read_config() failed, still print as many compile settings as
we can. The user will see the error log entry on stderr.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1791975 13f79535-47bb-0310-9956-ffa450edef68

server/main.c

index 351f0f1a56f2755d35c156dfc0eb50eb484b9098..bda60827ca06581752d525100d77adc7f3a6e44c 100644 (file)
@@ -651,10 +651,22 @@ int main(int argc, const char * const argv[])
     }
     ap_server_conf = ap_read_config(process, ptemp, confname, &ap_conftree);
     if (!ap_server_conf) {
+        if (showcompile) {
+            /* Well, we tried. Show as much as we can, but exit nonzero to
+             * indicate that something's not right. The cause should have
+             * already been logged. */
+            show_compile_settings();
+        }
         destroy_and_exit_process(process, 1);
     }
     apr_pool_cleanup_register(pconf, &ap_server_conf, ap_pool_cleanup_set_null,
                               apr_pool_cleanup_null);
+
+    if (showcompile) { /* deferred due to dynamically loaded MPM */
+        show_compile_settings();
+        destroy_and_exit_process(process, 0);
+    }
+
     /* sort hooks here to make sure pre_config hooks are sorted properly */
     apr_hook_sort_all();
 
@@ -683,10 +695,7 @@ int main(int argc, const char * const argv[])
         }
 
         if (ap_run_mode != AP_SQ_RM_NORMAL) {
-            if (showcompile) { /* deferred due to dynamically loaded MPM */
-                show_compile_settings();
-            }
-            else if (showdirectives) { /* deferred in case of DSOs */
+            if (showdirectives) { /* deferred in case of DSOs */
                 ap_show_directives();
                 destroy_and_exit_process(process, 0);
             }