--- loncom/loncnew 2010/12/20 11:31:52 1.91 +++ loncom/loncnew 2011/01/10 12:23:00 1.93 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # lonc maintains the connections to remote computers # -# $Id: loncnew,v 1.91 2010/12/20 11:31:52 foxr Exp $ +# $Id: loncnew,v 1.93 2011/01/10 12:23:00 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -441,7 +441,8 @@ Trigger disconnections of idle sockets. sub SetupTimer { Debug(6, "SetupTimer"); - Event->timer(interval => 1, cb => \&Tick ); + Event->timer(interval => 1, cb => \&Tick, + hard => 1); } =pod @@ -1732,6 +1733,13 @@ sub ChildProcess { cb => \&ToggleDebug, data => "INT"); + # Block the pipe signal we'll get when the socket disconnects. We detect + # socket disconnection via send/receive failures. On disconnect, the + # socket becomes readable .. which will force the disconnect detection. + + my $set = POSIX::SigSet->new(SIGPIPE); + sigprocmask(SIG_BLOCK, $set); + # Figure out if we got passed a socket or need to open one to listen for # client requests.