Description of problem: Running SOAP::Lite under mod_perl the XML-RPC interface is not working with the latest version of SOAP::Lite, included in (at least) F14 and rawhide. https://rt.cpan.org/Public/Bug/Display.html?id=58538 Version-Release number of selected component (if applicable): 0.712 How reproducible: See https://rt.cpan.org/Public/Bug/Display.html?id=58538 Steps to Reproduce: see https://rt.cpan.org/Public/Bug/Display.html?id=58538 Here's a patch: --- lib/SOAP/Transport/HTTP.pm.orig 2010-10-05 16:06:05.563710856 +0100 +++ lib/SOAP/Transport/HTTP.pm 2010-10-05 16:09:20.142813758 +0100 @@ -566,9 +566,16 @@ if ( !$chunked ) { my $buffer; binmode(STDIN); - while ( sysread( STDIN, $buffer, $length ) ) { - $content .= $buffer; - last if ( length($content) >= $length ); + if ( defined $ENV{'MOD_PERL'} ) { + while ( read( STDIN, $buffer, $length ) ) { + $content .= $buffer; + last if ( length($content) >= $length ); + } + } else { + while ( sysread( STDIN, $buffer, $length ) ) { + $content .= $buffer; + last if ( length($content) >= $length ); + } } }
This package has changed ownership in the Fedora Package Database. Reassigning to the new owner of this component.
With respect to the discussion [1] in RT #58538, I'm not sure if this won't introduce other possible issues. [1] https://rt.cpan.org/Public/Bug/Display.html?id=58538#txn-827275 Would you happen to know what bug is Martin talking about? Have you or are you willing to test the patch?
You mean the part where Martin says: > it's not just three characters: The change from read() to sysread() > was introduced due to another bug report (have to look up the number), > which reported read() to be broken under windows (never returns 0 > to indicate the request was read completely). I guess we don't need to bother about Windows support in the Fedora package :D but apart from that, also citing the bug report: > The reason it's a problem is that under mod_perl, STDIN is not a > real filehandle - it's mapped to the request object. CORE:: file > operations (read/print/etc.) work fine, but sysread specifically tries > to treat as a file handle. This means that using sysread() fixed the issue with SOAP::Lite on Windows, but when using mod_perl (on linux OR Windows) as stated STDIN is not a real file handle, and thus this change causes issues for those scenarios. The patch checks if SOAP::Lite is running in a mod_perl environment, and if this is the case, uses read() instead of sysread(). So yes, the fix is fine. Apart from that, it's running on a lot of OTRS systems in production at the moment, because this issue breaks the RPC/XML interface of OTRS (and Bugzilla, as well) when deployed under mod_perl. -- Mike
perl-SOAP-Lite-0.712-4.fc13 has been submitted as an update for Fedora 13. https://admin.fedoraproject.org/updates/perl-SOAP-Lite-0.712-4.fc13
perl-SOAP-Lite-0.712-4.fc14 has been submitted as an update for Fedora 14. https://admin.fedoraproject.org/updates/perl-SOAP-Lite-0.712-4.fc14
perl-SOAP-Lite-0.712-4.fc15 has been submitted as an update for Fedora 15. https://admin.fedoraproject.org/updates/perl-SOAP-Lite-0.712-4.fc15
Package perl-SOAP-Lite-0.712-4.fc14: * should fix your issue, * was pushed to the Fedora 14 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing perl-SOAP-Lite-0.712-4.fc14' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/perl-SOAP-Lite-0.712-4.fc14 then log in and leave karma (feedback).
perl-SOAP-Lite-0.712-4.fc15 has been pushed to the Fedora 15 stable repository. If problems still persist, please make note of it in this bug report.
perl-SOAP-Lite-0.712-4.fc13 has been pushed to the Fedora 13 stable repository. If problems still persist, please make note of it in this bug report.
perl-SOAP-Lite-0.712-4.fc14 has been pushed to the Fedora 14 stable repository. If problems still persist, please make note of it in this bug report.