[master] acd718f Only grab the first matched fragment in varnishncsa

Martin Blix Grydeland martin at varnish-software.com
Mon Apr 7 14:03:13 CEST 2014


commit acd718f04215a8ca0cca4cd0d7997aceaf73c5a9
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date:   Mon Apr 7 14:02:35 2014 +0200

    Only grab the first matched fragment in varnishncsa
    
    Fixes: #1462

diff --git a/bin/varnishncsa/varnishncsa.c b/bin/varnishncsa/varnishncsa.c
index 7a47b1b..e3f2432 100644
--- a/bin/varnishncsa/varnishncsa.c
+++ b/bin/varnishncsa/varnishncsa.c
@@ -682,9 +682,12 @@ frag_fields(const char *b, const char *e, ...)
 			q++;
 
 		if (field == n) {
-			frag->gen = CTX.gen;
-			frag->b = p;
-			frag->e = q;
+			if (frag->gen != CTX.gen) {
+				/* We only grab the same matching field once */
+				frag->gen = CTX.gen;
+				frag->b = p;
+				frag->e = q;
+			}
 			field = va_arg(ap, int);
 			if (field == 0)
 				break;
@@ -698,6 +701,10 @@ static void
 frag_line(const char *b, const char *e, struct fragment *f)
 {
 
+	if (f->gen == CTX.gen)
+		/* We only grab the same matching record once */
+		return;
+
 	/* Skip leading space */
 	while (b < e && isspace(*b))
 		++b;



More information about the varnish-commit mailing list