[Varnish] #309: Varnish freezes if >1k of binary postdata is passed in

Varnish varnish-bugs at projects.linpro.no
Wed Sep 3 23:41:44 CEST 2008


#309: Varnish freezes if >1k of binary postdata is passed in
---------------------+------------------------------------------------------
 Reporter:  Fry-kun  |        Owner:  des
     Type:  defect   |       Status:  new
 Priority:  high     |    Milestone:     
Component:  build    |      Version:  2.0
 Severity:  normal   |   Resolution:     
 Keywords:           |  
---------------------+------------------------------------------------------
Comment (by Fry-kun):

 I just noticed that changing the POST setting from pass to pipe seems to
 fix the problem.
 Here's my configuration:

 {{{
 backend default {
         .host = "127.0.0.1";
         .port = "1089"; # was "8080";
 }

 acl purge {
         "localhost";
         "192.168.1.0"/16;
 }

 sub vcl_recv {
         # Handle special requests
         if (req.request != "GET" && req.request != "HEAD") {
                 # POST - Logins and edits
                 if (req.request == "POST") {
                         pass;
                         #pipe;
                 }

                 # PURGE - The CacheFu product can invalidate updated URLs
                 if (req.request == "PURGE") {
                         if (!client.ip ~ purge) {
                                 error 405 "Not allowed.";
                         }
                         lookup;
                 }
         }

         # Don't cache authenticated requests
         if (req.http.Cookie && req.http.Cookie ~
 "__ac(|_(name|password|persistent))=") {

                 # Force lookup of specific urls unlikely to need
 protection
                 if (req.url ~ "\.(js|css)") {
                         unset req.http.cookie;
                         lookup;
                 }
                 pass;
         }

         if (req.http.Cookie) {
             unset req.http.cookie;
             lookup;
         }

         # The default vcl_recv is used from here.
 }

 # Do the PURGE thing
 sub vcl_hit {
         if (req.request == "PURGE") {
                 set obj.ttl = 0s;
                 error 200 "Purged";
         }
 }
 sub vcl_miss {
         if (req.request == "PURGE") {
                 error 404 "Not in cache";
         }
 }
 }}}

-- 
Ticket URL: <http://varnish.projects.linpro.no/ticket/309#comment:3>
Varnish <http://varnish.projects.linpro.no/>
The Varnish HTTP Accelerator


More information about the varnish-bugs mailing list