[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-modperl-dev
Subject:    Re: post request truncated
From:       "Philippe M. Chiasson" <gozer () cpan ! org>
Date:       2002-11-06 4:45:22
[Download RAW message or body]


On Mon, 2002-11-04 at 06:54, jeroen@one.vthings.net wrote:
> 
> -------------8<---------- Start Bug Report ------------8<----------
> 1. Problem Description:
> 
> When using mod_perl to drive a script that receives a large
> textarea from a html form (using POST), the contents
> of the textarea gets truncated.
> 
> The reason I suspect mod_perl is that I've created a test script
> that just dumps stdin to my browser, using no extra modules (i.e. no CGI.pm)
> 
> When I do that WITHOUT mod_perl the result is:
> - CONTENT_LENGTH: 9737
> - actual read: 9737
> and everything is displayed
> 
> When I do this WITH mod_perl the result is:
> - CONTENT_LENGTH: 9737
> - actual read: 8192
> and the result is only partial. 
> 
> Especially the 'nice' 8k boundary makes me a little suspicous.

Indeed ;-)

> This behavior is very consistent - no matter what browser, no matter I use CGI.pm \
> or don't, with or without Apache::compat().

there might be something funny going in trying  to use read() on STDIN,
will look at it.

If you look at the code in Apache/compat.pm, sub content {}, you can see
an alternative way to read data from the client. Can you give that
approach a try ?

    my $r = Apache->Request;

    $r->setup_client_block;
    die unless $r->should_client_block;

    my $len = $r->headers_in->get('content-length');
    my $buf;

    #read $len bytes from the client and stuff it in $buf
    $r->get_client_block($buf, $len);


> Perhaps it's a compile option I missed, but in that case it is poorly documented \
> and I consider it a bug nonetheless. 
> The test code is appened at the bottom of this report.
> 
> Browser used for most testing: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) \
> Gecko/20021022 
> 2. Used Components and their Configuration:
> 
> *** using lib/Apache/BuildConfig.pm
> *** Makefile.PL options:
> MP_AP_PREFIX   => /usr/local/apache2
> MP_GENERATE_XS => 1
> MP_LIBNAME     => mod_perl
> MP_USE_DSO     => 1
> MP_USE_STATIC  => 1
> 
> 
> *** /usr/local/apache2/bin/httpd -V
> Server version: Apache/2.0.43
> Server built:   Oct 25 2002 22:37:40
> Server's Module Magic Number: 20020903:0
> Architecture:   32-bit
> Server compiled with....
> -D APACHE_MPM_DIR="server/mpm/prefork"
> -D APR_HAS_SENDFILE
> -D APR_HAS_MMAP
> -D APR_HAVE_IPV6
> -D APR_USE_SYSVSEM_SERIALIZE
> -D APR_USE_PTHREAD_SERIALIZE
> -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
> -D APR_HAS_OTHER_CHILD
> -D AP_HAVE_RELIABLE_PIPED_LOGS
> -D HTTPD_ROOT="/usr/local/apache2"
> -D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
> -D DEFAULT_PIDLOG="logs/httpd.pid"
> -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
> -D DEFAULT_LOCKFILE="logs/accept.lock"
> -D DEFAULT_ERRORLOG="logs/error_log"
> -D AP_TYPES_CONFIG_FILE="conf/mime.types"
> -D SERVER_CONFIG_FILE="conf/httpd.conf"
> 
> 
> *** /usr/bin/perl -V
> Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
> Platform:
> osname=linux, osvers=2.4.19-xfs-r1, archname=i686-linux
> uname='linux cdimage 2.4.19-xfs-r1 #1 smp sat sep 14 17:15:33 local time zone must \
> be set--see zic i686 authenticamd ' config_args='-des -Dprefix=/usr \
> -Darchname=i686-linux -Duselargefiles -Dd_dosuid -Dlocincpth=  -Dd_semctl_semun \
> -Di_gdbm -Di_db -Di_ndbm' hint=recommended, useposix=true, d_sigaction=define
> usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
> useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
> use64bitint=undef use64bitall=undef uselongdouble=undef
> Compiler:
> cc='cc', ccflags ='-fno-strict-aliasing -D_LARGEFILE_SOURCE \
> -D_FILE_OFFSET_BITS=64', optimize='-march=i686 -O3 -pipe',
> cppflags='-fno-strict-aliasing'
> ccversion='', gccversion='3.2', gccosandvers=''
> intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
> ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
> alignbytes=4, usemymalloc=n, prototype=define
> Linker and Libraries:
> ld='cc', ldflags =' -L/usr/local/lib'
> libpth=/usr/local/lib /lib /usr/lib
> libs=-lnsl -lndbm -lgdbm -ldb -ldl -lm -lc -lcrypt -lutil
> perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil
> libc=/lib/libc-2.2.5.so, so=so, useshrplib=false, libperl=libperl.a
> Dynamic Linking:
> dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
> cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
> 
> 
> Characteristics of this binary (from libperl): 
> Compile-time options: USE_LARGE_FILES
> Built under linux
> Compiled at Oct 21 2002 14:22:04
> %ENV:
> PERL_LWP_USE_HTTP_10="1"
> @INC:
> /usr/lib/perl5/5.6.1/i686-linux
> /usr/lib/perl5/5.6.1
> /usr/lib/perl5/site_perl/5.6.1/i686-linux
> /usr/lib/perl5/site_perl/5.6.1
> /usr/lib/perl5/site_perl
> .
> 
> 
> 3. This is the core dump trace: (if you get a core dump):
> 
> [CORE TRACE COMES HERE] - no core dump
> 
> This report was generated by t/REPORT on Sun Nov  3 22:05:38 2002 GMT.
> 
> -------------8<---------- End Bug Report --------------8<----------
> 
> Note: Complete the rest of the details and post this bug report to
> dev <at> perl.apache.org. To subscribe to the list send an empty
> email to dev-subscribe@perl.apache.org.
> 
> The dump script I used:
> 
> #---- cut here
> #!/usr/bin/perl
> 
> my $length = $ENV{"CONTENT_LENGTH"};
> 
> my $i = 0;
> print "Content-type: text/html\n\n";
> my $row;
> my $aread = read STDIN,$row,$length;
> 
> print "Total length: $length, actual read is $aread <br>";
> print "START:";
> $row =~ s/%0D%0A/\<br \>/g;
> print $row;
> print "STOP:";
> #--- cut here
> 
> The html form I used:
> #--- cut here
> <html>
> <form name="main" action="/dump" method="post">
> <textarea name="text" wrap="virtual" rows="17" cols="70" style="width: 99%">
> </textarea>
> <input type="submit" value="submit" />
> </form>
> </html>
> #--- cut here
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
> For additional commands, e-mail: dev-help@perl.apache.org
> 
> 


["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic