--- 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 ); }