]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: capture: extend the captures to support non-header keys
authorWilly Tarreau <w@1wt.eu>
Fri, 13 Jun 2014 14:11:48 +0000 (16:11 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 13 Jun 2014 14:32:48 +0000 (16:32 +0200)
This patch adds support for captures with no header name. The purpose
is to allow extra captures to be defined and logged along with the
header captures.

include/types/capture.h
src/proto_http.c

index e37cc483f93b14a22484e705b5a455fd1d23662e..cd8f2a782a713371d81e2fbf8462ceebd15e6183 100644 (file)
@@ -27,8 +27,8 @@
 
 struct cap_hdr {
     struct cap_hdr *next;
-    char *name;                                /* header name, case insensitive */
-    int namelen;                       /* length of the header name, to speed-up lookups */
+    char *name;                                /* header name, case insensitive, NULL if not header */
+    int namelen;                       /* length of the header name, to speed-up lookups, 0 if !name */
     int len;                           /* capture length, not including terminal zero */
     int index;                         /* index in the output array */
     struct pool_head *pool;            /* pool of pre-allocated memory area of (len+1) bytes */
index bd9b13af3b01f2f46f70b2df4e3d2b67535844db..082f1616deba3d5cef3208d2c804cd9a9e56c93f 100644 (file)
@@ -1029,7 +1029,7 @@ struct pool_head *pool2_uniqueid;
 
 /*
  * Capture headers from message starting at <som> according to header list
- * <cap_hdr>, and fill the <idx> structure appropriately.
+ * <cap_hdr>, and fill the <cap> pointers appropriately.
  */
 void capture_headers(char *som, struct hdr_idx *idx,
                     char **cap, struct cap_hdr *cap_hdr)
@@ -1054,7 +1054,7 @@ void capture_headers(char *som, struct hdr_idx *idx,
                        sov++;
                                
                for (h = cap_hdr; h; h = h->next) {
-                       if ((h->namelen == col - sol) &&
+                       if (h->namelen && (h->namelen == col - sol) &&
                            (strncasecmp(sol, h->name, h->namelen) == 0)) {
                                if (cap[h->index] == NULL)
                                        cap[h->index] =