summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>1998-09-02 05:00:47 +0000
committerAndrew Tridgell <tridge@samba.org>1998-09-02 05:00:47 +0000
commit148691b1c5e8e93b02762757345a54c82e6fdadc (patch)
tree08f4f6c366bc0e5f56e924bc44db1c2c72aa3fc0
parent054a7bcd3a01d6a4fa48be816f8218541d0cbd52 (diff)
downloadsamba-148691b1c5e8e93b02762757345a54c82e6fdadc.tar.gz
samba-148691b1c5e8e93b02762757345a54c82e6fdadc.tar.bz2
samba-148691b1c5e8e93b02762757345a54c82e6fdadc.zip
we are never interested in SIGPIPE so just ignore (block) it
always. Don't even install a handler. (This used to be commit 72c383f4b7bcce5374632dc972df16ab0e2542b9)
-rw-r--r--source3/lib/util.c9
-rw-r--r--source3/nmbd/nmbd.c14
-rw-r--r--source3/smbd/server.c26
3 files changed, 5 insertions, 44 deletions
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 4187787489..8b10939a97 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -3391,15 +3391,6 @@ void *Realloc(void *p,int size)
/****************************************************************************
- Signal handler for SIGPIPE (write on a disconnected socket)
-****************************************************************************/
-void Abort(void )
-{
- DEBUG(0,("Probably got SIGPIPE\nExiting\n"));
- exit(2);
-}
-
-/****************************************************************************
get my own name and IP
****************************************************************************/
BOOL get_myname(char *my_name,struct in_addr *ip)
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c
index 72cc9408d5..ef3713c134 100644
--- a/source3/nmbd/nmbd.c
+++ b/source3/nmbd/nmbd.c
@@ -103,17 +103,6 @@ static void sig_hup(int sig)
} /* sig_hup */
-/**************************************************************************** **
- catch a sigpipe
- **************************************************************************** */
-static void sig_pipe(int sig)
-{
- BlockSignals( True, SIGPIPE );
-
- DEBUG( 0, ("Got SIGPIPE\n") );
-
- BlockSignals( False, SIGPIPE );
-} /* sig_pipe */
#if DUMP_CORE
/**************************************************************************** **
@@ -432,7 +421,8 @@ static BOOL open_sockets(BOOL isdaemon, int port)
if ( ClientNMB == -1 )
return( False );
- CatchSignal( SIGPIPE, SIGNAL_CAST sig_pipe );
+ /* we are never interested in SIGPIPE */
+ BlockSignals(True,SIGPIPE);
set_socket_options( ClientNMB, "SO_BROADCAST" );
set_socket_options( ClientDGRAM, "SO_BROADCAST" );
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 1bc6cf273f..dadf2018c8 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -67,25 +67,6 @@ void killkids(void)
}
-
-/****************************************************************************
- this is called when the client exits abruptly
- **************************************************************************/
-static void sig_pipe(int sig)
-{
- struct cli_state *cli;
- BlockSignals(True,SIGPIPE);
-
- if ((cli = server_client()) && cli->initialised) {
- DEBUG(3,("lost connection to password server\n"));
- cli_shutdown(cli);
- BlockSignals(False,SIGPIPE);
- return;
- }
-
- exit_server("Got sigpipe\n");
-}
-
/****************************************************************************
open the socket communication
****************************************************************************/
@@ -96,7 +77,6 @@ static BOOL open_sockets_inetd(void)
/* Started from inetd. fd 0 is the socket. */
/* We will abort gracefully when the client or remote system
goes away */
- CatchSignal(SIGPIPE, SIGNAL_CAST sig_pipe);
Client = dup(0);
/* close our standard file descriptors */
@@ -244,9 +224,6 @@ max can be %d\n",
if (Client != -1 && fork()==0) {
/* Child code ... */
- CatchSignal(SIGPIPE,
- SIGNAL_CAST sig_pipe);
-
/* close the listening socket(s) */
for(i = 0; i < num_interfaces; i++)
close(fd_listenset[i]);
@@ -552,6 +529,9 @@ static void usage(char *pname)
fault_setup((void (*)(void *))exit_server);
CatchSignal(SIGTERM , SIGNAL_CAST dflt_sig);
+ /* we are never interested in SIGPIPE */
+ BlockSignals(True,SIGPIPE);
+
/* we want total control over the permissions on created files,
so set our umask to 0 */
umask(0);