On Thu, 27 Jul 2006, Adrian Chadd wrote:

> On Thu, Jul 27, 2006, Steven Wilton wrote:
> > I'd like to propose the attached patches for squid.
> > 
> > The first is a config option for wccp2 to make squid wait until all
> > cache_dirs have finished rebuilding before squid will register itself with
> > WCCP.  This will allow the rebuild to happen quickly, and avoid slow web
> > requests while the cache rebuilds.
> > 
> > The second is a trivial patch to the storeSwapMetaUnpack() function to make
> > it initialise a variable.  This was causing crashes with COSS when the first
> > object in the buffer was broken.
> 
> Cool, you found the crash! Nice!
> 
> Could you re-send the diff in a non-winmail.dat format? :)
> 

They make me use Outlook at work :)

Here I go again.

Steven
Index: src/store_swapmeta.c
===================================================================
RCS file: /cvsroot/squid/squid/src/store_swapmeta.c,v
retrieving revision 1.11
diff -u -r1.11 store_swapmeta.c
--- src/store_swapmeta.c        20 May 2006 13:36:59 -0000      1.11
+++ src/store_swapmeta.c        27 Jul 2006 07:49:16 -0000
@@ -120,7 +120,7 @@
 tlv *
 storeSwapMetaUnpack(const char *buf, int *hdr_len)
 {
-    tlv *TLV;                  /* we'll return this */
+    tlv *TLV = NULL;                   /* we'll return this */
     tlv **T = &TLV;
     char type;
     int length;
Index: src/cf.data.pre
===================================================================
RCS file: /cvsroot/squid/squid/src/cf.data.pre,v
retrieving revision 1.143
diff -u -r1.143 cf.data.pre
--- src/cf.data.pre     26 Jul 2006 21:51:20 -0000      1.143
+++ src/cf.data.pre     27 Jul 2006 06:00:24 -0000
@@ -4206,6 +4206,15 @@
        do not specify this parameter.
 DOC_END
 
+NAME: wccp2_rebuild_wait
+TYPE: onoff
+LOC: Config.Wccp2.rebuildwait
+DEFAULT: off
+DOC_START
+       If this is enabled Squid will wait for the cache dir rebuild to finish
+       before sending the first wccp2 HereIAm packet
+DOC_END
+
 NAME: wccp2_forwarding_method
 TYPE: int
 LOC: Config.Wccp2.forwarding_method
Index: src/structs.h
===================================================================
RCS file: /cvsroot/squid/squid/src/structs.h,v
retrieving revision 1.122
diff -u -r1.122 structs.h
--- src/structs.h       26 Jul 2006 21:51:20 -0000      1.122
+++ src/structs.h       27 Jul 2006 06:00:27 -0000
@@ -506,6 +506,7 @@
        struct in_addr address;
        int forwarding_method;
        int return_method;
+       int rebuildwait;
        void *info;
     } Wccp2;
 #endif
Index: src/wccp2.c
===================================================================
RCS file: /cvsroot/squid/squid/src/wccp2.c,v
retrieving revision 1.18
diff -u -r1.18 wccp2.c
--- src/wccp2.c 27 Jul 2006 00:50:47 -0000      1.18
+++ src/wccp2.c 27 Jul 2006 06:00:28 -0000
@@ -1058,6 +1058,11 @@
        debug(80, 1) ("wccp2HereIam: wccp2 socket closed.  Shutting down 
WCCP2\n");
        return;
     }
+    /* Wait 10 seconds if store dirs are rebuilding */
+    if(store_dirs_rebuilding && Config.Wccp2.rebuildwait)
+       if (!eventFind(wccp2HereIam, NULL))
+           eventAdd("wccp2HereIam", wccp2HereIam, NULL, 10.0, 1);
+
     router_len = sizeof(router);
     memset(&router, '\0', router_len);
     router.sin_family = AF_INET;

Reply via email to