aboutsummaryrefslogtreecommitdiffstats
path: root/cdr
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2008-06-17 20:00:36 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2008-06-17 20:00:36 +0000
commit04118c0c211ca1752ae04fce58b79b8d234dae8b (patch)
tree99d71cb1a9e4252c3048c96966e0df9abb1dc3f2 /cdr
parent49d94f15e6003ded45a0b65a5185140b9c5cf749 (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: http://svn.digium.com/svn/asterisk/trunk@123446 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'cdr')
-rw-r--r--cdr/cdr_tds.c12
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)