ctdb-client: Add a disconnect callback for ctdb client
[obnox/samba/samba-obnox.git] / ctdb / client / client_connect.c
index 8cff21307dbe090b88b948c37fb2ac85613bd424..d433f7ddc3fddd5cbb2012480e645a7a6fd49d52 100644 (file)
@@ -206,12 +206,27 @@ static void client_dead_handler(void *private_data)
 {
        struct ctdb_client_context *client = talloc_get_type_abort(
                private_data, struct ctdb_client_context);
+       ctdb_client_callback_func_t callback = client->callback;
+       void *callback_data = client->private_data;
 
-       DEBUG(DEBUG_NOTICE, ("connection to daemon closed, exiting\n"));
        talloc_free(client);
+       if (callback != NULL) {
+               callback(callback_data);
+               return;
+       }
+
+       DEBUG(DEBUG_NOTICE, ("connection to daemon closed, exiting\n"));
        exit(1);
 }
 
+void ctdb_client_set_disconnect_callback(struct ctdb_client_context *client,
+                                        ctdb_client_callback_func_t callback,
+                                        void *private_data)
+{
+       client->callback = callback;
+       client->private_data = private_data;
+}
+
 uint32_t ctdb_client_pnn(struct ctdb_client_context *client)
 {
        return client->pnn;