Hi Geoff,
Does the following patch work just as well for you? I'm trying to keep
using $r->send_fd if at all possible when we're not compressing.
===================================================================
--- Compress.pm 2000/11/05 05:36:46 1.3
+++ Compress.pm 2000/12/20 04:34:35
@@ -34,14 +34,24 @@
}
return SERVER_ERROR unless $fh;
+ my $buff;
+ unless (defined read($fh, $buff, 300)) {
+ $r->log_error("Can't read from filehandle '$fh': $!");
+ return SERVER_ERROR;
+ }
+
+ return DECLINED unless length $buff;
+ $can_gzip = 0 if eof($fh);
+
if ($can_gzip) {
$r->content_encoding('gzip');
$r->send_http_header;
local $/;
- print Compress::Zlib::memGzip(<$fh>);
+ print Compress::Zlib::memGzip($buff . <$fh>);
} else {
$r->send_http_header;
- $r->send_fd($fh);
+ print $buff;
+ $r->send_fd($fh) unless eof($fh);
}
return OK;
===================================================================
I'll trust the mod_gzip docs that 300 is a reasonable limit.
Thanks for the patch.
[EMAIL PROTECTED] (Geoffrey Young) wrote:
>> From: Geoffrey Young [mailto:[EMAIL PROTECTED]]
>> Sent: Thursday, December 14, 2000 8:34 AM
>> To: 'Ken Williams'
>> Cc: '[EMAIL PROTECTED]'
>> Subject: Apache::Compress patch
>>
>>
>> hi ken...
>>
>>
>> something has been bugging me in Apache::Compress for a while now - it
>> _always_ tries to compress output.
>>
>[snip]
>
>whoops on that patch... it didn't print filtered output that was less than
>300 characters *doh*. This should do the trick (against Compress.pm
>1.003)...
>
>--Geoff
>
>--- Compress.pm.old Thu Dec 14 08:22:15 2000
>+++ Compress.pm Mon Dec 18 15:29:26 2000
>@@ -35,10 +35,23 @@
> return SERVER_ERROR unless $fh;
>
> if ($can_gzip) {
>- $r->content_encoding('gzip');
>- $r->send_http_header;
> local $/;
>- print Compress::Zlib::memGzip(<$fh>);
>+ local $^W; # length() gives an uninitialized warning. hmmm...
>+ my $file = <$fh>;
>+
>+ my $length = length($file);
>+
>+ return DECLINED unless $length;
>+
>+ if ($length < 300) {
>+ $r->send_http_header;
>+ $r->print($file);
>+ }
>+ else {
>+ $r->content_encoding('gzip');
>+ $r->send_http_header;
>+ print Compress::Zlib::memGzip($file);
>+ }
> } else {
> $r->send_http_header;
> $r->send_fd($fh);
>
>
>
------------------- -------------------
Ken Williams Last Bastion of Euclidity
[EMAIL PROTECTED] The Math Forum