projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** empty log message ***
[spider.git]
/
perl
/
DXProt.pm
diff --git
a/perl/DXProt.pm
b/perl/DXProt.pm
index 78e0e0d1262a984052057cd3f872bf546b358394..7d429b1b7c3aa74375294b23169721742863f2c6 100644
(file)
--- a/
perl/DXProt.pm
+++ b/
perl/DXProt.pm
@@
-149,7
+149,13
@@
sub normal
my ($pcno) = $field[0] =~ /^PC(\d\d)/; # just get the number
return unless $pcno;
return if $pcno < 10 || $pcno > 51;
my ($pcno) = $field[0] =~ /^PC(\d\d)/; # just get the number
return unless $pcno;
return if $pcno < 10 || $pcno > 51;
-
+
+ # dump bad protocol messages unless it is a PC29
+ if ($line =~ /\%[0-9A-F][0-9A-F]/o && $pcno != 29) {
+ dbg('chan', "CORRUPT protocol message - dumped");
+ return;
+ }
+
# local processing 1
my $pcr;
eval {
# local processing 1
my $pcr;
eval {
@@
-421,7
+427,7
@@
sub normal
# unbusy and stop and outgoing mail (ie if somehow we receive another PC19 without a disconnect)
my $mref = DXMsg::get_busy($call);
# unbusy and stop and outgoing mail (ie if somehow we receive another PC19 without a disconnect)
my $mref = DXMsg::get_busy($call);
- $mref->stop_msg($
self
) if $mref;
+ $mref->stop_msg($
call
) if $mref;
# add this station to the user database, if required (don't remove SSID from nodes)
my $user = DXUser->get_current($call);
# add this station to the user database, if required (don't remove SSID from nodes)
my $user = DXUser->get_current($call);
@@
-437,8
+443,6
@@
sub normal
$user->put;
}
$user->put;
}
- # queue up any messages
- DXMsg::queue_msg(0) if $self->state eq 'normal';
return if $newline eq "PC19^";
# add hop count
return if $newline eq "PC19^";
# add hop count
@@
-451,10
+455,6
@@
sub normal
$self->send_local_config();
$self->send(pc22());
$self->state('normal');
$self->send_local_config();
$self->send(pc22());
$self->state('normal');
-
- # queue mail
- DXMsg::queue_msg(0);
-
return;
}
return;
}
@@
-483,12
+483,9
@@
sub normal
if ($pcno == 22) {
$self->state('normal');
if ($pcno == 22) {
$self->state('normal');
-
- # queue mail
- DXMsg::queue_msg(0);
return;
}
return;
}
-
+
if ($pcno == 23 || $pcno == 27) { # WWV info
# route 'foreign' pc27s
if ($pcno == 23 || $pcno == 27) { # WWV info
# route 'foreign' pc27s
@@
-772,7
+769,7
@@
sub finish
# unbusy and stop and outgoing mail
my $mref = DXMsg::get_busy($call);
# unbusy and stop and outgoing mail
my $mref = DXMsg::get_busy($call);
- $mref->stop_msg($
self
) if $mref;
+ $mref->stop_msg($
call
) if $mref;
# broadcast to all other nodes that all the nodes connected to via me are gone
my @gonenodes = map { $_->dxchan == $self ? $_ : () } DXNode::get_all();
# broadcast to all other nodes that all the nodes connected to via me are gone
my @gonenodes = map { $_->dxchan == $self ? $_ : () } DXNode::get_all();