git://git.exim.org
/
users
/
jgh
/
exim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bd4ece7
)
Events: Fix crash on control=debug from transport event acl. Bug 1540
author
Jeremy Harris
<jgh146exb@wizmail.org>
Sun, 1 Mar 2015 19:21:44 +0000
(19:21 +0000)
committer
Jeremy Harris
<jgh146exb@wizmail.org>
Sun, 1 Mar 2015 19:22:25 +0000
(19:22 +0000)
src/src/log.c
patch
|
blob
|
history
diff --git
a/src/src/log.c
b/src/src/log.c
index e8b514bfdf50b33a994befca576f7c73e4bddece..b14897e5f571f9256cade6246a053e21f31ff4c2 100644
(file)
--- a/
src/src/log.c
+++ b/
src/src/log.c
@@
-556,6
+556,23
@@
return total_written;
}
}
+
+static void
+set_file_path(void)
+{
+int sep = ':'; /* Fixed separator - outside use */
+uschar *t;
+const uschar *tt = US LOG_FILE_PATH;
+while ((t = string_nextinlist(&tt, &sep, log_buffer, LOG_BUFFER_SIZE)))
+ {
+ if (Ustrcmp(t, "syslog") == 0 || t[0] == 0) continue;
+ file_path = string_copy(t);
+ break;
+ }
+}
+
+
+
/*************************************************
* Write message to log file *
*************************************************/
/*************************************************
* Write message to log file *
*************************************************/
@@
-668,7
+685,7
@@
if (!path_inspected)
/* If nothing has been set, don't waste effort... the default values for the
statics are file_path="" and logging_mode = LOG_MODE_FILE. */
/* If nothing has been set, don't waste effort... the default values for the
statics are file_path="" and logging_mode = LOG_MODE_FILE. */
- if (
log_file_path[0] != 0
)
+ if (
*log_file_path
)
{
int sep = ':'; /* Fixed separator - outside use */
uschar *s;
{
int sep = ':'; /* Fixed separator - outside use */
uschar *s;
@@
-685,10
+702,8
@@
if (!path_inspected)
/* If a non-empty path is given, use it */
/* If a non-empty path is given, use it */
- if (s[0] != 0)
- {
+ if (*s)
file_path = string_copy(s);
file_path = string_copy(s);
- }
/* If the path is empty, we want to use the first non-empty, non-
syslog item in LOG_FILE_PATH, if there is one, since the value of
/* If the path is empty, we want to use the first non-empty, non-
syslog item in LOG_FILE_PATH, if there is one, since the value of
@@
-696,16
+711,7
@@
if (!path_inspected)
use the ultimate default in the spool directory. */
else
use the ultimate default in the spool directory. */
else
- {
- uschar *t;
- const uschar *tt = US LOG_FILE_PATH;
- while ((t = string_nextinlist(&tt, &sep, log_buffer, LOG_BUFFER_SIZE)))
- {
- if (Ustrcmp(t, "syslog") == 0 || t[0] == 0) continue;
- file_path = string_copy(t);
- break;
- }
- } /* Empty item in log_file_path */
+ set_file_path(); /* Empty item in log_file_path */
} /* First non-syslog item in log_file_path */
} /* Scan of log_file_path */
}
} /* First non-syslog item in log_file_path */
} /* Scan of log_file_path */
}
@@
-728,10
+734,8
@@
if (!path_inspected)
should work since we have now set up the routing. */
if (multiple)
should work since we have now set up the routing. */
if (multiple)
- {
log_write(0, LOG_MAIN|LOG_PANIC,
"More than one path given in log_file_path: using %s", file_path);
log_write(0, LOG_MAIN|LOG_PANIC,
"More than one path given in log_file_path: using %s", file_path);
- }
}
/* If debugging, show all log entries, but don't show headers. Do it all
}
/* If debugging, show all log entries, but don't show headers. Do it all
@@
-1336,6
+1340,12
@@
if (opts)
debug_options, debug_options_count, US"debug", DEBUG_FROM_CONFIG);
}
debug_options, debug_options_count, US"debug", DEBUG_FROM_CONFIG);
}
+/* When activating from a transport process we may never have logged at all
+resulting in certain setup not having been done. Hack this for now so we
+do not segfault; note that nondefault log locations will not work */
+
+if (!*file_path) set_file_path();
+
open_log(&fd, lt_debug, tag_name);
if (fd != -1)
open_log(&fd, lt_debug, tag_name);
if (fd != -1)