From: minima Date: Fri, 11 Jan 2002 20:44:10 +0000 (+0000) Subject: disable input when in disconnection. X-Git-Tag: R_1_50~82 X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=cde4b624b9eccd5b360d9cc7047a7f73527885aa;p=spider.git disable input when in disconnection. --- diff --git a/Changes b/Changes index 4e77e665..c7fdcfce 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,8 @@ 11Jan02======================================================================= 1. Make M$ TCP connx blocking again, sigh... 2. backed out ALL the M$ speedup and make nicer changes :-( +3. cope with data coming in during the disconnection process. Don't worry +Earth people, this will take no longer than 15 of your Earth seconds... 10Jan02======================================================================= 1. set SO_LINGER = 0 to try to prevent the system sending data on a closing socket. This MAY help some of the hanging problems (but I am now beginning diff --git a/perl/cluster.pl b/perl/cluster.pl index 203f6956..d108a560 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -293,7 +293,7 @@ sub process_inqueue while (@inqueue) { my $self = shift @inqueue; return if !$self; - + my $data = $self->{data}; my $dxchan = $self->{dxchan}; my $error; @@ -302,13 +302,18 @@ sub process_inqueue # do the really sexy console interface bit! (Who is going to do the TK interface then?) dbg("<- $sort $call $line\n") if $sort ne 'D' && isdbg('chan'); - + if ($self->{disconnecting}) { + dbg('In disconnection, ignored'); + next; + } + # handle A records my $user = $dxchan->user; if ($sort eq 'A' || $sort eq 'O') { $dxchan->start($line, $sort); } elsif ($sort eq 'I') { die "\$user not defined for $call" if !defined $user; + # normal input $dxchan->normal($line); } elsif ($sort eq 'Z') {