]> err.no Git - varnish/commitdiff
Rename EXP_TTLchange() to EXP_Rearm() and move binheap check into
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sat, 23 Feb 2008 19:26:38 +0000 (19:26 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sat, 23 Feb 2008 19:26:38 +0000 (19:26 +0000)
cache_expire.c.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2530 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache.h
varnish-cache/bin/varnishd/cache_expire.c
varnish-cache/bin/varnishd/cache_hash.c
varnish-cache/bin/varnishd/cache_vrt.c

index 80f40679d43b8180a829551254fd37cc7e8ca157..9675b0000725c337a88997ea49f62e8279debbca 100644 (file)
@@ -439,7 +439,7 @@ extern pthread_t cli_thread;
 /* cache_expiry.c */
 void EXP_Insert(struct object *o);
 void EXP_Init(void);
-void EXP_TTLchange(struct object *o);
+void EXP_Rearm(struct object *o);
 void EXP_Touch(struct object *o, double now);
 int EXP_NukeOne(struct sess *sp);
 
index dab65673e9632d7e24be954fc43130328061dc24..0406d2ad21731dcbf698e99927b0b60b2209b09e 100644 (file)
@@ -115,10 +115,21 @@ EXP_Touch(struct object *o, double now)
        }
 }
 
+/*--------------------------------------------------------------------
+ * We have changed one or more of the object timers, shuffle it 
+ * accordingly in the binheap
+ *
+ * The VCL code can send us here on a non-cached object, just return.
+ *
+ * XXX: special case check for ttl = 0 ?
+ */
+
 void
-EXP_TTLchange(struct object *o)
+EXP_Rearm(struct object *o)
 {
 
+       if (o->timer_idx == 0)
+               return;
        LOCK(&exp_mtx);
        if (o->timer_idx != lru_target) {
                assert(o->timer_idx != 0);      /* XXX: symbolic zero ? */
index 6d68114e7dca9744a99ffd64b9b6db8b2719ba72..eb62ba2a767c330e9b494b579fd7fb1ffc9eed75 100644 (file)
@@ -210,8 +210,7 @@ HSH_Lookup(struct sess *sp)
                if (BAN_CheckObject(o, h->hd[HTTP_HDR_URL].b, oh->hash)) {
                        o->ttl = 0;
                        WSP(sp, SLT_ExpBan, "%u was banned", o->xid);
-                       if (o->timer_idx != 0)
-                               EXP_TTLchange(o);
+                       EXP_Rearm(o);
                        continue;
                }
                if (o->vary != NULL && !VRY_Match(sp, o->vary))
index 9d8c9cb4c1810fd83b738ff10c3831ea4244b7fb..90ed5bae360f4b5d4bf7b9fc8a5a50bfb3bcc54c 100644 (file)
@@ -293,8 +293,7 @@ VRT_l_obj_ttl(const struct sess *sp, double a)
        if (a < 0)
                a = 0;
        sp->obj->ttl = sp->t_req + a;
-       if (sp->obj->timer_idx != 0)
-               EXP_TTLchange(sp->obj);
+       EXP_Rearm(sp->obj);
 }
 
 double
@@ -318,8 +317,7 @@ VRT_l_obj_grace(const struct sess *sp, double a)
        if (a < 0)
                a = 0;
        sp->obj->grace = a;
-       if (sp->obj->timer_idx != 0)
-               EXP_TTLchange(sp->obj);
+       EXP_Rearm(sp->obj);
 }
 
 double
@@ -355,8 +353,7 @@ VRT_l_obj_prefetch(const struct sess *sp, double a)
                WSL(sp->wrk, SLT_VCL_info, sp->id,
                    "XID %u: obj.prefetch (%g) less than ttl (%g), ignored.",
                    sp->obj->xid, a, sp->obj->ttl - sp->t_req);
-       if (sp->obj->timer_idx != 0)
-               EXP_TTLchange(sp->obj);
+       EXP_Rearm(sp->obj);
 }
 
 double