Well, let's see:

==> (93.530) Outgoing Request <GET http://shevek.kenyonhill.com/cgi/test.pl
HTTP/1.1>
C05 --> S06 GET /cgi/test.pl HTTP/1.1
C05 --> S06 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/msword, */*
C05 --> S06 Accept-Language: en-us
C05 --> S06 Accept-Encoding: gzip, deflate
C05 --> S06 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
C05 --> S06 Host: shevek.kenyonhill.com
C05 --> S06 Accept-Charset: ISO-8859-1
== Body was 0 bytes ==

C05 <-- S06 HTTP/1.1 200 OK
C05 <-- S06 Date: Mon, 21 Jul 2003 16:30:59 GMT
C05 <-- S06 Server: Apache
C05 <-- S06 Vary: Accept-Encoding,User-Agent
C05 <-- S06 Content-Encoding: gzip
C05 <-- S06 Content-Length: 34
C05 <-- S06 Connection: close
C05 <-- S06 Content-Type: text/html; charset=ISO-8859-1
C05 <-- S06 == Incoming Body was 34 bytes ==
== real URL = http://shevek.kenyonhill.com/cgi/test.pl ==
== Transmission: text gzip  ==
== (93.640) Response 200 to <GET http://shevek.kenyonhill.com/cgi/test.pl
HTTP/1.1>
== Latency = 0.110 seconds, Extra Delay = 0.000 seconds
== Restored Body was 14 bytes ==
== Content Begin: ==
hello world<P>
== Content End ==

==> (164.770) Outgoing Request <GET
http://shevek.kenyonhill.com/perl/test.pl HTTP/1.1>
C05 --> S06 GET /perl/test.pl HTTP/1.1
C05 --> S06 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/msword, */*
C05 --> S06 Accept-Language: en-us
C05 --> S06 Accept-Encoding: gzip, deflate
C05 --> S06 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
C05 --> S06 Host: shevek.kenyonhill.com
C05 --> S06 Accept-Charset: ISO-8859-1
== Body was 0 bytes ==

C05 <-- S06 HTTP/1.1 200 OK
C05 <-- S06 Date: Mon, 21 Jul 2003 16:32:11 GMT
C05 <-- S06 Server: Apache
C05 <-- S06 Vary: Accept-Encoding,User-Agent
C05 <-- S06 Content-Encoding: gzip
C05 <-- S06 Connection: close
C05 <-- S06 Transfer-Encoding: chunked
C05 <-- S06 Content-Type: text/html; charset=ISO-8859-1
C05 <-- S06 == Incoming Body was 629 bytes ==
== real URL = http://shevek.kenyonhill.com/perl/test.pl ==
== Transmission: text gzip chunked ==
== Chunk Log ==
1e (hex) = 30 (dec)
245 (hex) = 581 (dec)
0 (hex) = 0 (dec)
== (164.880) Response 200 to <GET http://shevek.kenyonhill.com/perl/test.pl
HTTP/1.1>
== Latency = 0.110 seconds, Extra Delay = 0.000 seconds
== Restored Body was 14 bytes ==
== Content Begin: ==
hello world<P>
== Content End ==

We can see that mod_cgi bufferizes the output and sends it with
Content-Length HTTP header (to mod_deflate). Indeed mod_perl generates
chunked response. Finally we have the same result. I don't see any problem
at this moment. You would probably wish to append your script with
additional output after the empty string? Something like:

#!/usr/bin/perl
$|=1;
print "Content-Type: text/html\n\n";
print "hello world<P>";
# This line causes the error (?)
print "";
print "hello again<P>";
---

It may cause a problem for chunked output if mod_deflate does not care to
keep internal buffer and check its size when flushing...

Thanks,
Slava


----- Original Message ----- 
From: "Bill Marrs" <[EMAIL PROTECTED]>
To: "Slava Bizyayev" <[EMAIL PROTECTED]>; "Stas Bekman"
<[EMAIL PROTECTED]>; "Philippe M. Chiasson" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Monday, July 21, 2003 6:49 AM
Subject: Re: [mp2 Patch] BUG with mod_deflate and $|=1 (20014:Error string
not specified)


>
> >I can measure it myself if you can provide me with URLs to your resources
> >and identify them in terms of which one is mod_CGI and which is mod_perl.
>
> This is the mod_cgi one that works fine, no errors:
> http://shevek.kenyonhill.com/cgi/test.pl
>
> This is the mod_perl one (same script) that generates the "20014:Error" in
> the error_log.  Also, the page doesn't display correctly (it seems to
erase
> itself):
>
> http://shevek.kenyonhill.com/perl/test.pl
>
> This is the contents of test.pl:
>
> ---
> #!/usr/bin/perl
> $|=1;
> print "Content-Type: text/html\n\n";
> print "hello world<P>";
> # This line causes the error
> print "";
> ---
>
> Let me know if you need anything more.
>
>

Reply via email to