fix // in talk
[spider.git] / perl / DXChannel.pm
index 584015518e6ea2b93478b10660d80d7e60ac4da3..d0c995d9756c3bd582e3ed2c9db8766f6b38d5a0 100644 (file)
@@ -109,11 +109,16 @@ $count = 0;
                  badcount => '1,Bad Word Count',
                  edit => '7,Edit Function',
                  registered => '9,Registered?,yesno',
+                 prompt => '0,Required Prompt',
+                 version => '1,Node Version',
+                 build => '1,Node Build',
+                 verified => '9,Verified?,yesno',
+                 newroute => '1,New Style Routing,yesno',
                 );
 
 use vars qw($VERSION $BRANCH);
 $VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0;
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
 $main::build += $VERSION;
 $main::branch += $BRANCH;
 
@@ -298,6 +303,15 @@ sub sort
        return @_ ? $self->{'sort'} = shift : $self->{'sort'} ;
 }
 
+# find out whether we are prepared to believe this callsign on this interface
+sub is_believed
+{
+       my $self = shift;
+       my $call = shift;
+       
+       return grep $call eq $_, $self->user->believe;
+}
+
 # handle out going messages, immediately without waiting for the select to drop
 # this could, in theory, block
 sub send_now
@@ -422,6 +436,7 @@ sub disconnect
        my $self = shift;
        my $user = $self->{user};
        
+       main::clean_inqueue($self);          # clear out any remaining incoming frames
        $user->close() if defined $user;
        $self->{conn}->disconnect;
        $self->del();
@@ -493,12 +508,12 @@ sub decode_input
        # the above regexp must work
        unless (defined $sort && defined $call && defined $line) {
 #              $data =~ s/([\x00-\x1f\x7f-\xff])/uc sprintf("%%%02x",ord($1))/eg;
-               dbg("DUFF Line on $chcall: $data") if isdbg('err');
+               dbg("DUFF Line on $chcall: $data");
                return ();
        }
 
        if(ref($dxchan) && $call ne $chcall) {
-               dbg("DUFF Line come in for $call on wrong channel $chcall") if isdbg('err');
+               dbg("DUFF Line come in for $call on wrong channel $chcall");
                return();
        }
        
@@ -513,15 +528,16 @@ sub rspfcheck
        if ($nref && $dxchan) {
            if ($dxchan == $self) {
                        return 1 unless $user;
+                       return 1 if $user eq $node;
                        my @users = $nref->users;
                        return 1 if @users == 0 || grep $user eq $_, @users;
-                       dbg("RSPF: $user not on $node") if isdbg('rspf');
+                       dbg("RSPF: $user not on $node") if isdbg('chanerr');
                } else {
-                       dbg("RSPF: Shortest path for $node is " . $nref->dxchan->{call}) if isdbg('rspf');
+                       dbg("RSPF: Shortest path for $node is " . $nref->dxchan->{call}) if isdbg('chanerr');
                }
        } else {
                return 1 if $flag;
-               dbg("RSPF: required $node not found" ) if isdbg('rspf');
+               dbg("RSPF: required $node not found" ) if isdbg('chanerr');
        }
        return 0;
 }
@@ -618,20 +634,20 @@ sub broadcast_list
 }
 
 
-no strict;
+#no strict;
 sub AUTOLOAD
 {
-       my $self = shift;
+       no strict;
        my $name = $AUTOLOAD;
        return if $name =~ /::DESTROY$/;
-       $name =~ s/.*:://o;
+       $name =~ s/^.*:://o;
   
        confess "Non-existant field '$AUTOLOAD'" if !$valid{$name};
 
        # this clever line of code creates a subroutine which takes over from autoload
        # from OO Perl - Conway
-       *{$AUTOLOAD} = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}} ;
-    @_ ? $self->{$name} = shift : $self->{$name} ;
+       *$AUTOLOAD = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}};
+       goto &$AUTOLOAD;
 }