# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: kinkie@squid-cache.org-20121005072705-hau0btnqidb8bh9x # target_branch: ../trunk # testament_sha1: bbcf40a11a2be1d2996cd163280da278e5ff03b7 # timestamp: 2012-10-05 09:27:19 +0200 # base_revision_id: kinkie@squid-cache.org-20121005072635-\ # 0w6cfh03wwbozh09 # # Begin patch === modified file 'include/fatal.h' --- include/fatal.h 2012-08-30 14:18:27 +0000 +++ include/fatal.h 2012-10-04 13:01:09 +0000 @@ -1,8 +1,8 @@ #ifndef SQUID_FATAL_H #define SQUID_FATAL_H -extern void fatal(const char *message); -extern void fatalf(const char *fmt,...) PRINTF_FORMAT_ARG1; -extern void fatal_dump(const char *message); +void fatal(const char *message); +void fatalf(const char *fmt,...) PRINTF_FORMAT_ARG1; +void fatal_dump(const char *message); #endif /* SQUID_FATAL_H */ === modified file 'lib/Makefile.am' --- lib/Makefile.am 2012-06-03 08:10:29 +0000 +++ lib/Makefile.am 2012-10-04 13:01:09 +0000 @@ -69,7 +69,8 @@ Splay.cc \ stub_memaccount.c \ util.c \ - xusleep.c + xusleep.c \ + fatal.cc # $(top_srcdir)/include/version.h should be a dependency libsspwin32_la_SOURCES = \ === added file 'lib/fatal.cc' --- lib/fatal.cc 1970-01-01 00:00:00 +0000 +++ lib/fatal.cc 2012-10-04 13:01:09 +0000 @@ -0,0 +1,144 @@ +/* + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#include "squid.h" +#include "Debug.h" +#include "fatal.h" +#include "globals.h" +#include "SwapDir.h" +#include "tools.h" + +#if HAVE_STDIO_H +#include +#endif +#if HAVE_STDLIB_H +#include +#endif + +static void +fatal_common(const char *message) +{ +#if HAVE_SYSLOG + syslog(LOG_ALERT, "%s", message); +#endif + + fprintf(debug_log, "FATAL: %s\n", message); + + if (Debug::log_stderr > 0 && debug_log != stderr) + fprintf(stderr, "FATAL: %s\n", message); + + fprintf(debug_log, "Squid Cache (Version %s): Terminated abnormally.\n", + version_string); + + fflush(debug_log); + + PrintRusage(); + + dumpMallocStats(); +} + + +void +fatal(const char *message) +{ + /* suppress secondary errors from the dying */ + shutting_down = 1; + + releaseServerSockets(); + /* check for store_dirs_rebuilding because fatal() is often + * used in early initialization phases, long before we ever + * get to the store log. */ + + /* XXX: this should be turned into a callback-on-fatal, or + * a mandatory-shutdown-event or something like that. + * - RBC 20060819 + */ + + /* + * DPW 2007-07-06 + * Call leave_suid() here to make sure that swap.state files + * are written as the effective user, rather than root. Squid + * may take on root privs during reconfigure. If squid.conf + * contains a "Bungled" line, fatal() will be called when the + * process still has root privs. + */ + leave_suid(); + + if (0 == StoreController::store_dirs_rebuilding) + storeDirWriteCleanLogs(0); + + fatal_common(message); + + exit(1); +} + +/* used by fatalf */ +static void +fatalvf(const char *fmt, va_list args) +{ + static char fatal_str[BUFSIZ]; + vsnprintf(fatal_str, sizeof(fatal_str), fmt, args); + fatal(fatal_str); +} + +/* printf-style interface for fatal */ +void +fatalf(const char *fmt,...) +{ + va_list args; + va_start(args, fmt); + fatalvf(fmt, args); + va_end(args); +} + +/* fatal with dumping core */ +void +fatal_dump(const char *message) +{ + failure_notify = NULL; + releaseServerSockets(); + + if (message) + fatal_common(message); + + /* + * Call leave_suid() here to make sure that swap.state files + * are written as the effective user, rather than root. Squid + * may take on root privs during reconfigure. If squid.conf + * contains a "Bungled" line, fatal() will be called when the + * process still has root privs. + */ + leave_suid(); + + if (opt_catch_signals) + storeDirWriteCleanLogs(0); + + abort(); +} + === modified file 'src/tools.cc' --- src/tools.cc 2012-10-04 09:14:06 +0000 +++ src/tools.cc 2012-10-04 13:01:09 +0000 @@ -78,8 +78,6 @@ \n\ Thanks!\n" -static void fatal_common(const char *); -static void fatalvf(const char *fmt, va_list args); static void mail_warranty(void); #if MEM_GEN_TRACE void log_trace_done(); @@ -446,107 +444,6 @@ #endif } -static void -fatal_common(const char *message) -{ -#if HAVE_SYSLOG - syslog(LOG_ALERT, "%s", message); -#endif - - fprintf(debug_log, "FATAL: %s\n", message); - - if (Debug::log_stderr > 0 && debug_log != stderr) - fprintf(stderr, "FATAL: %s\n", message); - - fprintf(debug_log, "Squid Cache (Version %s): Terminated abnormally.\n", - version_string); - - fflush(debug_log); - - PrintRusage(); - - dumpMallocStats(); -} - -/* fatal */ -void -fatal(const char *message) -{ - /* suppress secondary errors from the dying */ - shutting_down = 1; - - releaseServerSockets(); - /* check for store_dirs_rebuilding because fatal() is often - * used in early initialization phases, long before we ever - * get to the store log. */ - - /* XXX: this should be turned into a callback-on-fatal, or - * a mandatory-shutdown-event or something like that. - * - RBC 20060819 - */ - - /* - * DPW 2007-07-06 - * Call leave_suid() here to make sure that swap.state files - * are written as the effective user, rather than root. Squid - * may take on root privs during reconfigure. If squid.conf - * contains a "Bungled" line, fatal() will be called when the - * process still has root privs. - */ - leave_suid(); - - if (0 == StoreController::store_dirs_rebuilding) - storeDirWriteCleanLogs(0); - - fatal_common(message); - - exit(1); -} - -/* printf-style interface for fatal */ -void -fatalf(const char *fmt,...) -{ - va_list args; - va_start(args, fmt); - fatalvf(fmt, args); - va_end(args); -} - -/* used by fatalf */ -static void -fatalvf(const char *fmt, va_list args) -{ - static char fatal_str[BUFSIZ]; - vsnprintf(fatal_str, sizeof(fatal_str), fmt, args); - fatal(fatal_str); -} - -/* fatal with dumping core */ -void -fatal_dump(const char *message) -{ - failure_notify = NULL; - releaseServerSockets(); - - if (message) - fatal_common(message); - - /* - * Call leave_suid() here to make sure that swap.state files - * are written as the effective user, rather than root. Squid - * may take on root privs during reconfigure. If squid.conf - * contains a "Bungled" line, fatal() will be called when the - * process still has root privs. - */ - leave_suid(); - - if (opt_catch_signals) - storeDirWriteCleanLogs(0); - - abort(); -} - void debug_trap(const char *message) { # Begin bundle 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 kI2iP/F3JFOFCQHzjP4A