diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-09-02 05:00:47 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-09-02 05:00:47 +0000 |
commit | 148691b1c5e8e93b02762757345a54c82e6fdadc (patch) | |
tree | 08f4f6c366bc0e5f56e924bc44db1c2c72aa3fc0 | |
parent | 054a7bcd3a01d6a4fa48be816f8218541d0cbd52 (diff) | |
download | samba-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.c | 9 | ||||
-rw-r--r-- | source3/nmbd/nmbd.c | 14 | ||||
-rw-r--r-- | source3/smbd/server.c | 26 |
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); |