From 7747d4e253b7a813e9529ec9ae22a0ccc7db8c78 Mon Sep 17 00:00:00 2001 From: Nick Kew Date: Sat, 19 Oct 2013 11:01:11 +0000 Subject: [PATCH] PR 55670 Don't risk failing silently at startup when running in a tty. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1533728 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ server/main.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/CHANGES b/CHANGES index f1f8310c4a2..d77d03ef095 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) core: ensure any abnormal exit is reported to stderr if it's a tty. + PR 55670 [Nick Kew] + *) mod_proxy: Added support for unix domain sockets as the backend server endpoint [Jim Jagielski, Blaise Tarr ] diff --git a/server/main.c b/server/main.c index 28d1872055f..ef17af67082 100644 --- a/server/main.c +++ b/server/main.c @@ -43,6 +43,11 @@ #if APR_HAVE_UNISTD_H #include +#else +/* Not sure what absence of unistd would signify for tty. Treating it as a + * big NO is safe, as we then won't try to write to stderr that's not a tty. + */ +#define isatty(n) (0) #endif /* WARNING: Win32 binds http_main.c dynamically to the server. Please place @@ -263,6 +268,10 @@ static void destroy_and_exit_process(process_rec *process, ap_main_state = AP_SQ_MS_EXITING; apr_pool_destroy(process->pool); /* and destroy all descendent pools */ apr_terminate(); + if ((process_exit_value != 0) && isatty(fileno(stderr))) { + const char *name = process->short_name ? process->short_name : "httpd"; + fprintf(stderr, "%s: abnormal exit %d\n", name, process_exit_value); + } exit(process_exit_value); } -- 2.47.3