X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;ds=inline;f=perl%2FDXCommandmode.pm;h=96ccc0a494aa872575064fee0a22cee274ad30c9;hb=3634fba90a64fe488d237f438d9945d81158da52;hp=8dcb9b6cf9b0b07451199d825fddee6ce451205c;hpb=53899d74634af9db8d0b842d68b099972dd849b6;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 8dcb9b6c..96ccc0a4 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -41,6 +41,12 @@ $errstr = (); # error string from eval $scriptbase = "$main::root/scripts"; # the place where all users start scripts go $maxerrors = 20; # the maximum number of concurrent errors allowed before disconnection +use vars qw($VERSION $BRANCH); +$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); +$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0; +$main::build += $VERSION; +$main::branch += $BRANCH; + # # obtain a new connection this is derived from dxchannel # @@ -128,7 +134,7 @@ sub start # do we need to send a forward/opernam? my $lastoper = $user->lastoper || 0; my $homenode = $user->homenode || ""; - if ($homenode eq $main::mycall && $lastoper < $main::systime + $DXUser::lastoperinterval) { + if ($homenode eq $main::mycall && $lastoper + $DXUser::lastoperinterval < $main::systime) { run_cmd($DXProt::me, "forward/opernam $call"); $user->lastoper($main::systime); } @@ -419,8 +425,14 @@ sub disconnect my $call = $self->call; delete $self->{senddbg}; - my @rout = $main::routeroot->del_user($call); - dbg("B/C PC17 on $main::mycall for: $call") if isdbg('route'); + my $uref = Route::User::get($call); + my @rout; + if ($uref) { + @rout = $main::routeroot->del_user($uref); + dbg("B/C PC17 on $main::mycall for: $call") if isdbg('route'); + } else { + confess "trying to disconnect a non existant user $call"; + } # issue a pc17 to everybody interested DXProt::route_pc17($DXProt::me, $main::routeroot, @rout) if @rout;