[3.0] 4aa876e works
Lasse Karstensen
lkarsten at varnish-cache.org
Thu Nov 3 19:02:24 CET 2011
commit 4aa876ee8fdfe496491fc0d5260071dbc5e0ce88
Author: Lasse Karstensen <lasse at varnish-software.com>
Date: Mon Oct 31 10:23:40 2011 +0100
works
diff --git a/bin/varnishncsa/varnishncsa.c b/bin/varnishncsa/varnishncsa.c
index bb954eb..3591eb5 100644
--- a/bin/varnishncsa/varnishncsa.c
+++ b/bin/varnishncsa/varnishncsa.c
@@ -57,6 +57,8 @@
* TODO: - Maybe rotate/compress log
*/
+#define MAX_VCLLOG_KEYLENGTH 100
+
#include "config.h"
#include <ctype.h>
@@ -726,9 +728,6 @@ h_ncsa(void *priv, enum VSL_tag_e tag, unsigned fd,
const char *h, *tmp;
char fname[100], type;
- // maybe
- const char *key2;
-
tmp = p;
type = 0;
while (*tmp != '\0' && *tmp != '}')
@@ -739,7 +738,6 @@ 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':
@@ -765,53 +763,27 @@ 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;
}
- case 'l':
- // std.log("Foo: bar")
- // %{Foo}l
- printf("case l was hit with fname: %s\n", fname);
- // Extract "Foo" from fname
- char *delim;
- char keyword[100];
- char *kwptr;
- char *startpos;
-
- // keyword = "init";
-
- delim = strchr(fname, ':');
- printf(": found at %d\n", delim - fname);
- // startpos = delim - fname;
-
- // buffer overflow all the way.
- startpos = strncpy(keyword, delim+1, sizeof keyword);
- printf("meh");
- printf("startpos is: %d\n", startpos);
-
- printf("rest is: %s\n", delim+1); // startpos);
- printf("keyword is: %s\n", keyword);
-
- //keyword = delim + 1;
-
-// printf("split2: %d\n", *split2);
-
- // key2 = trimline(fname, split2);
- //&&printf("key: %s\n", key2);
- //keyword = strcpy("bar"; // trimline(fname+1, split);
- //keyword = "foo";
-
- //strcpy(key2, "bar"); // trimline(fname+1, split);
- h = vcl_log(lp, keyword);
- VSB_cat(os, h ? h : "-");
- p = tmp;
- break;
-///////
+ case 'L': {
+ char *delim;
+ char keyword[MAX_VCLLOG_KEYLENGTH];
+ char *startpos;
+
+ // Extract "key" from fname
+ delim = strchr(fname, ':');
+ if (delim == NULL) {
+ break;
+ }
+ startpos = strncpy(keyword, delim+1, MAX_VCLLOG_KEYLENGTH);
+
+ h = vcl_log(lp, keyword);
+ VSB_cat(os, h ? h : "-");
+ p = tmp;
+ break;
+ }
default:
- fprintf(stderr, "Unknown format starting at: %s\n", --p);
+ fprintf(stderr, "Unknown extended format starting at: %s\n", --p);
exit(1);
}
break;
@@ -821,8 +793,8 @@ h_ncsa(void *priv, enum VSL_tag_e tag, unsigned fd,
default:
fprintf(stderr, "Unknown format starting at: %s\n", --p);
exit(1);
- }
- }
+ } // switch
+ } // for
VSB_putc(os, '\n');
/* flush the stream */
More information about the varnish-commit
mailing list