From c23e5fea96135f5b7de00ec0eb8cf651a6aff08d Mon Sep 17 00:00:00 2001
From: Steve Murphy <murf@digium.com>
Date: Tue, 17 Jun 2008 20:00:36 +0000
Subject: [PATCH] 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
---
 cdr/cdr_tds.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/cdr/cdr_tds.c b/cdr/cdr_tds.c
index 2991df134a..235e1a6b8d 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)
-- 
GitLab