add info to Changes and UPGRADE.mojo
[spider.git] / perl / cluster.pl
index 4205241aa591538a97e0e62442f0e7867c6e6ee1..78f2f594b02706bcf7e44b1ffeaa4fbb9ad0c672 100755 (executable)
@@ -89,6 +89,10 @@ use SysVar;
 
 use strict;
 
+# order here is important - DXDebug snarfs Carp et al so that Mojo errors go into the debug log
+use DXDebug;
+
+use Mojolicious 7.26;
 use Mojo::IOLoop;
 
 use Msg;
@@ -98,7 +102,6 @@ use Listeners;
 use ExtMsg;
 use AGWConnect;
 use AGWMsg;
-use DXDebug;
 use DXLog;
 use DXLogPrint;
 use DXUtil;
@@ -144,6 +147,8 @@ use DXSql;
 use IsoTime;
 use BPQMsg;
 
+
+
 use Data::Dumper;
 use IO::File;
 use Fcntl ':flock';
@@ -210,17 +215,15 @@ sub new_channel
                        $user->wantbeep(0);
                        $user->name('web');
                        $user->qth('on the web');
-                       $user->homenode($main::call);
+                       $user->homenode($main::mycall);
                        $user->lat($main::mylatitude);
                        $user->long($main::mylongitude);
                        $user->qra($main::mylocator);
-                       $user->put;
                }
+               $conn->conns($call);
                $dxchan = Web->new($call, $conn, $user);
-               $dxchan->sort('W');
                $dxchan->enhanced(1);
                $dxchan->ve7cc(1);
-               $conn->conns($call);
                $msg =~ s/^A#WEB|/A$call|/;
                $conn->send_now("C$call");
        } else {
@@ -241,7 +244,7 @@ sub new_channel
                                return;
                        }
                        if ($bumpexisting) {
-                               my $ip = $conn->peerhost || 'unknown';
+                               my $ip = $dxchan->hostname;
                                $dxchan->send_now('D', DXM::msg($lang, 'conbump', $call, $ip));
                                LogDbg('DXCommand', "$call bumped off by $ip, disconnected");
                                $dxchan->disconnect;
@@ -274,7 +277,7 @@ sub new_channel
                my $lock = $user->lockout if $user;
                if ($baseuser && $baseuser->lockout || $lock) {
                        if (!$user || !defined $lock || $lock) {
-                               my $host = $conn->peerhost || "unknown";
+                               my $host = $conn->peerhost;
                                LogDbg('DXCommand', "$call on $host is locked out, disconnected");
                                $conn->disconnect;
                                return;
@@ -292,8 +295,6 @@ sub new_channel
                        $dxchan = DXProt->new($call, $conn, $user);
                } elsif ($user->is_user) {
                        $dxchan = DXCommandmode->new($call, $conn, $user);
-                       #       } elsif ($user->is_bbs) {                                  # there is no support so
-                       #               $dxchan = BBS->new($call, $conn, $user);               # don't allow it!!!
                } else {
                        die "Invalid sort of user on $call = $sort";
                }
@@ -307,6 +308,10 @@ sub new_channel
        $conn->set_error(sub {my $err = shift; LogDbg('DXCommand', "Comms error '$err' received for call $dxchan->{call}"); $dxchan->disconnect(1);});
        $conn->set_on_eof(sub {$dxchan->disconnect});
        $conn->set_rproc(sub {my ($conn,$msg) = @_; $dxchan->rec($msg);});
+       if ($sort eq 'W') {
+               $dxchan->enhanced(1);
+               $dxchan->sort('W');
+       }
        $dxchan->rec($msg);
 }
 
@@ -632,6 +637,8 @@ our $io_disconnected;
 sub idle_loop
 {
        BPQMsg::process();
+#      DXCommandmode::process(); # process ongoing command mode stuff
+#      DXProt::process();              # process ongoing ak1a pcxx stuff
 
        if (defined &Local::process) {
                eval {
@@ -676,10 +683,10 @@ sub per_sec
                $systime_daystart = $days * 86400;
        }
        IsoTime::update($systime);
-       DXCron::process();      # do cron jobs
        DXCommandmode::process(); # process ongoing command mode stuff
-       DXXml::process();
        DXProt::process();              # process ongoing ak1a pcxx stuff
+       DXCron::process();      # do cron jobs
+       DXXml::process();
        DXConnect::process();
        DXMsg::process();
        DXDb::process();
@@ -687,7 +694,6 @@ sub per_sec
        DXDupe::process();
        DXCron::process();                      # do cron jobs
        IsoTime::update($systime);
-       DXProt::process();                      # process ongoing ak1a pcxx stuff
        DXConnect::process();
        DXUser::process();
        AGWMsg::process();