[master] 7cbfb2d Log hash_data() input when the Hash bit is set
Federico G. Schwindt
fgsch at lodoss.net
Mon Mar 23 16:57:26 CET 2015
commit 7cbfb2d7f650538a01225329723ed51bc9f5db80
Author: Federico G. Schwindt <fgsch at lodoss.net>
Date: Mon Mar 23 12:39:19 2015 +0000
Log hash_data() input when the Hash bit is set
Fixes #1693.
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index b3d3ac8..ccd80ad 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -187,14 +187,15 @@ HSH_DeleteObjHead(struct worker *wrk, struct objhead *oh)
}
void
-HSH_AddString(const struct req *req, const char *str)
+HSH_AddString(struct req *req, const char *str)
{
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
AN(req->sha256ctx);
- if (str != NULL)
+ if (str != NULL) {
SHA256_Update(req->sha256ctx, str, strlen(str));
- else
+ VSLb(req->vsl, SLT_Hash, "%s", str);
+ } else
SHA256_Update(req->sha256ctx, &str, sizeof str);
}
diff --git a/bin/varnishd/cache/cache_vrt.c b/bin/varnishd/cache/cache_vrt.c
index 6851bc0..63d2502 100644
--- a/bin/varnishd/cache/cache_vrt.c
+++ b/bin/varnishd/cache/cache_vrt.c
@@ -271,7 +271,6 @@ VRT_hashdata(VRT_CTX, const char *str, ...)
if (p == vrt_magic_string_end)
break;
HSH_AddString(ctx->req, p);
- VSLb(ctx->vsl, SLT_Hash, "%s", str);
}
va_end(ap);
/*
diff --git a/bin/varnishd/hash/hash_slinger.h b/bin/varnishd/hash/hash_slinger.h
index 189f938..6f546ff 100644
--- a/bin/varnishd/hash/hash_slinger.h
+++ b/bin/varnishd/hash/hash_slinger.h
@@ -67,7 +67,7 @@ enum lookup_e HSH_Lookup(struct req *, struct objcore **, struct objcore **,
int wait_for_busy, int always_insert);
void HSH_Ref(struct objcore *o);
void HSH_Init(const struct hash_slinger *slinger);
-void HSH_AddString(const struct req *, const char *str);
+void HSH_AddString(struct req *, const char *str);
void HSH_Insert(struct worker *, const void *hash, struct objcore *);
void HSH_Purge(struct worker *, struct objhead *, double ttl, double grace,
double keep);
diff --git a/bin/varnishtest/tests/r01693.vtc b/bin/varnishtest/tests/r01693.vtc
new file mode 100644
index 0000000..f16d620
--- /dev/null
+++ b/bin/varnishtest/tests/r01693.vtc
@@ -0,0 +1,27 @@
+varnishtest "Check hash is logged when the Hash bit is set"
+
+server s1 {
+ rxreq
+ txresp
+} -start
+
+varnish v1 -arg "-p vsl_mask=+Hash" -vcl+backend {
+ sub vcl_hash {
+ hash_data("1" + req.http.foo + "3");
+ }
+} -start
+
+logexpect l1 -v v1 {
+ expect * 1001 Hash "1"
+ expect 0 1001 Hash "bar"
+ expect 0 1001 Hash "3"
+ expect 0 1001 Hash "/"
+ expect 0 1001 Hash "127.0.0.1"
+} -start
+
+client c1 {
+ txreq -hdr "foo: bar"
+ rxresp
+} -run
+
+logexpect l1 -wait
More information about the varnish-commit
mailing list