Stevedores will use BAN_Spec to get the ban byte string, which will be
truncated for GONE bans.
---
 bin/varnishd/cache/cache.h                |    2 +-
 bin/varnishd/cache/cache_ban.c            |    7 +++----
 bin/varnishd/storage/stevedore.c          |    4 ++--
 bin/varnishd/storage/storage.h            |    3 ++-
 bin/varnishd/storage/storage_persistent.c |   10 ++++++----
 5 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 582dc0b..f0bba19 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -1060,7 +1060,7 @@ void STV_free(struct storage *st);
 void STV_open(void);
 void STV_close(void);
 void STV_Freestore(struct object *o);
-void STV_BanInfo(enum baninfo event, const uint8_t *ban, unsigned len);
+void STV_BanInfo(enum baninfo event, const struct ban *ban);
 
 /* storage_synth.c */
 struct vsb *SMS_Makesynth(struct object *obj);
diff --git a/bin/varnishd/cache/cache_ban.c b/bin/varnishd/cache/cache_ban.c
index d15f6c5..4853be3 100644
--- a/bin/varnishd/cache/cache_ban.c
+++ b/bin/varnishd/cache/cache_ban.c
@@ -442,7 +442,7 @@ BAN_Insert(struct ban *b)
        else
                be = NULL;
 
-       STV_BanInfo(BI_NEW, b->spec, ln);       /* Notify stevedores */
+       STV_BanInfo(BI_NEW, b);         /* Notify stevedores */
        Lck_Unlock(&ban_mtx);
 
        if (be == NULL)
@@ -670,7 +670,7 @@ BAN_Compile(void)
        AZ(ban_shutdown);
 
        /* Notify stevedores */
-       STV_BanInfo(BI_NEW, ban_magic->spec, ban_len(ban_magic->spec));
+       STV_BanInfo(BI_NEW, ban_magic);
 
        ban_start = VTAILQ_FIRST(&ban_head);
        WRK_BgThread(&ban_thread, "ban-lurker", ban_lurker, NULL);
@@ -1030,8 +1030,7 @@ ban_lurker(struct worker *wrk, void *priv)
                        bf = ban_CheckLast();
                        if (bf != NULL)
                                /* Notify stevedores */
-                               STV_BanInfo(BI_DROP, bf->spec,
-                                           ban_len(bf->spec));
+                               STV_BanInfo(BI_DROP, bf);
                        Lck_Unlock(&ban_mtx);
                        if (bf != NULL)
                                BAN_Free(bf);
diff --git a/bin/varnishd/storage/stevedore.c b/bin/varnishd/storage/stevedore.c
index 5262b70..c64fb62 100644
--- a/bin/varnishd/storage/stevedore.c
+++ b/bin/varnishd/storage/stevedore.c
@@ -454,13 +454,13 @@ STV_close(void)
 }
 
 void
-STV_BanInfo(enum baninfo event, const uint8_t *ban, unsigned len)
+STV_BanInfo(enum baninfo event, const struct ban *ban)
 {
        struct stevedore *stv;
 
        VTAILQ_FOREACH(stv, &stv_stevedores, list)
                if (stv->baninfo != NULL)
-                       stv->baninfo(stv, event, ban, len);
+                       stv->baninfo(stv, event, ban);
 }
 
 /*--------------------------------------------------------------------
diff --git a/bin/varnishd/storage/storage.h b/bin/varnishd/storage/storage.h
index e9971e7..f54b8c3 100644
--- a/bin/varnishd/storage/storage.h
+++ b/bin/varnishd/storage/storage.h
@@ -38,6 +38,7 @@ struct busyobj;
 struct objcore;
 struct worker;
 struct lru;
+struct ban;
 
 typedef void storage_init_f(struct stevedore *, int ac, char * const *av);
 typedef void storage_open_f(const struct stevedore *);
@@ -49,7 +50,7 @@ typedef struct object *storage_allocobj_f(struct stevedore *, 
struct busyobj *,
 typedef void storage_close_f(const struct stevedore *);
 typedef void storage_signal_close_f(const struct stevedore *);
 typedef void storage_baninfo_f(struct stevedore *, enum baninfo event,
-    const uint8_t *ban, unsigned len);
+    const struct ban *ban);
 
 /* Prototypes for VCL variable responders */
 #define VRTSTVTYPE(ct) typedef ct storage_var_##ct(const struct stevedore *);
diff --git a/bin/varnishd/storage/storage_persistent.c 
b/bin/varnishd/storage/storage_persistent.c
index 3a6ade5..ec306e6 100644
--- a/bin/varnishd/storage/storage_persistent.c
+++ b/bin/varnishd/storage/storage_persistent.c
@@ -93,10 +93,11 @@ smp_appendban(struct smp_sc *sc, struct smp_signspace *spc,
 /* Trust that cache_ban.c takes care of locking */
 
 static void
-smp_baninfo(struct stevedore *stv, enum baninfo event,
-           const uint8_t *ban, unsigned len)
+smp_baninfo(struct stevedore *stv, enum baninfo event, const struct ban *ban)
 {
        struct smp_sc *sc;
+       const uint8_t *spec;
+       unsigned len;
 
        CAST_OBJ_NOTNULL(sc, stv->priv, SMP_SC_MAGIC);
 
@@ -106,8 +107,9 @@ smp_baninfo(struct stevedore *stv, enum baninfo event,
 
        switch (event) {
        case BI_NEW:
-               smp_appendban(sc, &sc->ban1, len, ban);
-               smp_appendban(sc, &sc->ban2, len, ban);
+               BAN_Spec(ban, &spec, &len);
+               smp_appendban(sc, &sc->ban1, len, spec);
+               smp_appendban(sc, &sc->ban2, len, spec);
                break;
        default:
                /* Ignored */
-- 
1.7.9.5


_______________________________________________
varnish-dev mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev

Reply via email to