From 71c5586d306d52f0ca96c2aa8c7ecd5d79005a1d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 16 Apr 2007 00:29:13 +0000 Subject: r22232: add a special message handler ID meaning "all messages please" This better fits the way Samba4 does message dispatch (This used to be commit 2c12f8e72fb999f4f66700291dd4d7f6f73a8eae) --- source4/cluster/ctdb/common/ctdb_message.c | 2 +- source4/cluster/ctdb/ctdb_cluster.c | 4 ++-- source4/cluster/ctdb/include/ctdb.h | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'source4/cluster') diff --git a/source4/cluster/ctdb/common/ctdb_message.c b/source4/cluster/ctdb/common/ctdb_message.c index dba15aecb9..ad88ec22d2 100644 --- a/source4/cluster/ctdb/common/ctdb_message.c +++ b/source4/cluster/ctdb/common/ctdb_message.c @@ -39,7 +39,7 @@ static int ctdb_dispatch_message(struct ctdb_context *ctdb, uint32_t srvid, TDB_ /* XXX we need a must faster way of finding the matching srvid - maybe a tree? */ for (ml=ctdb->message_list;ml;ml=ml->next) { - if (ml->srvid == srvid) break; + if (ml->srvid == srvid || ml->srvid == CTDB_SRVID_ALL) break; } if (ml == NULL) { printf("daemon vnn:%d no msg handler for srvid=%u\n", ctdb_get_vnn(ctdb), srvid); diff --git a/source4/cluster/ctdb/ctdb_cluster.c b/source4/cluster/ctdb/ctdb_cluster.c index aee47c6281..82eea6a3d4 100644 --- a/source4/cluster/ctdb/ctdb_cluster.c +++ b/source4/cluster/ctdb/ctdb_cluster.c @@ -144,8 +144,8 @@ static NTSTATUS ctdb_message_init(struct cluster_ops *ops, int ret; /* setup messaging handler */ - ret = ctdb_set_message_handler(state->ctdb, ctdb_message_handler, - server.id, state); + ret = ctdb_set_message_handler(state->ctdb, CTDB_SRVID_ALL, + ctdb_message_handler, state); if (ret == -1) { DEBUG(0,("ctdb_set_message_handler failed - %s\n", ctdb_errstr(state->ctdb))); diff --git a/source4/cluster/ctdb/include/ctdb.h b/source4/cluster/ctdb/include/ctdb.h index d5a1b581e5..f24f1000a4 100644 --- a/source4/cluster/ctdb/include/ctdb.h +++ b/source4/cluster/ctdb/include/ctdb.h @@ -56,6 +56,11 @@ struct ctdb_call_info { #define CTDB_FLAG_CONNECT_WAIT (1<<2) +/* + a message handler ID meaning "give me all messages" + */ +#define CTDB_SRVID_ALL 0xFFFFFFFF + struct event_context; /* -- cgit