Another showstopper in 2.2.5

Fredrik Ohrn ohrn at chl.chalmers.se
Tue Aug 20 11:08:01 GMT 2002


On Tue, 20 Aug 2002, Tom Jansen wrote:

> > > > Sooner or later the smbd dies on a SIGPIPE when trying to send a
> > > > keepalive. The SIGPIPE isn't catched, thus it leaves stale sharemodes.
> 
> > After getting a hint on signalhandling I put a BlockSignals call into
> > send_keepalive.
> >
> >
> > --- lib/util_sock.c.org Tue Aug 20 12:31:58 2002
> > +++ lib/util_sock.c     Tue Aug 20 12:33:15 2002
> > @@ -401,6 +401,7 @@
> >         buf[0] = 0x85;
> >         buf[1] = buf[2] = buf[3] = 0;
> >
> > +       BlockSignals(True,SIGPIPE);
> >         return(write_socket_data(client,(char *)buf,4) == 4);
> >  }
> 
> What about unblocking ?
> 

Well, since there's no signal handler for SIGPIPE you might just end up 
with death by SIGPIPE somewhere else in the code instead.

I guess the proper thing to do is to globally block SIGPIPE at startup 
and assume that all calls to read()/write() properly handles the case of 
failure with EPIPE.


/Fredrik

-- 
   "It is easy to be blinded to the essential uselessness of computers by
   the sense of accomplishment you get from getting them to work at all."
                                                   - Douglas Adams

Fredrik Öhrn                               Chalmers University of Technology
ohrn at chl.chalmers.se                                                  Sweden




More information about the samba-technical mailing list