diff --git a/res/res_smdi.c b/res/res_smdi.c
index 054e6aab63114691096bc6bfb37d31af24d4cc18..612a4b87bbeb80251b042dfe804d33bfd39a2e2b 100644
--- a/res/res_smdi.c
+++ b/res/res_smdi.c
@@ -1405,6 +1405,9 @@ static int load_module(void)
 	ast_custom_function_register(&smdi_msg_retrieve_function);
 	ast_custom_function_register(&smdi_msg_function);
 
+	/* For Optional API. */
+	ast_module_shutdown_ref(AST_MODULE_SELF);
+
 	return AST_MODULE_LOAD_SUCCESS;
 }
 
@@ -1434,9 +1437,6 @@ static int _unload_module(int fromload)
 
 	smdi_loaded = 0;
 
-	/* For Optional API. */
-	ast_module_shutdown_ref(AST_MODULE_SELF);
-
 	return 0;
 }