fix UTF-8 in ClientAPI, RT#38254
authorIvan Kohler <ivan@freeside.biz>
Mon, 5 Oct 2015 21:42:57 +0000 (14:42 -0700)
committerIvan Kohler <ivan@freeside.biz>
Mon, 5 Oct 2015 21:42:57 +0000 (14:42 -0700)
FS/FS/ClientAPI_XMLRPC.pm

index 435ee98..dbcb565 100644 (file)
@@ -30,6 +30,7 @@ L<FS::SelfService::XMLRPC>, L<FS::SelfService>
 use strict;
 
 use vars qw($DEBUG $AUTOLOAD);
+use Encode;
 use FS::XMLRPC_Lite; #XMLRPC::Lite, for XMLRPC::Data
 use FS::ClientAPI;
 
@@ -67,12 +68,17 @@ sub AUTOLOAD {
 
     shift; #discard package name;
 
+
     #$call = "FS::SelfService::$call";
     #no strict 'refs';
     #&{$call}(@_);
     #FS::ClientAPI->dispatch($autoload->{$call}, @_);
 
-    my $return = FS::ClientAPI->dispatch($autoload->{$call}, { @_ } );
+    my %hash = @_;
+    #XXX doesn't handle multi-level data structs
+    $hash{$_} = decode(utf8=>$hash{$_}) foreach keys %hash;
+
+    my $return = FS::ClientAPI->dispatch($autoload->{$call}, \%hash );
 
     if ( exists($typefix{$call}) ) {
       my $typefix = $typefix{$call};
@@ -85,7 +91,7 @@ sub AUTOLOAD {
 
     $return;
 
-  }else{
+  } else {
     die "No such procedure: $call";
   }
 }