RE: Apache::Compress patch

2000-12-19 Thread Ken Williams

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



RE: Apache::Compress patch

2000-12-18 Thread Geoffrey Young



 -Original Message-
 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);