From cde4b624b9eccd5b360d9cc7047a7f73527885aa Mon Sep 17 00:00:00 2001 From: minima Date: Fri, 11 Jan 2002 20:44:10 +0000 Subject: [PATCH] disable input when in disconnection. --- Changes | 2 ++ perl/cluster.pl | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) 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') { -- 2.34.1