From eecdc6c956d983be2c139843e2730136d3273fe9 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 10 Apr 2006 22:47:09 +0000 Subject: r15022: Fix core dumps on normal server exit. Jeremy. (This used to be commit 13c3abf03187f84874b5754b54de5d3fe2dea188) --- source3/include/includes.h | 2 +- source3/smbd/process.c | 8 ++++---- source3/smbd/server.c | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source3/include/includes.h b/source3/include/includes.h index 7702b6645e..c83b707887 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -1564,7 +1564,7 @@ LDAP *ldap_open_with_timeout(const char *server, int port, unsigned int to); void smb_panic( const char *why ) NORETURN_ATTRIBUTE ; void dump_core(void) NORETURN_ATTRIBUTE ; void exit_server(const char *const reason) NORETURN_ATTRIBUTE ; -void exit_server_cleanly(void) NORETURN_ATTRIBUTE ; +void exit_server_cleanly(const char *const reason) NORETURN_ATTRIBUTE ; void exit_server_fault(void) NORETURN_ATTRIBUTE ; #endif /* _INCLUDES_H */ diff --git a/source3/smbd/process.c b/source3/smbd/process.c index cdeccab5e8..b2634e2653 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -303,7 +303,7 @@ static void async_processing(fd_set *pfds) process_aio_queue(); if (got_sig_term) { - exit_server_cleanly(); + exit_server_cleanly("termination signal"); } /* check for async change notify events */ @@ -886,7 +886,7 @@ static int switch_message(int type,char *inbuf,char *outbuf,int size,int bufsize /* Make sure this is an SMB packet. smb_size contains NetBIOS header so subtract 4 from it. */ if ((strncmp(smb_base(inbuf),"\377SMB",4) != 0) || (size < (smb_size - 4))) { DEBUG(2,("Non-SMB packet of length %d. Terminating server\n",smb_len(inbuf))); - exit_server("Non-SMB packet"); + exit_server_cleanly("Non-SMB packet"); return(-1); } @@ -1100,7 +1100,7 @@ static void process_smb(char *inbuf, char *outbuf) static unsigned char buf[5] = {0x83, 0, 0, 1, 0x81}; DEBUG( 1, ( "Connection denied from %s\n", client_addr() ) ); (void)send_smb(smbd_server_fd(),(char *)buf); - exit_server("connection denied"); + exit_server_cleanly("connection denied"); } } @@ -1122,7 +1122,7 @@ static void process_smb(char *inbuf, char *outbuf) DEBUG(0,("ERROR: Invalid message response size! %d %d\n", nread, smb_len(outbuf))); } else if (!send_smb(smbd_server_fd(),outbuf)) { - exit_server("process_smb: send_smb failed."); + exit_server_cleanly("process_smb: send_smb failed."); } } trans_num++; diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 0880778f55..d5a678b850 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -153,7 +153,7 @@ static void msg_exit_server(int msg_type, struct process_id src, void *buf, size_t len) { DEBUG(3, ("got a SHUTDOWN message\n")); - exit_server_cleanly(); + exit_server_cleanly(NULL); } #ifdef DEVELOPER @@ -397,7 +397,7 @@ static BOOL open_sockets_smbd(BOOL is_daemon, BOOL interactive, const char *smb_ if (num == -1 && errno == EINTR) { if (got_sig_term) { - exit_server_cleanly(); + exit_server_cleanly(NULL); } /* check for sighup processing */ @@ -681,9 +681,9 @@ void exit_server(const char *const explanation) exit_server_common(SERVER_EXIT_ABNORMAL, explanation); } -void exit_server_cleanly(void) +void exit_server_cleanly(const char *const explanation) { - exit_server_common(SERVER_EXIT_NORMAL, NULL); + exit_server_common(SERVER_EXIT_NORMAL, explanation); } void exit_server_fault(void) @@ -1014,6 +1014,6 @@ void build_options(BOOL screen); namecache_shutdown(); - exit_server_cleanly(); + exit_server_cleanly(NULL); return(0); } -- cgit