summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2011-08-10 23:10:48 -0400
committerAndreas Schneider <asn@samba.org>2011-08-11 14:58:01 +0200
commitb706fd37f6d0e7e66718488d069053687ad0664c (patch)
treea2440046423fca0764fee98637b8d43499c91fca /source3
parentcb1af61cb1988931654ad14c787d2493ef629a58 (diff)
downloadsamba-b706fd37f6d0e7e66718488d069053687ad0664c.tar.gz
samba-b706fd37f6d0e7e66718488d069053687ad0664c.tar.bz2
samba-b706fd37f6d0e7e66718488d069053687ad0664c.zip
s3-messaging: Fix messaging classes.
This has been broken since ff0ac5b0 (May 2007). Basically all messages were belonging to the General class except for CTDB messages. This fixed the message_send_all() function to correctly compute the class, and fixes registrations to include all they need to cope with the fact not all messages are of calss general (registrations rotted a bit because as long as FLAG_MSG_GENERAL was defined the process woould receive all messages). Signed-off-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source3')
-rw-r--r--source3/include/messages.h2
-rw-r--r--source3/lib/messages.c19
-rw-r--r--source3/librpc/idl/messaging.idl2
-rw-r--r--source3/nmbd/nmbd.c4
-rw-r--r--source3/winbindd/winbindd.c4
5 files changed, 19 insertions, 12 deletions
diff --git a/source3/include/messages.h b/source3/include/messages.h
index 86402dc07b..8ea6c89640 100644
--- a/source3/include/messages.h
+++ b/source3/include/messages.h
@@ -42,7 +42,7 @@
#define FLAG_MSG_GENERAL 0x0001
#define FLAG_MSG_SMBD 0x0002
#define FLAG_MSG_NMBD 0x0004
-/* #define FLAG_MSG_PRINT_NOTIFY 0x0008 Obsolete */
+#define FLAG_MSG_WINBIND 0x0008
#define FLAG_MSG_PRINT_GENERAL 0x0010
/* dbwrap messages 4001-4999 */
#define FLAG_MSG_DBWRAP 0x0020
diff --git a/source3/lib/messages.c b/source3/lib/messages.c
index 0cdef63fdc..57a2e22f72 100644
--- a/source3/lib/messages.c
+++ b/source3/lib/messages.c
@@ -146,18 +146,21 @@ bool message_send_all(struct messaging_context *msg_ctx,
struct msg_all msg_all;
msg_all.msg_type = msg_type;
- if (msg_type < 1000)
+ if (msg_type < 0x100) {
msg_all.msg_flag = FLAG_MSG_GENERAL;
- else if (msg_type > 1000 && msg_type < 2000)
+ } else if (msg_type > 0x100 && msg_type < 0x200) {
msg_all.msg_flag = FLAG_MSG_NMBD;
- else if (msg_type > 2100 && msg_type < 3000)
+ } else if (msg_type > 0x200 && msg_type < 0x300) {
msg_all.msg_flag = FLAG_MSG_PRINT_GENERAL;
- else if (msg_type > 3000 && msg_type < 4000)
+ } else if (msg_type > 0x300 && msg_type < 0x400) {
msg_all.msg_flag = FLAG_MSG_SMBD;
- else if (msg_type > 4000 && msg_type < 5000)
+ } else if (msg_type > 0x400 && msg_type < 0x600) {
+ msg_all.msg_flag = FLAG_MSG_WINBIND;
+ } else if (msg_type > 4000 && msg_type < 5000) {
msg_all.msg_flag = FLAG_MSG_DBWRAP;
- else
- return False;
+ } else {
+ return false;
+ }
msg_all.buf = buf;
msg_all.len = len;
@@ -167,7 +170,7 @@ bool message_send_all(struct messaging_context *msg_ctx,
serverid_traverse(traverse_fn, &msg_all);
if (n_sent)
*n_sent = msg_all.n_sent;
- return True;
+ return true;
}
struct event_context *messaging_event_context(struct messaging_context *msg_ctx)
diff --git a/source3/librpc/idl/messaging.idl b/source3/librpc/idl/messaging.idl
index 8e15bcecc1..309f0bb9f0 100644
--- a/source3/librpc/idl/messaging.idl
+++ b/source3/librpc/idl/messaging.idl
@@ -94,7 +94,7 @@ interface messaging
/* event messages */
MSG_DUMP_EVENT_LIST = 0x0500,
- /* dbwrap messages 4001-4999 */
+ /* dbwrap messages 4001-4999 (0x0FA0 - 0x1387) */
MSG_DBWRAP_TDB2_CHANGES = 4001,
MSG_DBWRAP_G_LOCK_RETRY = 4002
} messaging_type;
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c
index ceec2fdf9d..08a5504be4 100644
--- a/source3/nmbd/nmbd.c
+++ b/source3/nmbd/nmbd.c
@@ -932,7 +932,9 @@ static bool open_sockets(bool isdaemon, int port)
/* get broadcast messages */
if (!serverid_register(procid_self(),
- FLAG_MSG_GENERAL|FLAG_MSG_DBWRAP)) {
+ FLAG_MSG_GENERAL |
+ FLAG_MSG_NMBD |
+ FLAG_MSG_DBWRAP)) {
DEBUG(1, ("Could not register myself in serverid.tdb\n"));
exit(1);
}
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 0c07d4b1b6..cb9d70c5f3 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -1045,7 +1045,9 @@ void winbindd_register_handlers(void)
/* get broadcast messages */
if (!serverid_register(procid_self(),
- FLAG_MSG_GENERAL|FLAG_MSG_DBWRAP)) {
+ FLAG_MSG_GENERAL |
+ FLAG_MSG_WINBIND |
+ FLAG_MSG_DBWRAP)) {
DEBUG(1, ("Could not register myself in serverid.tdb\n"));
exit(1);
}