issue K records and start to use them
[spider.git] / perl / DXProtout.pm
index 135ce61aa1072c6a7684a78adc0ffebaffd5200d..75903f02912e25b2d0c29b808635a8779f799415 100644 (file)
@@ -6,7 +6,7 @@
 #
 # Copyright (c) 1998 Dirk Koopman G1TLH
 #
-# $Id$
+#
 #
 
 package DXProt;
@@ -19,7 +19,7 @@ use DXDebug;
 
 use strict;
 
-use vars qw($sentencelth);
+use vars qw($sentencelth $pc19_version);
 
 $sentencelth = 180;
 
@@ -117,8 +117,7 @@ sub pc17
 # Request init string
 sub pc18
 {
-       my $flags = " pc9x";
-       $flags .= " xml" if DXXml::available();
+       my $flags = shift;
        return "PC18^DXSpider Version: $main::version Build: $main::subversion.$main::build$flags^$DXProt::myprot_version^";
 }
 
@@ -138,6 +137,8 @@ sub pc19
                my $here = $ref->here;
                my $conf = $ref->conf;
                my $version = $ref->version;
+               $version = $pc19_version unless $version =~ /^\d\d\d\d$/;
+
                my $str = "^$here^$call^$conf^$version";
                if (length($s) + length($str) > $sentencelth) {
                        push @out, "PC19" . $s . sprintf "^%s^", get_hops(19);
@@ -379,6 +380,7 @@ sub _gen_pc92
        my $s = "PC92^$main::mycall^" . gen_pc9x_t() . "^$sort";
        for (@_) {
                $s .= "^" . _encode_pc92_call($_, $ext);
+               $ext = 0;                               # only the first slot has an ext.
        }
        return $s . '^H99^';
 }
@@ -414,6 +416,17 @@ sub pc92c
        return _gen_pc92('C', 1, @_);
 }
 
+# send a keep alive
+sub pc92k
+{
+       my $nref = shift;
+       my $s = "PC92^$main::mycall^" . gen_pc9x_t() . "^K";
+       $s .= "^" . _encode_pc92_call($nref, 1);
+       $s .= "^" . scalar $nref->nodes;
+       $s .= "^" . scalar $nref->users;
+       return $s . '^H99^';
+}
+
 # send a 'find' message
 sub pc92f
 {