From e20501f53ac42e8610371377d022164ae233356a Mon Sep 17 00:00:00 2001 From: djk Date: Fri, 16 Jul 1999 09:20:28 +0000 Subject: [PATCH] attempt to avoid %FA characters in incoming data --- Changes | 3 +++ perl/cluster.pl | 15 ++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Changes b/Changes index ed3f545e..ef4bd3d0 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,6 @@ +16Jul99======================================================================= +1. drop frames with 'illegal' characters in them (but pass frames with +embedded %XX characters). 15Jul99======================================================================= 1. Changed grepdbg to accept a regexp. More useful (to me anyway). 2. Altered init command so that it doesn't send PC21s down the initted diff --git a/perl/cluster.pl b/perl/cluster.pl index fdfff04f..9c002766 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -233,13 +233,15 @@ sub process_inqueue my $data = $self->{data}; my $dxchan = $self->{dxchan}; my ($sort, $call, $line) = $data =~ /^(\w)([A-Z0-9\-]+)\|(.*)$/; - + my $error; + # the above regexp must work return unless ($sort && $call && $line); # translate any crappy characters into hex characters if ($line =~ /[\x00-\x06\x08\x0a-\x1f\x7f-\xff]/o) { $line =~ s/([\x00-\x1f\x7f-\xff])/uc sprintf("%%%02x",ord($1))/eg; + ++$error; # dbg('chan', "<- $sort $call **CRAP**: $line"); # return; } @@ -253,10 +255,13 @@ sub process_inqueue $dxchan->start($line, $sort); } elsif ($sort eq 'I') { die "\$user not defined for $call" if !defined $user; - - # normal input - $dxchan->normal($line); - + + if ($error) { + dbg(chan, "DROPPED with $error duff characters"); + } else { + # normal input + $dxchan->normal($line); + } disconnect($dxchan) if ($dxchan->{state} eq 'bye'); } elsif ($sort eq 'Z') { disconnect($dxchan); -- 2.34.1