summaryrefslogtreecommitdiff
path: root/source3/lib/messages.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/messages.c')
-rw-r--r--source3/lib/messages.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/source3/lib/messages.c b/source3/lib/messages.c
index e6d2de4a58..8602c2f32d 100644
--- a/source3/lib/messages.c
+++ b/source3/lib/messages.c
@@ -79,7 +79,7 @@ static void sig_usr1(void)
A useful function for testing the message system.
****************************************************************************/
-static void ping_message(int msg_type, pid_t src, void *buf, size_t len)
+void ping_message(int msg_type, pid_t src, void *buf, size_t len)
{
char *msg = buf ? buf : "none";
DEBUG(1,("INFO: Received PING message from PID %u [%s]\n",(unsigned int)src, msg));
@@ -87,6 +87,16 @@ static void ping_message(int msg_type, pid_t src, void *buf, size_t len)
}
/****************************************************************************
+ Return current debug level.
+****************************************************************************/
+
+void debuglevel_message(int msg_type, pid_t src, void *buf, size_t len)
+{
+ DEBUG(1,("INFO: Received REQ_DEBUGLEVEL message from PID %u\n",(unsigned int)src));
+ message_send_pid(src, MSG_DEBUGLEVEL, DEBUGLEVEL_CLASS, sizeof(DEBUGLEVEL_CLASS), True);
+}
+
+/****************************************************************************
Initialise the messaging functions.
****************************************************************************/
@@ -106,6 +116,7 @@ BOOL message_init(void)
CatchSignal(SIGUSR1, SIGNAL_CAST sig_usr1);
message_register(MSG_PING, ping_message);
+ message_register(MSG_REQ_DEBUGLEVEL, debuglevel_message);
return True;
}
@@ -329,8 +340,8 @@ void message_dispatch(void)
}
}
if (!n_handled) {
- DEBUG(5,("message_dispatch: warning: no handlers registered for "
- "msg_type %d in pid %d\n",
+ DEBUG(5,("message_dispatch: warning: no handlers registed for "
+ "msg_type %d in pid%d\n",
msg_type, sys_getpid()));
}
SAFE_FREE(buf);
@@ -453,7 +464,7 @@ BOOL message_send_all(TDB_CONTEXT *conn_tdb, int msg_type,
return True;
}
-static SIG_ATOMIC_T gotalarm;
+static VOLATILE sig_atomic_t gotalarm;
/***************************************************************
Signal function to tell us we timed out.
@@ -475,7 +486,6 @@ BOOL message_named_mutex(char *name, unsigned int timeout)
{
TDB_DATA key;
int ret;
- void (*oldsig_handler)(int) = NULL;
if (!message_init())
return False;
@@ -485,7 +495,7 @@ BOOL message_named_mutex(char *name, unsigned int timeout)
if (timeout) {
gotalarm = 0;
- oldsig_handler = CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
+ CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
alarm(timeout);
}
@@ -493,7 +503,7 @@ BOOL message_named_mutex(char *name, unsigned int timeout)
if (timeout) {
alarm(0);
- CatchSignal(SIGALRM, SIGNAL_CAST oldsig_handler);
+ CatchSignal(SIGALRM, SIGNAL_CAST SIG_IGN);
if (gotalarm)
return False;
}