X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FMsg.pm;h=a8db113761392d3ffbcf2dfa740288f9a4f97c98;hb=1f1ba20386876b3d2a74e5e4d77bf7119a04610b;hp=b626e27c67958eb9822f12491298d349094c31c4;hpb=f4bc6091a243be2891148902d41e921e171e1a44;p=spider.git diff --git a/perl/Msg.pm b/perl/Msg.pm index b626e27c..a8db1137 100644 --- a/perl/Msg.pm +++ b/perl/Msg.pm @@ -10,15 +10,12 @@ package Msg; -require Exporter; -@ISA = qw(Exporter); - use strict; use IO::Select; use IO::Socket; -use Carp; +#use DXDebug; -use vars qw (%rd_callbacks %wt_callbacks $rd_handles $wt_handles); +use vars qw(%rd_callbacks %wt_callbacks $rd_handles $wt_handles); %rd_callbacks = (); %wt_callbacks = (); @@ -89,7 +86,7 @@ sub _enqueue { my ($conn, $msg) = @_; # prepend length (encoded as network long) my $len = length($msg); - $msg =~ s/(\x00-\x2f\x7e-\xff%])/sprintf("%%%02X", ord($1))/eg; + $msg =~ s/([\%\x00-\x1f\x7f-\xff])/sprintf("%%%02X", ord($1))/eg; push (@{$conn->{queue}}, $msg . "\n"); } @@ -240,7 +237,8 @@ FINISH: while (@lines){ $msg = shift @lines; - $msg =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; + $msg =~ s/\%([2-9A-F][0-9A-F])/chr(hex($1))/eg; + $msg =~ s/[\x00-\x08\x0a-\x1f\x9b\x8e]/./g; # immutable CSI sequence + control characters &{$conn->{rcvd_notification_proc}}($conn, $msg, $!); $! = 0; }