Add a ring buffer to debugging + other things
[spider.git] / perl / cluster.pl
index 4205241aa591538a97e0e62442f0e7867c6e6ee1..1e8200d2e0d03949a4d46dd1b209ab5d9c54e0a9 100755 (executable)
@@ -91,6 +91,7 @@ use strict;
 
 use Mojo::IOLoop;
 
+use DXDebug;
 use Msg;
 use IntMsg;
 use Internet;
@@ -98,7 +99,6 @@ use Listeners;
 use ExtMsg;
 use AGWConnect;
 use AGWMsg;
-use DXDebug;
 use DXLog;
 use DXLogPrint;
 use DXUtil;
@@ -210,17 +210,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 +239,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 +272,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 +290,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 +303,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);
 }