Closed Bug 600810 Opened 12 years ago Closed 11 years ago
XML-RPC fails with SOAP::Lite 0
.711 and 0 .712
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:2.0b5) Gecko/20100907 Iceweasel/4.0b5 Build Identifier: * This is Bugzilla 3.6.2 on perl 5.8.8 * Running on Linux 2.6.9-42.0.2.ELsmp #1 SMP Wed Aug 23 00:17:26 CDT 2006 After bugzilla upgrade we have issues with bugzilla RPC remote method calls. We use it in GRUCHA tool, but it also doesn't work with contrib/bz_webservice_demo.pl Reproducible: Always Steps to Reproduce: 1. run ./bz_webservice_demo.pl Actual Results: neutrinus@marvin:~/tmp/bugzilla-3.6.2/contrib$ ./bz_webservice_demo.pl --uri http://10.10.10.110/xmlrpc.cgi Client Application failed during request deserialization: no element found at line 1, column 0, byte -1 at /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/XML/Parser.pm line 187 in SOAP call near ./bz_webservice_demo.pl line 189. neutrinus@marvin:~/tmp/bugzilla-3.6.2/contrib$ ./bz_webservice_demo.pl --uri http://10.10.10.129/xmlrpc.cgi Connecting to a Bugzilla of version 3.2.5. Bugzilla's timezone is +0200. neutrinus@marvin:~/tmp/bugzilla-3.6.2/contrib$ (10.10.10.129 its old bugzilla instance v3.2.5; 10.10.10.110 is new,upgraded instance v3.6.2) ./checksetup.pl --check-modules * This is Bugzilla 3.6.2 on perl 5.8.8 * Running on Linux 2.6.9-42.0.2.ELsmp #1 SMP Wed Aug 23 00:17:26 CDT 2006 Checking perl modules... Checking for CGI.pm (v3.21) ok: found v3.49 Checking for Digest-SHA (any) ok: found v5.48 Checking for TimeDate (v2.21) ok: found v2.22 Checking for DateTime (v0.28) ok: found v0.61 Checking for DateTime-TimeZone (v0.71) ok: found v1.21 Checking for DBI (v1.41) ok: found v1.604 Checking for Template-Toolkit (v2.22) ok: found v2.22 Checking for Email-Send (v2.00) ok: found v2.192 Checking for Email-MIME (v1.861) ok: found v1.861 Checking for Email-MIME-Encodings (v1.313) ok: found v1.313 Checking for Email-MIME-Modifier (v1.442) ok: found v1.442 Checking for URI (any) ok: found v1.30 Checking available perl DBD modules... Checking for DBD-Pg (v1.45) not found Checking for DBD-mysql (v4.00) ok: found v4.010 Checking for DBD-Oracle (v1.19) not found The following Perl modules are optional: Checking for GD (v1.20) ok: found v2.44 Checking for Chart (v2.1) ok: found v2.4.1 Checking for Template-GD (any) ok: found v1.56 Checking for GDTextUtil (any) ok: found v0.86 Checking for GDGraph (any) ok: found v1.44 Checking for XML-Twig (any) ok: found v3.13 Checking for MIME-tools (v5.406) ok: found v5.428 Checking for libwww-perl (any) ok: found v5.810 Checking for PatchReader (v0.9.4) ok: found v0.9.5 Checking for perl-ldap (any) ok: found v0.36 Checking for Authen-SASL (any) ok: found v2.15 Checking for RadiusPerl (any) ok: found v0.17 Checking for SOAP-Lite (v0.710.06) ok: found v0.712 Checking for JSON-RPC (any) ok: found v0.96 Checking for Test-Taint (any) ok: found v1.04 Checking for HTML-Parser (v3.40) ok: found v3.56 Checking for HTML-Scrubber (any) ok: found v0.08 Checking for Email-MIME-Attachment-Stripper (any) ok: found v1.314 Checking for Email-Reply (any) ok: found v1.202 Checking for TheSchwartz (any) ok: found v1.10 Checking for Daemon-Generic (any) ok: found v0.71 Checking for mod_perl (v1.999022) ok: found v2.000004 data stream sniffed using wireshark: POST /xmlrpc.cgi HTTP/1.1 TE: deflate,gzip;q=0.3 Connection: TE, close Accept: text/xml Accept: multipart/* Accept: application/soap Host: bugzilla.axit.pl User-Agent: SOAP::Lite/Perl/0.712 Content-Length: 114 Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>Bugzilla.version</methodName><params /></methodCall>HTTP/1.1 200 OK Date: Thu, 30 Sep 2010 08:51:24 GMT Server: Apache/2.0.52 (CentOS) SOAPServer: SOAP::Lite/Perl/0.712 Content-Length: 449 Vary: Accept-Encoding,User-Agent Connection: close Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?><methodResponse><fault><value><struct><member><name>faultString</name><value><string>Application failed during request deserialization: no element found at line 1, column 0, byte -1 at /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/XML/Parser.pm line 187 </string></value></member><member><name>faultCode</name><value><string>Client</string></value></member></struct></value></fault></methodResponse> there are no errors in apache error.log
I'm pretty sure this is a bug in SOAP::Lite?
(In reply to comment #1) > I'm pretty sure this is a bug in SOAP::Lite? do you mean: https://rt.cpan.org/Public/Bug/Display.html?id=45611 ?
or better: https://rt.cpan.org/Public/Bug/Display.html?id=58538 ?
can somebody confirm which bug in SOAP::Lite is responsible for this issue? Its quite important for us to solve this..
I can see this happening on our Bugzilla Tinderbox server. Downgrading back to SOAP::Lite 0.711 seems to have fixed the problem for mod_cgi. But for mod_perl I had to also change Bugzilla::WebService::Server::XMLRPC to subclass XMLRPC::Transport::HTTP::Apache (mod_perl specific) instead of the ::CGI that's only usable for mod_cgi.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: [XMLRPC] Soap error after upgrade 3.2.5 -> 3.6.2 → XML-RPC fails with SOAP::Lite 0.711 and 0.712
We should do something about this one way or another. Originally the solution was going to be RPC::Any, but I suppose that's not making 4.2.
Flags: blocking4.2? → blocking4.2+
Is there any progress on this issue ? I have a similar problem reported as: " Application failed during request deserialization: no element found at line 1, column 0, byte -1 at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/XML/Parser.pm line 153 " when a Java client attempts to login trough 'xmlrpc.cgi'. It happened with bugzilla 3.6.4 and now with 4.0.1. I've already tried downgrading SOAP::Lite to 0.711 and 0.710. Are there any other workarounds I might try - the issue is a show stopper for the rest of my app delelopment. thanks Clahrc.
When you downgrade you must make sure there isn't a later version in Bugzilla's lib/ directory. Also, if you are running under mod_perl, you must restart your web server.
No there wasn't any later versions in the bugzilla lib and yes I was restarting the web server. I was capturing the HTTP traffic between the client and the server and I could see the SOAP::Lite version number in the HTTP headers - it changed every time I downgraded. However, your comment made me look into the various perl mods I have on the machine. I noticed that while the SOAP::Lite module used changed, the error was always coming from the same place: " . . .at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/XML/Parser.pm line 153 " The Bugzilla 'checksetup.pl' output didn't mention XML::Parser module. So the one that ended up being used was an old installation, ver. 2.23, I had on the machine. Upgrading XML::Parser to 2.41 (after upgrading the expat and expat-devel RPMs) seems to have fixed the problem as I now can run the app with SOAP::Lite 0.712. Thanks again.
Here's the patch to use correct base class from XMLRPC when running under mod_perl. This seems to fix the problem and still work under mod_cgi.
Attachment #543783 - Flags: review?(mkanat)
Comment on attachment 543783 [details] [diff] [review] Use different XMLRPC base class in mod_perl vs. mod_cgi, V1 Looks good and fixes the problem! :-)
Attachment #543783 - Flags: review?(mkanat) → review+
Committing to: bzr+ssh://email@example.com/bugzilla/trunk/ modified Bugzilla/WebService/Server/XMLRPC.pm Committed revision 7862. Committing to: bzr+ssh://firstname.lastname@example.org/bugzilla/4.0/ modified Bugzilla/WebService/Server/XMLRPC.pm Committed revision 7618.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.