X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXChannel.pm;h=2758e64dd3a1f8c54fd65998fbee065ee2f6a51a;hb=080a66c38925314321249190eb5a4dc572636d4b;hp=93d07c1d3a69561ed50e84a40d2f2824a6118645;hpb=9995de8c1bfcb9ed980ab0ef12e4d66564c04105;p=spider.git diff --git a/perl/DXChannel.pm b/perl/DXChannel.pm index 93d07c1d..2758e64d 100644 --- a/perl/DXChannel.pm +++ b/perl/DXChannel.pm @@ -376,10 +376,8 @@ sub disconnect my $user = $self->{user}; my $conn = $self->{conn}; my $call = $self->{call}; - my $nopc39 = shift || 0; - $self->finish($nopc39); - $conn->send_now("Z$call|bye") if $conn; # this will cause 'client' to disconnect + $self->finish($conn); $user->close() if defined $user; $conn->disconnect() if $conn; $self->del(); @@ -438,6 +436,26 @@ sub field_prompt return $valid{$ele}; } +# take a standard input message and decode it into its standard parts +sub decode_input +{ + my $dxchan = shift; + my $data = shift; + my ($sort, $call, $line) = $data =~ /^([A-Z])([A-Z0-9\-]{3,9})\|(.*)$/; + + my $chcall = (ref $dxchan) ? $dxchan->call : "UN.KNOWN"; + + # the above regexp must work + if (!defined $sort || !defined $call || !defined $line || + (ref $dxchan && $call ne $chcall)) { + $data =~ s/([\x00-\x1f\x7f-\xff])/uc sprintf("%%%02x",ord($1))/eg; + dbg('chan', "DUFF Line from $chcall: $data"); + return (); + } + + return ($sort, $call, $line); +} + no strict; sub AUTOLOAD {