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();