fiddle with 8 bit characters, start to check everything more rigourously
[spider.git] / perl / Msg.pm
index b626e27c67958eb9822f12491298d349094c31c4..0af6791156f92b8c8e9698707fca33202ff3ae18 100644 (file)
 
 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,7 @@ 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;
                &{$conn->{rcvd_notification_proc}}($conn, $msg, $!);
                $! = 0;
        }