projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix typo
[spider.git]
/
perl
/
DXProt.pm
diff --git
a/perl/DXProt.pm
b/perl/DXProt.pm
index 72bce7c0ed45aef5394641a510e32bfbf337461e..ed8d2e5bf67c10c5d87914e50c4ff62916f335a5 100644
(file)
--- a/
perl/DXProt.pm
+++ b/
perl/DXProt.pm
@@
-527,11
+527,6
@@
sub normal
if ($pcno == 16) { # add a user
if ($pcno == 16) { # add a user
- if (eph_dup($line)) {
- dbg("PCPROT: dup PC16 detected") if isdbg('chanerr');
- return;
- }
-
# general checks
my $dxchan;
my $ncall = $field[1];
# general checks
my $dxchan;
my $ncall = $field[1];
@@
-589,6
+584,10
@@
sub normal
$user->put;
}
$user->put;
}
+ if (eph_dup($line)) {
+ dbg("PCPROT: dup PC16 detected") if isdbg('chanerr');
+ return;
+ }
# queue up any messages (look for privates only)
DXMsg::queue_msg(1) if $self->state eq 'normal';
# queue up any messages (look for privates only)
DXMsg::queue_msg(1) if $self->state eq 'normal';
@@
-601,10
+600,6
@@
sub normal
my $dxchan;
my $ncall = $field[2];
my $ucall = $field[1];
my $dxchan;
my $ncall = $field[2];
my $ucall = $field[1];
- if (eph_dup($line)) {
- dbg("PCPROT: dup PC17 detected") if isdbg('chanerr');
- return;
- }
eph_del_regex("^PC16.*$ncall.*$ucall");
eph_del_regex("^PC16.*$ncall.*$ucall");
@@
-627,6
+622,12
@@
sub normal
return unless $self->in_filter_route($parent);
my @rout = $parent->del_user($ucall);
return unless $self->in_filter_route($parent);
my @rout = $parent->del_user($ucall);
+
+ if (eph_dup($line)) {
+ dbg("PCPROT: dup PC17 detected") if isdbg('chanerr');
+ return;
+ }
+
$self->route_pc17($parent, @rout) if @rout;
return;
}
$self->route_pc17($parent, @rout) if @rout;
return;
}
@@
-647,11
+648,6
@@
sub normal
my $i;
my $newline = "PC19^";
my $i;
my $newline = "PC19^";
- if (eph_dup($line)) {
- dbg("PCPROT: dup PC19 detected") if isdbg('chanerr');
- return;
- }
-
# new routing list
my @rout;
my $parent = Route::Node::get($self->{call});
# new routing list
my @rout;
my $parent = Route::Node::get($self->{call});
@@
-669,7
+665,7
@@
sub normal
my $ver = $field[$i+3];
next unless defined $here && defined $conf && is_callsign($call);
my $ver = $field[$i+3];
next unless defined $here && defined $conf && is_callsign($call);
- eph_del_regex("^PC
21\^$call
");
+ eph_del_regex("^PC
(?:21\^$call|17\^[^\^]+\^$call)
");
# check for sane parameters
$ver = 5000 if $ver eq '0000';
# check for sane parameters
$ver = 5000 if $ver eq '0000';
@@
-728,6
+724,11
@@
sub normal
$user->put;
}
$user->put;
}
+ if (eph_dup($line)) {
+ dbg("PCPROT: dup PC19 detected") if isdbg('chanerr');
+ return;
+ }
+
$self->route_pc19(@rout) if @rout;
return;
}
$self->route_pc19(@rout) if @rout;
return;
}
@@
-740,14
+741,9
@@
sub normal
}
if ($pcno == 21) { # delete a cluster from the list
}
if ($pcno == 21) { # delete a cluster from the list
- if (eph_dup($line)) {
- dbg("PCPROT: dup PC21 detected") if isdbg('chanerr');
- return;
- }
-
my $call = uc $field[1];
my $call = uc $field[1];
- eph_del_regex("^PC1
9
.*$call");
+ eph_del_regex("^PC1
[79]
.*$call");
my @rout;
my $parent = Route::Node::get($self->{call});
my @rout;
my $parent = Route::Node::get($self->{call});
@@
-774,6
+770,12
@@
sub normal
dbg("PCPROT: I WILL _NOT_ be disconnected!") if isdbg('chanerr');
return;
}
dbg("PCPROT: I WILL _NOT_ be disconnected!") if isdbg('chanerr');
return;
}
+
+ if (eph_dup($line)) {
+ dbg("PCPROT: dup PC21 detected") if isdbg('chanerr');
+ return;
+ }
+
$self->route_pc21(@rout) if @rout;
return;
}
$self->route_pc21(@rout) if @rout;
return;
}
@@
-904,6
+906,7
@@
sub normal
if ($pcno == 39) { # incoming disconnect
if ($field[1] eq $self->{call}) {
$self->disconnect(1);
if ($pcno == 39) { # incoming disconnect
if ($field[1] eq $self->{call}) {
$self->disconnect(1);
+ eph_del_regex("^PC(?:1[679]|21).*$field[1]");
} else {
dbg("PCPROT: came in on wrong channel") if isdbg('chanerr');
}
} else {
dbg("PCPROT: came in on wrong channel") if isdbg('chanerr');
}
@@
-984,6
+987,7
@@
sub normal
my $to = $field[1];
my $from = $field[2];
my $flag = $field[3];
my $to = $field[1];
my $from = $field[2];
my $flag = $field[3];
+
# is it for us?
if ($to eq $main::mycall) {
# is it for us?
if ($to eq $main::mycall) {
@@
-1019,6
+1023,10
@@
sub normal
}
}
} else {
}
}
} else {
+ if (eph_dup($line)) {
+ dbg("PCPROT: dup PC51 detected") if isdbg('chanerr');
+ return;
+ }
# route down an appropriate thingy
$self->route($to, $line);
}
# route down an appropriate thingy
$self->route($to, $line);
}