roxen.lists.roxen.general

Subject Author Date
Tiny fix included (Re: [PATCH 14/17] New module: gzip-on-the-fly) Stephen R. van den Berg <srb[at]cuci[dot]nl> 29-01-2009
Martin Jonsson wrote:
>browser compression capabilities. The size of the protocol cache should 
>also be reduced a bit since entries are stored in the compressed form 
>(memory is cheap these days, but anyways ... ;) )

If I can cache four times as many entries in the same GB of RAM, compression
is still a win, even when memory is cheap.

>listening filesystem anyways. There will still be an option to enable 
>compression of dynamic requests, though.

Great.  Thanks.

The implementation looks rather good.  Excellent work.
Maybe one minor fixup:

commit 79323f6cd3d734c9e4f6884417e3e322689cfb0b
Author: Stephen R. van den Berg <<srb[at]cuci.nl>>
Date:   Thu Jan 29 08:54:10 2009 +0100

    Make sure compression works on Windows as well

diff --git a/server/protocols/http.pike b/server/protocols/http.pike
index 929f672..9163e4b 100644
--- a/server/protocols/http.pike
+++ b/server/protocols/http.pike
@@ -1995,18 +1995,18 @@ Thread.Local gzfileobj = Thread.Local();
 
 private string gzip_data(string data)
 {
-  Stdio.FakeFile f = Stdio.FakeFile("", "w");
+  Stdio.FakeFile f = Stdio.FakeFile("", "wb");
 
   // Reuse the Gz.File object to reduce the overhead of instantiating
   // Gz.deflate objects etc.
   Gz.File gzfile = gzfileobj->get();
   if(!gzfile) {
-    gzfile = Gz.File(f, "w");
+    gzfile = Gz.File(f, "wb");
     gzfile->setparams(conf->query("http_compression_level"), 
 		      Gz.DEFAULT_STRATEGY); 
     gzfileobj->set(gzfile);
   } else {
-    gzfile->open(f, "w");
+    gzfile->open(f, "wb");
   }
 
   gzfile->write(data);
@@ -2017,16 +2017,16 @@ private string gzip_data(string data)
 
 private string gunzip_data(string data)
 {
-  Stdio.FakeFile f = Stdio.FakeFile(data, "r");
+  Stdio.FakeFile f = Stdio.FakeFile(data, "rb");
 
   Gz.File gzfile = gzfileobj->get();
   if(!gzfile) {
-    gzfile = Gz.File(f, "r");
+    gzfile = Gz.File(f, "rb");
     gzfile->setparams(conf->query("http_compression_level"), 
 		      Gz.DEFAULT_STRATEGY);
     gzfileobj->set(gzfile);
   } else {
-    gzfile->open(f, "r");
+    gzfile->open(f, "rb");
   }
 
   string res = gzfile->read();
-- 
Sincerely,
           Stephen R. van den Berg.
"If you make people think they're thinking, they'll love you;
 but if you really make them think, they'll hate you."