diff options
Diffstat (limited to 'source3/lib/messages.c')
-rw-r--r-- | source3/lib/messages.c | 24 |
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; } |