- # is there one already connected to me - locally?
- my $user = DXUser->get($call);
- if ($sort ne 'O' && Msg->conns($call)) {
- my $mess = DXM::msg($lang, ($user && $user->is_node) ? 'concluster' : 'conother', $call, $main::mycall);
- already_conn($conn, $call, $mess);
- return;
- }
-
- # is there one already connected elsewhere in the cluster?
- if ($user) {
- if (($user->is_node || $call eq $myalias) && !DXCluster->get_exact($call)) {
- ;
- } else {
- if (my $ref = DXCluster->get_exact($call)) {
- my $mess = DXM::msg($lang, 'concluster', $call, $ref->mynode->call);
- already_conn($conn, $call, $mess);
- return;
- }
- }
- $user->{lang} = $main::lang if !$user->{lang}; # to autoupdate old systems
- } else {
- if (my $ref = DXCluster->get_exact($call)) {
- my $mess = DXM::msg($lang, 'concluster', $call, $ref->mynode->call);
- already_conn($conn, $call, $mess);
- return;
- }
- $user = DXUser->new($call);
- }
+ unless (is_callsign($call)) {
+ already_conn($conn, $call, DXM::msg($lang, "illcall", $call));
+ return;
+ }
+
+ # set up the basic channel info
+ # is there one already connected to me - locally?
+ my $user = DXUser->get($call);
+ my $dxchan = DXChannel->get($call);
+ if ($dxchan) {
+ my $mess = DXM::msg($lang, ($user && $user->is_node) ? 'concluster' : 'conother', $call, $main::mycall);
+ already_conn($conn, $call, $mess);
+ return;
+ }