allow sh/qrz to use a http proxy
[spider.git] / perl / DXProt.pm
index dffb2055407c700ea8fe831d95241b7c630d2d93..99c2ef82a674362f5c1aa34df27d165553c34efa 100644 (file)
@@ -388,7 +388,7 @@ sub normal
                        if ($self->{inspotsfilter}) {
                                my ($filter, $hops) = $self->{inspotsfilter}->it(@spot);
                                unless ($filter) {
-                                       dbg("PCPROT: Rejected by filter") if isdbg('chanerr');
+                                       dbg("PCPROT: Rejected by input spot filter") if isdbg('chanerr');
                                        return;
                                }
                        }
@@ -502,7 +502,7 @@ sub normal
                                        my ($filter, $hops) = $self->{inannfilter}->it(@field[1..6], $self->{call}, 
                                                                                                        $ann_dxcc, $ann_itu, $ann_cq, $org_dxcc, $org_itu, $org_cq);
                                        unless ($filter) {
-                                               dbg("PCPROT: Rejected by filter") if isdbg('chanerr');
+                                               dbg("PCPROT: Rejected by input announce filter") if isdbg('chanerr');
                                                return;
                                        }
                                }
@@ -648,27 +648,26 @@ sub normal
                                # update it if required
                                my $r = Route::Node::get($call);
                                my $flags = Route::here($here)|Route::conf($conf);
-                               if ($parent->call eq $call && ($parent->version ne $ver || $parent->flags != $flags)) {
-                                       $parent->version($ver);
-                                       $parent->flags($flags);
-                                       push @rout, $parent;
-                               } elsif ($r) {
-                                       my $ar = $parent->add($r);
-                                       push @rout, $ar if $ar;
+                               if ($r) {
+                                       my $ar;
+                                       if ($call ne $parent->call) {
+                                               if ($self->in_filter_route($r)) {
+                                                       $ar = $parent->add($call, $ver, $flags);
+                                                       push @rout, $ar if $ar;
+                                               }
+                                       }
                                        if ($r->version ne $ver || $r->flags != $flags) {
                                                $r->version($ver);
-                                               $r->flags(Route::here($here)|Route::conf($conf));
+                                               $r->flags($flags);
                                                push @rout, $r unless $ar;
                                        }
-                               } elsif ($parent->call ne $call) {
+                               } else {
                                        next if $call eq $main::mycall || $call eq $self->{call};
                                        
-                                       my $new = Route::Node->new($call, $ver, Route::here($here)|Route::conf($conf));
+                                       my $new = Route->new($call);          # throw away
                                    if ($self->in_filter_route($new)) {
-                                               $parent->add($new);
-                                               push @rout, $new;
-                                       } else {
-                                               $new->del($parent);
+                                               my $r = $parent->add($call, $ver, $flags);
+                                               push @rout, $r;
                                        }
                                }
 
@@ -1759,7 +1758,7 @@ sub send_route
                                if ($filter) {
                                        push @rin, $r;
                                } else {
-                                       dbg('DXPROT: Rejected by filter') if isdbg('chanerr');
+                                       dbg("DXPROT: $self->{call}/" . $r->call . " rejected by output filter") if isdbg('chanerr');
                                }
                        } else {
                                dbg("was sent a null value") if isdbg('chanerr');
@@ -1793,7 +1792,7 @@ sub broadcast_route
        foreach $dxchan (@dxchan) {
                next if $dxchan == $self;
                next if $dxchan == $me;
-               if ($self->{routefilter} || !$self->{isolate}) {
+               if ($dxchan->{routefilter} || !$self->{isolate}) {
                        $dxchan->send_route($generate, @_) 
                } else {
                        dbg('DXPROT: isolated') if isdbg('chanerr');
@@ -1851,7 +1850,7 @@ sub in_filter_route
        
        if ($self->{inroutefilter}) {
                ($filter, $hops) = $self->{inroutefilter}->it($self->{call}, $self->{dxcc}, $self->{itu}, $self->{cq}, $r->call, $r->dxcc, $r->itu, $r->cq);
-               dbg('PCPROT: rejected by filter') if !$filter && isdbg('chanerr');
+               dbg("PCPROT: $self->{call}/" . $r->call . ' rejected by in_filter_route') if !$filter && isdbg('chanerr');
        }
        return $filter;
 }