res_statsd.c: Fix returned reload status.
authorRichard Mudgett <rmudgett@digium.com>
Tue, 9 Oct 2018 21:18:49 +0000 (16:18 -0500)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 9 Oct 2018 21:30:33 +0000 (16:30 -0500)
The return status when there was no change in statsd.conf was incorrect.
This resulted in the wrong status message on the CLI when reloading the
module.

* Fixed cleanup on initial load if initializing statsd failed.

Change-Id: Id24fae75f1a7ff584a444a5680e867d989792481

res/res_statsd.c

index 3e52c21..01a1fd8 100644 (file)
@@ -316,6 +316,14 @@ static void statsd_shutdown(void)
        }
 }
 
+static int unload_module(void)
+{
+       statsd_shutdown();
+       aco_info_destroy(&cfg_info);
+       ao2_global_obj_release(confs);
+       return 0;
+}
+
 static int load_module(void)
 {
        if (aco_info_init(&cfg_info)) {
@@ -364,34 +372,34 @@ static int load_module(void)
                return AST_MODULE_LOAD_SUCCESS;
        }
 
-       if (statsd_init() != 0) {
-               aco_info_destroy(&cfg_info);
+       if (statsd_init()) {
+               unload_module();
                return AST_MODULE_LOAD_DECLINE;
        }
 
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-static int unload_module(void)
-{
-       statsd_shutdown();
-       aco_info_destroy(&cfg_info);
-       ao2_global_obj_release(confs);
-       return 0;
-}
-
 static int reload_module(void)
 {
-       if (aco_process_config(&cfg_info, 1)) {
+       switch (aco_process_config(&cfg_info, 1)) {
+       case ACO_PROCESS_OK:
+               break;
+       case ACO_PROCESS_UNCHANGED:
+               return AST_MODULE_LOAD_SUCCESS;
+       case ACO_PROCESS_ERROR:
+       default:
                return AST_MODULE_LOAD_DECLINE;
        }
 
        if (is_enabled()) {
-               return statsd_init();
+               if (statsd_init()) {
+                       return AST_MODULE_LOAD_DECLINE;
+               }
        } else {
                statsd_shutdown();
-               return AST_MODULE_LOAD_SUCCESS;
        }
+       return AST_MODULE_LOAD_SUCCESS;
 }
 
 /* The priority of this module is set just after realtime, since it loads