-my $dxchan = DXCommandmode->get($to); # is it for us?
-if ($dxchan && $dxchan->is_user) {
- $dxchan->send("$to de $from $line");
+$to = uc $to if $to;
+$via = uc $via if $via;
+my $call = $via ? $via : $to;
+my $clref = Route::get($call); # try an exact call
+my $dxchan = $clref->dxchan if $clref;
+return (1, $self->msg('e7', $call)) unless $dxchan;
+
+# if there is a line send it, otherwise add this call to the talk list
+# and set talk mode for command mode
+if ($line) {
+ my @bad;
+ if (@bad = BadWords::check($line)) {
+ $self->badcount(($self->badcount||0) + @bad);
+ return (1, $self->msg('e17', @bad));
+ }
+ $dxchan->talk($self->call, $to, $via, $line) if $dxchan;