Edenhill has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/98135


Change subject: Added %{VCL_Log:key}x support
......................................................................

Added %{VCL_Log:key}x support

Change-Id: I1af3bf3399e13340b8afde3fe21fdc4f43718ddf
---
M varnishkafka.c
1 file changed, 44 insertions(+), 7 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/operations/software/varnish/varnishkafka 
refs/changes/35/98135/1

diff --git a/varnishkafka.c b/varnishkafka.c
index 6fa1c7e..0032e13 100644
--- a/varnishkafka.c
+++ b/varnishkafka.c
@@ -946,6 +946,8 @@
                                { VSL_S_CLIENT, SLT_VCL_call,
                                  fmtvar: "Varnish:handling",
                                  parser: parse_handling },
+                               { VSL_S_CLIENT, SLT_VCL_Log,
+                                 fmtvar: "VCL_Log:*" },
 
                        } },
                ['n'] = { {
@@ -1148,14 +1150,49 @@
                        /* mapping has fmtvar specified, make sure it 
                         * matches the format's variable. */
                        if (map[(int)*s].f[i].fmtvar) {
-                               if (!var ||
-                                   strlen(map[(int)*s].f[i].fmtvar) != varlen||
-                                   strncmp(map[(int)*s].f[i].fmtvar, var,
-                                           varlen))
+                               const char *iswc;
+
+                               if (!var)
                                        continue;
-                               /* fmtvar's resets the format var */
-                               var = NULL;
-                               varlen = 0;
+
+                               /* Match "xxxx:<key>".
+                                * If format definition's key is wildcarded
+                                * ("*") then use the configured key as var.
+                                * I.e., "%{VCL_Log:hit}x" will put "hit" in
+                                * var since VCL_Log is defined as wildcard:
+                                * "VCL_Log:*". */
+                               if ((iswc = strstr(map[(int)*s].f[i].fmtvar,
+                                                  ":*"))) {
+                                       /* Wildcard definition */
+                                       int fvlen = (int)(iswc -
+                                                         map[(int)*s].
+                                                         f[i].fmtvar) + 1;
+
+                                       /* Check that var matches prefix.
+                                        * I.e.: "VCL_Log:" cmp "VCL_Log:" */
+                                       if (varlen <= fvlen ||
+                                           strncmp(map[(int)*s].f[i].fmtvar,
+                                                   var, fvlen))
+                                               continue;
+
+                                       /* set format var to "..:<key>" */
+                                       var = var + fvlen;
+                                       varlen -= fvlen;
+
+
+                               } else {
+                                       /* Non-wildcard definition.
+                                        * Var must match exactly. */
+                                       if (varlen != strlen(map[(int)*s].
+                                                            f[i].fmtvar) ||
+                                           strncmp(map[(int)*s].f[i].fmtvar,
+                                                   var, varlen))
+                                               continue;
+
+                                       /* fmtvar's resets the format var */
+                                       var = NULL;
+                                       varlen = 0;
+                               }
                        }
 
                        if (tag_add(fconf, &fconf->fmt[fmtid],

-- 
To view, visit https://gerrit.wikimedia.org/r/98135
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1af3bf3399e13340b8afde3fe21fdc4f43718ddf
Gerrit-PatchSet: 1
Gerrit-Project: operations/software/varnish/varnishkafka
Gerrit-Branch: master
Gerrit-Owner: Edenhill <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to