rpc-xml icon indicating copy to clipboard operation
rpc-xml copied to clipboard

Decompression not working with callback in request

Open fra-iesus opened this issue 6 years ago • 1 comments

#!/usr/bin/env perl
use 5.014;
use RPC::XML;
use RPC::XML::Client;

my $url = 'https://wordpress.com/xmlrpc.php';
my $client = RPC::XML::Client->new($url);
$client->request->accept_decodable;
print '"Accept-Encoding" set to ' . $client->request->header('Accept-Encoding') . "\n";
my $request = RPC::XML::request->new('wp.getPostTypes');
my $response = $client->send_request($request);
print "$response\n";

"Accept-Encoding" set to gzip, x-gzip, deflate, x-bzip2

not well-formed (invalid token) at line 1, column 0, byte 0: ?PMk1??+???ق??x ^ ? at /usr/share/perl5/RPC/XML/Client.pm line 402.

Everything works correctly in case request is fired w/o callback and response data are processed afterwards.

fra-iesus avatar Aug 15 '18 15:08 fra-iesus

There are 2 issues with that:

  1. compression is not detected, so $data_in doesn't go to inflate(), but directly to parse_more()
  2. in case detection of compression is changed from $resp->content_encoding to $resp->{_headers}->{content-encoding} (I know - internal variable, I don't mind it for test), result of inflate() is empty string

fra-iesus avatar Aug 15 '18 15:08 fra-iesus