[3.0] 831318a tempcommit: works for single lines

Lasse Karstensen lkarsten at varnish-cache.org
Thu Nov 3 19:02:11 CET 2011


commit 831318ada192681f356f4ef2293be29e4da31882
Author: Lasse Karstensen <lasse at varnish-software.com>
Date:   Fri Oct 28 12:59:44 2011 +0200

    tempcommit: works for single lines

diff --git a/bin/varnishncsa/varnishncsa.c b/bin/varnishncsa/varnishncsa.c
index ad9249d..59167fc 100644
--- a/bin/varnishncsa/varnishncsa.c
+++ b/bin/varnishncsa/varnishncsa.c
@@ -105,6 +105,8 @@ static struct logline {
 	uint64_t bitmap;		/* Bitmap for regex matches */
 	VTAILQ_HEAD(, hdr) req_headers; /* Request headers */
 	VTAILQ_HEAD(, hdr) resp_headers; /* Response headers */
+	char *log1;			/* How the request was handled (hit/miss/pass/pipe) */
+//	VTAILQ_HEAD(, hdr) vcl_log;     /* vcl.log() entries */
 } **ll;
 
 struct VSM_data *vd;
@@ -216,6 +218,23 @@ resp_header(struct logline *l, const char *name)
 	return NULL;
 }
 
+static char *
+vcl_log(struct logline *l, const char *name)
+{
+	struct hdr *h;
+	// JEJE
+	VTAILQ_FOREACH(h, &l->resp_headers, list) {
+		if (strcasecmp(h->key, name) == 0) {
+			return h->value;
+			break;
+		}
+	}
+	return NULL;
+}
+
+
+
+
 static void
 clean_logline(struct logline *lp)
 {
@@ -462,6 +481,28 @@ collect_client(struct logline *lp, enum VSL_tag_e tag, unsigned spec,
 		}
 		break;
 
+	case SLT_VCL_Log:
+		if(!lp->active)
+			break;
+ 		lp->log1 = trimline(ptr, end);
+/*
+		if (strncmp(ptr, "hit", len) == 0) {
+			lp->df_hitmiss = "hit";
+			lp->df_handling = "hit";
+		} else if (strncmp(ptr, "miss", len) == 0) {
+			lp->df_hitmiss = "miss";
+			lp->df_handling = "miss";
+		} else if (strncmp(ptr, "pass", len) == 0) {
+			lp->df_hitmiss = "miss";
+			lp->df_handling = "pass";
+		} else if (strncmp(ptr, "pipe", len) == 0) {
+			clean_logline(lp);
+			break;
+		}
+*/
+		break;
+
+
 	case SLT_VCL_call:
 		if(!lp->active)
 			break;
@@ -690,6 +731,7 @@ h_ncsa(void *priv, enum VSL_tag_e tag, unsigned fd,
 				memcpy(fname, p+1, tmp-p-2);
 				fname[tmp-p-2] = 0;
 			}
+//			printf("fname is: %s", fname);
 
 			switch (type) {
 			case 'i':
@@ -715,7 +757,12 @@ h_ncsa(void *priv, enum VSL_tag_e tag, unsigned fd,
 					VSB_cat(os, (lp->df_handling ? lp->df_handling : "-"));
 					p = tmp;
 					break;
+				} else if (strcmp(fname, "Varnish:vcllog") == 0) {
+					VSB_cat(os, (lp->log1 ? lp->log1 : "-"));
+					p = tmp;
+					break;
 				}
+
 			default:
 				fprintf(stderr, "Unknown format starting at: %s\n", --p);
 				exit(1);



More information about the varnish-commit mailing list