diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-06-17 01:13:10 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-06-17 01:13:10 +0000 |
commit | 71e3b718a7901f9e718e7c977bfadfdd99d60043 (patch) | |
tree | 6a8ab80e7ff0be91d8f94be02d516136b0135804 | |
parent | 13db3cf8f2771ad7089696ec8f62ad69f4923abb (diff) |
Close logging stuff so system doesn't have to (bug #1855)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3230 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | asterisk.c | 7 | ||||
-rwxr-xr-x | asterisk.h | 1 | ||||
-rwxr-xr-x | logger.c | 19 |
3 files changed, 27 insertions, 0 deletions
diff --git a/asterisk.c b/asterisk.c index d20f0aaaa..d3fbe528b 100755 --- a/asterisk.c +++ b/asterisk.c @@ -585,6 +585,10 @@ static void quit_handler(int num, int nice, int safeshutdown, int restart) if (option_verbose || option_console) ast_verbose("Restarting Asterisk NOW...\n"); restartnow = 1; + + /* close logger */ + close_logger(); + /* If there is a consolethread running send it a SIGHUP so it can execvp, otherwise we can do it ourselves */ if (consolethread != AST_PTHREADT_NULL) { @@ -594,6 +598,9 @@ static void quit_handler(int num, int nice, int safeshutdown, int restart) } else execvp(_argv[0], _argv); + } else { + /* close logger */ + close_logger(); } exit(0); } diff --git a/asterisk.h b/asterisk.h index d221f2f90..1ceb13c77 100755 --- a/asterisk.h +++ b/asterisk.h @@ -40,6 +40,7 @@ extern int load_modules(void); extern int load_pbx(void); /* Provided by logger.c */ extern int init_logger(void); +extern void close_logger(void); /* Provided by frame.c */ extern int init_framer(void); /* Provided by logger.c */ @@ -428,6 +428,25 @@ int init_logger(void) return -1; } +void close_logger(void) +{ + struct msglist *m, *tmp; + + m = list; + ast_mutex_lock(&msglist_lock); + while(m) { + if (m->msg) { + free(m->msg); + } + tmp = m->next; + free(m); + m = tmp; + } + list = last = NULL; + ast_mutex_unlock(&msglist_lock); + return; +} + static void ast_log_vsyslog(int level, const char *file, int line, const char *function, const char *fmt, va_list args) { char buf[BUFSIZ]; |