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;
sub init
{
- my $user = DXUser->get($main::mycall);
- $DXProt::myprot_version += $main::version*100;
- $main::me = DXProt->new($main::mycall, 0, $user);
- $main::me->{here} = 1;
- $main::me->{state} = "indifferent";
do "$main::data/hop_table.pl" if -e "$main::data/hop_table.pl";
confess $@ if $@;
- $main::me->{sort} = 'S'; # S for spider
- $main::me->{priv} = 9;
- $main::me->{metric} = 0;
- $main::me->{pingave} = 0;
- $main::me->{version} = $main::version;
- $main::me->{build} = $main::build;
-
-# $Route::Node::me->adddxchan($main::me);
}
#
# send initialisation string
unless ($self->{outbound}) {
- $self->send(pc18());
+ $self->sendinit;
}
$self->state('init');
$script->run($self) if $script;
}
+#
+# send outgoing 'challenge'
+#
+
+sub sendinit
+{
+ my $self = shift;
+ $self->send(pc18());
+}
+
#
# This is the normal pcxx despatcher
#
return;
}
if ($pcno == 90) { # new style PC16,17,19,21
- my $node = $field[1];
-
- # mark this node as wanting PC90s
- my $parent = Route::Node::get($node);
- if ($parent) {
- my $t = hex $field[2];
- my $last = $parent->lastpc90 || 0;
- if ($last < $t) {
- $parent->pc90(1);
- $parent->lastpc90($t);
- my ($updsort, $n) = unpack "AA*", $field[3];
- for (my $i = 4; $i < $#field; $i++) {
- my ($sort, $flag, $node, $ping) = $field[$i] =~ m{(\w)(\d)([-\w+])(,\d+)?};
- $ping /= 10 if (defined $ping);
- }
- }
- }
-
return;
}
}
next if $dxchan == $main::me;
# send the pc50 or PC90
- if ($pc50s && $dxchan->user->wantpc90) {
- $dxchan->send_route(\&pc90, 1, $main::me, 'T', @dxchan);
- } else {
- $dxchan->send($pc50s) if $pc50s;
- }
+ $dxchan->send($pc50s) if $pc50s;
# send a ping out on this channel
if ($dxchan->{pingint} && $t >= $dxchan->{pingint} + $dxchan->{lastping}) {
dbg("sent a null value") if isdbg('chanerr');
}
}
- $self->send_route(\&pc90, 1, $main::me, 'T', DXChannel::get_all()) if $self->user->wantpc90;
}
#
foreach $dxchan (@dxchan) {
next if $dxchan == $self;
next if $dxchan == $main::me;
+ next if $dxchan->user->wantnp;
+
$dxchan->send_route($generate, @_);
}
}