X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FQXProt.pm;h=10ad4aa47498bee27e518f7e669875220dcfdcba;hb=f84b465bd691c4a5c7d94e903ec7de0f84a03fbc;hp=b9cf952cb497a553d4fed6aa0069f09d7d20e2f5;hpb=1256794cae0d863c829011df3f87dc1fb70f977d;p=spider.git diff --git a/perl/QXProt.pm b/perl/QXProt.pm index b9cf952c..10ad4aa4 100644 --- a/perl/QXProt.pm +++ b/perl/QXProt.pm @@ -149,12 +149,21 @@ sub frame return "$line^$cs"; } +sub send_frame +{ + my $self = shift; + my $origin = shift; + for (@_) { + $self->send(frame('X', undef, $origin == $main::me || $origin->is_user ? '' : $origin->call, $_)); + } +} + sub handleI { my $self = shift; my @f = split /\^/, $_[3]; - if ($self->passphrase && $f[7] && $f[8]) { + if ($self->user->passphrase && $f[7] && $f[8]) { my $inv = Verify->new($f[7]); unless ($inv->verify($f[8], $main::me->user->passphrase, $main::mycall, $self->call)) { $self->sendnow('D','Sorry...'); @@ -208,39 +217,17 @@ sub genP } -sub gen2 +sub handleX { my $self = shift; - - my $node = shift; - my $sort = shift; - my @out; - my $dxchan; - - while (@_) { - my $str = ''; - for (; @_ && length $str <= 230;) { - my $ref = shift; - my $call = $ref->call; - my $flag = 0; - - $flag += 1 if $ref->here; - $flag += 2 if $ref->conf; - if ($ref->is_node) { - my $ping = int($ref->pingave * 10); - $str .= "^N$flag$call,$ping"; - my $v = $ref->build || $ref->version; - $str .= ",$v" if defined $v; - } else { - $str .= "^U$flag$call"; - } - } - push @out, $str if $str; + my ($tonode, $fromnode, $msgid, $line) = @_[0..3]; + my ($origin, $l) = split /\^/, $line, 2; + + my ($pcno) = $l =~ /^PC(\d\d)/; + if ($pcno) { + DXProt::normal($self, $l); } - my $n = @out; - my $h = get_hops(90); - @out = map { sprintf "PC90^%s^%X^%s%d%s^%s^", $node->call, $main::systime, $sort, --$n, $_, $h } @out; - return @out; } + 1;