wwv & wcy progress, random lockouts
authorDirk Koopman <djk@tobit.co.uk>
Sat, 9 May 2020 21:23:45 +0000 (22:23 +0100)
committerDirk Koopman <djk@tobit.co.uk>
Sat, 9 May 2020 21:23:45 +0000 (22:23 +0100)
Improve the look of WWV and WCY progress messages.
Stop the random lockouts of connected nodes with ephemeral user
records.

Changes
perl/DXMsg.pm
perl/DXProtHandle.pm
perl/Messages

diff --git a/Changes b/Changes
index b3e8d4fdb2cd4bdf2796aa4caa54e14c95001e40..e88b9091419825fcea0086e8f9c7c03aeabfd8b2 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,6 +2,8 @@
 1. Show the route by which this PCxx came in progress debugging reports. In
    some other words: the spot/wwv/wcy/ann message arrived first from this 
    connection. 
+2. Improve progress WWV & WCY messages.
+3. Stop random node isolations (at least in one place)
 08May20=======================================================================
 1. Tidy up routing table
 2. Add new argument to show/version (ALL or list of regexes) that allow you
index e6662b59472fce0d46e8496235f3c52f271133e4..38d89bbc7d4b772c5c985ac3f9b73b4a72cf5a3f 100644 (file)
@@ -786,6 +786,8 @@ sub queue_msg
                                if ($dxchan) {
                                        if ($dxchan->is_node) {
                                                next if $clref->call eq $main::mycall;  # i.e. it lives here
+                                               next if $dxchan->is_arcluster;                  # don't even go there, idiot people send the header in the wrong order and won't/can't fix it
+                                               next if $dxchan->isolate;                               # there is no mechanism for sending messages to isolated nodes. 
                                                $ref->start_msg($dxchan) if !get_busy($dxchan->call)  && $dxchan->state eq 'normal';
                                        }
                                } else {
@@ -804,8 +806,10 @@ sub queue_msg
                                next unless $call;
                                next if $call eq $main::mycall;
                                next if ref $ref->{gotit} && grep $_ eq $call, @{$ref->{gotit}};
-                               next unless $ref->forward_it($call);           # check the forwarding file
-                               next if $ref->{tonode};           # ignore it if it already being processed
+                               next unless $ref->forward_it($call);    # check the forwarding file
+                               next if $ref->{tonode};                 # ignore it if it already being processed
+                               next if $dxchan->is_arcluster;                  # don't even go there, idiot people send the header in the wrong order and won't/can't fix it
+                               next if $dxchan->isolate;                               # there is no mechanism for sending messages to isolated nodes. 
                                
                                # if we are here we have a node that doesn't have this message
                                if (!get_busy($call)  && $dxchan->state eq 'normal') {
index e268d0f9970b595d1a35df0da70c92ca335f826c..57a83cc508c760f666ca553344276e3e2c542f5a 100644 (file)
@@ -663,13 +663,15 @@ sub check_add_node
 
        # add this station to the user database, if required (don't remove SSID from nodes)
        my $user = DXUser::get_current($call);
-       if (!$user) {
+       unless ($user) {
                $user = DXUser->new($call);
                $user->priv(1);         # I have relented and defaulted nodes
                $user->lockout(1);
                $user->homenode($call);
                $user->node($call);
                $user->sort('A');
+               $user->lastin($main::systime); # this make it last longer than just this invocation
+               $user->put;                             # just to make sure it gets written away!!!
        }
        return $user;
 }
@@ -973,7 +975,7 @@ sub handle_23
 
        # note this only takes the first one it gets
        Geomag::update($d, $pc->[2], $sfi, $k, $i, @$pc[6..8], $r);
-       dbg("WWV: $d $pc->[2], sfi:$sfi k:$k info:$i $pc->[6] $pc->[7] $pc->[8] $r route: $origin") if isdbg('progress');
+       dbg("WWV: <$pc->[2]>, sfi=$sfi k=$k info=$i '$pc->[6]' $pc->[7]\@$pc->[8] $r route: $origin") if isdbg('progress');
 
        if (defined &Local::wwv) {
                my $rep;
@@ -1377,7 +1379,7 @@ sub handle_73
        }
 
        my $wcy = WCY::update($d, @$pc[2..12]);
-       dbg("WCY: " . join(', ', @$pc[2..12]) . " route: $origin") if isdbg('progress');
+       dbg("WCY: <$pc->[2]> K=$pc->[5] expK=$pc->[6] A=$pc->[4] R=$pc->[7] SFI=$pc->[3] SA=$pc->[8] GMF=$pc->[9] Au=$pc->[10] $pc->[11]\@$pc->[12] route: $origin") if isdbg('progress');
 
        if (defined &Local::wcy) {
                my $rep;
index 2b271b0c65887d60e1ce2a6538e95190c2d87bcc..d1e731afe2188742d073f44ca75d4df27d94a889 100644 (file)
@@ -353,7 +353,7 @@ package DXM;
                                wpc9xu => 'PC9X for $_[0] disabled',
                                wwv1 => '$_[0] is missing or out of range',
                                wwv2 => 'Duplicate WWV',
-                               wwv3 => 'Date        Hour   SFI   A   K Forecast                               Logger',
+                               wwv3 => 'Date        Hour   SFI   A   K Forecast                              Logger',
                                wwvs => 'WWV enabled for $_[0]',
                                wwvu => 'WWV disabled $_[0]',
                                wxs => 'WX enabled for $_[0]',