ctdb-daemon: Only stop monitoring if it has been initialised
authorMartin Schwenke <martin@meltin.net>
Mon, 13 Jan 2020 10:13:32 +0000 (21:13 +1100)
committerMartin Schwenke <martins@samba.org>
Tue, 28 Jan 2020 09:57:32 +0000 (09:57 +0000)
This avoids a crash if ctdb_shutdown_sequence() is called before
monitoring is initialised.

Switch to using TALLOC_FREE() while touching this function.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/server/ctdb_monitor.c

index cfa3a6a1bfa3df0ddbd9a0e2fec126dfa4912bdc..5c694bde9695e3388fbefd835747d59bc9ad8210 100644 (file)
@@ -416,8 +416,12 @@ static void ctdb_check_health(struct tevent_context *ev,
 */
 void ctdb_stop_monitoring(struct ctdb_context *ctdb)
 {
-       talloc_free(ctdb->monitor->monitor_context);
-       ctdb->monitor->monitor_context = NULL;
+       if (ctdb->monitor == NULL) {
+               D_NOTICE("Monitoring not yet initialised\n");
+               return;
+       }
+
+       TALLOC_FREE(ctdb->monitor->monitor_context);
 
        ctdb->monitor->next_interval = 5;
        DEBUG(DEBUG_NOTICE,("Monitoring has been stopped\n"));