From eb34b881a4c3b5870b5f1e1315246eba8f26bff5 Mon Sep 17 00:00:00 2001
From: Corey Farrell <git@cfware.com>
Date: Wed, 15 Aug 2018 12:31:00 -0400
Subject: [PATCH] res_odbc: Allow unload at shutdown.

This makes it possible for REF_DEBUG to report no leaks when loading
res_odbc.

Change-Id: I1a3dea786bd6e7f4820a6dd5cbaa197fa783ce93
---
 res/res_odbc.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/res/res_odbc.c b/res/res_odbc.c
index 3ee8cba74e..b4c1585993 100644
--- a/res/res_odbc.c
+++ b/res/res_odbc.c
@@ -996,17 +996,25 @@ static int reload(void)
 
 static int unload_module(void)
 {
-	/* Prohibit unloading */
-	return -1;
+	ao2_cleanup(class_container);
+	ast_cli_unregister_multiple(cli_odbc, ARRAY_LEN(cli_odbc));
+
+	return 0;
 }
 
 static int load_module(void)
 {
-	if (!(class_container = ao2_container_alloc(1, null_hash_fn, ao2_match_by_addr)))
+	if (!(class_container = ao2_container_alloc(1, null_hash_fn, ao2_match_by_addr))) {
 		return AST_MODULE_LOAD_DECLINE;
-	if (load_odbc_config() == -1)
+	}
+
+	if (load_odbc_config() == -1) {
 		return AST_MODULE_LOAD_DECLINE;
+	}
+
+	ast_module_shutdown_ref(ast_module_info->self);
 	ast_cli_register_multiple(cli_odbc, ARRAY_LEN(cli_odbc));
+
 	return AST_MODULE_LOAD_SUCCESS;
 }
 
-- 
GitLab