Reverting upstream commit f7078b6, as it makes hitch segfault when
logging to syslog.
--- src/hitch.c.orig 2015-08-03 19:45:45.846820957 +0200
+++ src/hitch.c 2015-08-03 19:45:58.993578806 +0200
@@ -260,42 +260,41 @@
static void
VWLOG (int level, const char *fmt, va_list ap)
{
- struct timeval tv;
- struct tm tm;
- char buf[1024];
- int n;
- va_list ap1;
+ if (logf) {
+ struct timeval tv;
+ struct tm tm;
+ char buf[1024];
+ int n;
+ va_list ap1;
+ gettimeofday(&tv,NULL);
+ if (logf != stdout && logf != stderr
+ && tv.tv_sec >= logf_check_t+LOG_REOPEN_INTERVAL) {
+ struct stat st;
+ if (stat(CONFIG->LOG_FILENAME, &st) < 0
+ || st.st_dev != logf_st.st_dev
+ || st.st_ino != logf_st.st_ino) {
+ fclose(logf);
+
+ logf = fopen(CONFIG->LOG_FILENAME, "a");
+ if (logf == NULL
+ || fstat(fileno(logf), &logf_st) < 0)
+ memset(&logf_st, 0, sizeof(logf_st));
+ }
+ logf_check_t = tv.tv_sec;
+ }
+
+ localtime_r(&tv.tv_sec, &tm);
+ n = strftime(buf, sizeof(buf), "%Y%m%dT%H%M%S", &tm);
+ sprintf(buf + n, ".%06d [%5d] %s",
+ (int) tv.tv_usec, getpid(), fmt);
+ va_copy(ap1, ap);
+ vfprintf(logf, buf, ap1);
+ va_end(ap1);
+ }
if (CONFIG->SYSLOG) {
vsyslog(level, fmt, ap);
}
-
- if (!logf)
- return;
- AZ(gettimeofday(&tv, NULL));
- if (logf != stdout && logf != stderr
- && tv.tv_sec >= logf_check_t + LOG_REOPEN_INTERVAL) {
- struct stat st;
- if (stat(CONFIG->LOG_FILENAME, &st) < 0
- || st.st_dev != logf_st.st_dev
- || st.st_ino != logf_st.st_ino) {
- fclose(logf);
-
- logf = fopen(CONFIG->LOG_FILENAME, "a");
- if (logf == NULL
- || fstat(fileno(logf), &logf_st) < 0)
- memset(&logf_st, 0, sizeof(logf_st));
- }
- logf_check_t = tv.tv_sec;
- }
-
- AN(localtime_r(&tv.tv_sec, &tm));
- n = strftime(buf, sizeof(buf), "%Y%m%dT%H%M%S", &tm);
- snprintf(buf + n, sizeof(buf) - n, ".%06d [%5d] %s",
- (int) tv.tv_usec, getpid(), fmt);
- va_copy(ap1, ap);
- vfprintf(logf, buf, ap1);
- va_end(ap1);
}
static void
@@ -2478,13 +2477,9 @@
struct front_arg *fa;
CONFIG = config_new();
- // parse command line
- config_parse_cli(argc, argv, CONFIG);
-
if (CONFIG->LOG_FILENAME) {
FILE* f;
if ((f = fopen(CONFIG->LOG_FILENAME, "a")) == NULL) {
- logf = stderr;
ERR("FATAL: Unable to open log file: %s: %s\n",
CONFIG->LOG_FILENAME, strerror(errno));
exit(2);
@@ -2500,6 +2495,9 @@
}
setbuf(logf, NULL);
+ // parse command line
+ config_parse_cli(argc, argv, CONFIG);
+
create_workers = 1;
openssl_check_version();