diff options
-rw-r--r-- | ctdb/client/client.h | 6 | ||||
-rw-r--r-- | ctdb/client/client_message.c | 20 |
2 files changed, 18 insertions, 8 deletions
diff --git a/ctdb/client/client.h b/ctdb/client/client.h index 82d543a2f6b..df0b9b8bee7 100644 --- a/ctdb/client/client.h +++ b/ctdb/client/client.h @@ -100,14 +100,12 @@ struct tevent_req *ctdb_client_remove_message_handler_send( bool ctdb_client_remove_message_handler_recv(struct tevent_req *req, int *perr); -int ctdb_client_set_message_handler(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, +int ctdb_client_set_message_handler(struct tevent_context *ev, struct ctdb_client_context *client, uint64_t srvid, srvid_handler_fn handler, void *private_data); -int ctdb_client_remove_message_handler(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, +int ctdb_client_remove_message_handler(struct tevent_context *ev, struct ctdb_client_context *client, uint64_t srvid, void *private_data); diff --git a/ctdb/client/client_message.c b/ctdb/client/client_message.c index c316f42ff33..d5338420cd4 100644 --- a/ctdb/client/client_message.c +++ b/ctdb/client/client_message.c @@ -371,16 +371,22 @@ bool ctdb_client_remove_message_handler_recv(struct tevent_req *req, int *perr) return true; } -int ctdb_client_set_message_handler(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, +int ctdb_client_set_message_handler(struct tevent_context *ev, struct ctdb_client_context *client, uint64_t srvid, srvid_handler_fn handler, void *private_data) { + TALLOC_CTX *mem_ctx; int ret; + mem_ctx = talloc_new(client); + if (mem_ctx == NULL) { + return ENOMEM; + } + ret = ctdb_ctrl_register_srvid(mem_ctx, ev, client, client->pnn, tevent_timeval_zero(), srvid); + talloc_free(mem_ctx); if (ret != 0) { return ret; } @@ -389,15 +395,21 @@ int ctdb_client_set_message_handler(TALLOC_CTX *mem_ctx, handler, private_data); } -int ctdb_client_remove_message_handler(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, +int ctdb_client_remove_message_handler(struct tevent_context *ev, struct ctdb_client_context *client, uint64_t srvid, void *private_data) { + TALLOC_CTX *mem_ctx; int ret; + mem_ctx = talloc_new(client); + if (mem_ctx == NULL) { + return ENOMEM; + } + ret = ctdb_ctrl_deregister_srvid(mem_ctx, ev, client, client->pnn, tevent_timeval_zero(), srvid); + talloc_free(mem_ctx); if (ret != 0) { return ret; } |