summaryrefslogtreecommitdiff
path: root/main/config.c
diff options
context:
space:
mode:
authorMark Michelson <mmichelson@digium.com>2008-05-05 22:14:06 +0000
committerMark Michelson <mmichelson@digium.com>2008-05-05 22:14:06 +0000
commit276118a776b1ecbb137fbb9a9e8463b3bae244f9 (patch)
tree5f84546cf3275f8c6822b126bf378a83b7e19cca /main/config.c
parentfc120bf827ca3a38cd429c53051f6e0b5322099c (diff)
#execing the same file multiple times led to warning messages saying that the same file was
being #included twice. This was due to the fact that #exec created a temporary file which was then #included. The name of the temporary file was the name of the #exec'd file, with the Unix timestamp and thread ID concatenated. The issue was that if multiple #exec statements of the same file were reached in the same second, then the result was that the temporary files would have duplicate names. To resolve this, the temporary file now has microsecond resolution for the timestamp portion. (closes issue #12574) Reported by: jmls Patches: 12574.patch uploaded by putnopvut (license 60) Tested by: jmls, putnopvut git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@115329 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/config.c')
-rw-r--r--main/config.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/main/config.c b/main/config.c
index 9f5fdc617..2d707183c 100644
--- a/main/config.c
+++ b/main/config.c
@@ -1056,9 +1056,10 @@ static int process_text_line(struct ast_config *cfg, struct ast_category **cat,
/* #exec </path/to/executable>
We create a tmp file, then we #include it, then we delete it. */
if (!do_include) {
+ struct timeval tv = ast_tvnow();
if (!ast_test_flag(&flags, CONFIG_FLAG_NOCACHE))
config_cache_attribute(configfile, ATTRIBUTE_EXEC, NULL, who_asked);
- snprintf(exec_file, sizeof(exec_file), "/var/tmp/exec.%d.%ld", (int)time(NULL), (long)pthread_self());
+ snprintf(exec_file, sizeof(exec_file), "/var/tmp/exec.%d%d.%ld", (int)tv.tv_sec, (int)tv.tv_usec, (long)pthread_self());
snprintf(cmd, sizeof(cmd), "%s > %s 2>&1", cur, exec_file);
ast_safe_system(cmd);
cur = exec_file;