From 57f35665466de402ffa23eb604d39d7c7c2df523 Mon Sep 17 00:00:00 2001 From: vfilippov Date: Fri, 16 Apr 2010 21:55:20 +0000 Subject: [PATCH] Bug 62960 - A patch for SOAP::Transport::HTTP in mod_perl environment git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@709 6955db30-a419-402b-8a0d-67ecbb4d7f56 --- .../SOAP-Transport-HTTP.pm-for_mod_perl.diff | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 contrib/SOAP-Transport-HTTP.pm-for_mod_perl.diff diff --git a/contrib/SOAP-Transport-HTTP.pm-for_mod_perl.diff b/contrib/SOAP-Transport-HTTP.pm-for_mod_perl.diff new file mode 100644 index 000000000..e422a5e42 --- /dev/null +++ b/contrib/SOAP-Transport-HTTP.pm-for_mod_perl.diff @@ -0,0 +1,46 @@ +--- HTTP.pm 2010-03-18 21:29:10.000000000 +0300 ++++ HTTP.pm1 2010-04-17 01:52:42.000000000 +0400 +@@ -500,6 +500,13 @@ sub product_tokens { + + # ====================================================================== + ++package SOAP::Transport::HTTP::CGIhack; ++use CGI; ++use vars qw(@ISA); ++@ISA = qw(CGI); ++ ++sub init {} ++ + package SOAP::Transport::HTTP::CGI; + + use vars qw(@ISA); +@@ -533,13 +540,15 @@ sub handle { + my $chunked = (defined $ENV{'HTTP_TRANSFER_ENCODING'} + && $ENV{'HTTP_TRANSFER_ENCODING'} =~ /^chunked.*$/) || 0; + ++ my $r = SOAP::Transport::HTTP::CGIhack->new; + + my $content = q{}; + + if ($chunked) { + my $buffer; +- binmode(STDIN); +- while ( read( STDIN, my $buffer, 1024 ) ) { ++# binmode(STDIN); ++# while ( read( STDIN, my $buffer, 1024 ) ) { ++ while ( $r->read_from_client( \ (my $buffer), 1024 ) ) { + $content .= $buffer; + } + $length = length($content); +@@ -560,8 +569,9 @@ sub handle { + #my $content = q{}; + if ( !$chunked ) { + my $buffer; +- binmode(STDIN); +- while ( sysread( STDIN, $buffer, $length ) ) { ++# binmode(STDIN); ++ while ( $r->read_from_client( \$buffer, $length ) ) { ++# while ( sysread( STDIN, $buffer, $length ) ) { + $content .= $buffer; + last if ( length($content) >= $length ); + }