summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2006-04-10 22:47:09 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:15:57 -0500
commiteecdc6c956d983be2c139843e2730136d3273fe9 (patch)
tree28bcee7d7148337a132c4ddf711888a77e6b60ef
parent6c237e04b2b6be22465563cb77fd6de35f52fcc4 (diff)
downloadsamba-eecdc6c956d983be2c139843e2730136d3273fe9.tar.gz
samba-eecdc6c956d983be2c139843e2730136d3273fe9.tar.bz2
samba-eecdc6c956d983be2c139843e2730136d3273fe9.zip
r15022: Fix core dumps on normal server exit.
Jeremy. (This used to be commit 13c3abf03187f84874b5754b54de5d3fe2dea188)
-rw-r--r--source3/include/includes.h2
-rw-r--r--source3/smbd/process.c8
-rw-r--r--source3/smbd/server.c10
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);
}