diff --git a/libs/freetdm/src/ftdm_dso.c b/libs/freetdm/src/ftdm_dso.c
index ea5056130a..6e7403165d 100644
--- a/libs/freetdm/src/ftdm_dso.c
+++ b/libs/freetdm/src/ftdm_dso.c
@@ -27,11 +27,12 @@
 #include <stdio.h>
 
 
-FT_DECLARE(void) ftdm_dso_destroy(ftdm_dso_lib_t *lib) {
+FT_DECLARE(ftdm_status_t) ftdm_dso_destroy(ftdm_dso_lib_t *lib) {
 	if (lib && *lib) {
 		FreeLibrary(*lib);
 		*lib = NULL;
 	}
+	return FTDM_SUCCESS;
 }
 
 FT_DECLARE(ftdm_dso_lib_t) ftdm_dso_open(const char *path, char **err) {
@@ -78,11 +79,20 @@ FT_DECLARE(void*) ftdm_dso_func_sym(ftdm_dso_lib_t lib, const char *sym, char **
 
 #include <dlfcn.h>
 
-FT_DECLARE(void) ftdm_dso_destroy(ftdm_dso_lib_t *lib) {
+FT_DECLARE(ftdm_status_t) ftdm_dso_destroy(ftdm_dso_lib_t *lib) {
+	int rc;
 	if (lib && *lib) {
-		dlclose(*lib);
+		rc = dlclose(*lib);
+		if (rc) {
+			ftdm_log(FTDM_LOG_ERROR, "Failed to close lib %p: %s\n", *lib, dlerror());
+			return FTDM_FAIL;
+		}
+		ftdm_log(FTDM_LOG_DEBUG, "lib %p was closed with success\n", *lib);
 		*lib = NULL;
+		return FTDM_SUCCESS;
 	}
+	ftdm_log(FTDM_LOG_ERROR, "Invalid pointer provided to ftdm_dso_destroy\n");
+	return FTDM_FAIL;
 }
 
 FT_DECLARE(ftdm_dso_lib_t) ftdm_dso_open(const char *path, char **err) {
@@ -93,7 +103,7 @@ FT_DECLARE(ftdm_dso_lib_t) ftdm_dso_open(const char *path, char **err) {
 	return lib;
 }
 
-FT_DECLARE(void*) ftdm_dso_func_sym(ftdm_dso_lib_t lib, const char *sym, char **err) {
+FT_DECLARE(void *) ftdm_dso_func_sym(ftdm_dso_lib_t lib, const char *sym, char **err) {
 	void *func = dlsym(lib, sym);
 	if (!func) {
 		*err = ftdm_strdup(dlerror());
diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c
index e7a0dd18d1..ab7f734c96 100644
--- a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c
+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c
@@ -2142,12 +2142,13 @@ static FIO_SIG_UNLOAD_FUNCTION(ftdm_sangoma_boost_destroy)
 	const void *key = NULL;
 	void *val = NULL;
 	ftdm_dso_lib_t lib;
-
+	ftdm_log(FTDM_LOG_DEBUG, "Destroying sangoma boost module\n");
 	for (i = hashtable_first(g_boost_modules_hash); i; i = hashtable_next(i)) {
 		hashtable_this(i, &key, NULL, &val);
 		if (key && val) {
 			sigmod = val;
 			lib = sigmod->pvt;
+			ftdm_log(FTDM_LOG_DEBUG, "destroying sigmod %s\n", sigmod->name);
 			ftdm_dso_destroy(&lib);
 		}
 	}
diff --git a/libs/freetdm/src/include/private/ftdm_dso.h b/libs/freetdm/src/include/private/ftdm_dso.h
index c4c4b705d1..7e9d6d6be9 100644
--- a/libs/freetdm/src/include/private/ftdm_dso.h
+++ b/libs/freetdm/src/include/private/ftdm_dso.h
@@ -17,6 +17,7 @@
  *
  */
 
+#include "freetdm.h"
 
 #ifndef _FTDM_DSO_H
 #define _FTDM_DSO_H
@@ -28,7 +29,7 @@ extern "C" {
 typedef void (*ftdm_func_ptr_t) (void);
 typedef void * ftdm_dso_lib_t;
 
-FT_DECLARE(void) ftdm_dso_destroy(ftdm_dso_lib_t *lib);
+FT_DECLARE(ftdm_status_t) ftdm_dso_destroy(ftdm_dso_lib_t *lib);
 FT_DECLARE(ftdm_dso_lib_t) ftdm_dso_open(const char *path, char **err);
 FT_DECLARE(void *) ftdm_dso_func_sym(ftdm_dso_lib_t lib, const char *sym, char **err);