diff options
author | Steve Murphy <murf@digium.com> | 2008-06-17 20:00:36 +0000 |
---|---|---|
committer | Steve Murphy <murf@digium.com> | 2008-06-17 20:00:36 +0000 |
commit | c23e5fea96135f5b7de00ec0eb8cf651a6aff08d (patch) | |
tree | 99d71cb1a9e4252c3048c96966e0df9abb1dc3f2 /cdr/cdr_tds.c | |
parent | 5aeb6a6cbba7b1e32e5fac2c08773d141c87047e (diff) |
This solves a crash in the cdr_tds module on 'stop gracefully', for situations where 'settings' is not set to a pointer
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@123446 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'cdr/cdr_tds.c')
-rw-r--r-- | cdr/cdr_tds.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/cdr/cdr_tds.c b/cdr/cdr_tds.c index 2991df134..235e1a6b8 100644 --- a/cdr/cdr_tds.c +++ b/cdr/cdr_tds.c @@ -291,6 +291,9 @@ static void get_date(char *dateField, struct timeval tv) static int mssql_disconnect(void) { + if (!settings) + return 0; + if (settings->tds) { tds_free_socket(settings->tds); settings->tds = NULL; @@ -399,9 +402,12 @@ connect_fail: static void cdr_tds_config_destroy(void) { - ast_mutex_destroy(&settings->lock); - ast_string_field_free_memory(settings); - ast_free(settings); + if (settings) + { + ast_mutex_destroy(&settings->lock); + ast_string_field_free_memory(settings); + ast_free(settings); + } } static int tds_unload_module(void) |