Patch to close out Bugz 24483 for 1.3.29... basically
a backport of the 2.0 patch in the PR.

Index: src/modules/standard/mod_usertrack.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_usertrack.c,v
retrieving revision 1.58
diff -u -r1.58 mod_usertrack.c
--- src/modules/standard/mod_usertrack.c        1 Jan 2004 13:32:56 -0000       1.58
+++ src/modules/standard/mod_usertrack.c        12 Jan 2004 14:13:50 -0000
@@ -286,10 +286,29 @@
     return;
 }

-/* dcfg->regexp is "^cookie_name=([^;]+)|;[ \t]+cookie_name=([^;]+)",
- * which has three subexpressions, $0..$2 */
+/*
+ * dcfg->regexp is "^cookie_name=([^;]+)|;[ \t]+cookie_name=([^;]+)",
+ * which has three subexpressions, $0..$2
+ */
 #define NUM_SUBS 3

+static void set_and_comp_regexp(cookie_dir_rec *dcfg,
+                                pool *p,
+                                const char *cookie_name)
+{
+    /*
+     * The goal is to end up with this regexp,
+     * ^cookie_name=([^;]+)|;[\t]+cookie_name=([^;]+)
+     * with cookie_name obviously substituted either
+     * with the real cookie name set by the user in httpd.conf,
+     * or with the default COOKIE_NAME.
+     */
+    dcfg->regexp_string = ap_pstrcat(p, "^", cookie_name,
+                                     "=([^;]+)|;[ \t]+", cookie_name,
+                                     "=([^;]+)", NULL);
+    dcfg->regexp = ap_pregcomp(p, dcfg->regexp_string, REG_EXTENDED);
+}
+
 static int spot_cookie(request_rec *r)
 {
     cookie_dir_rec *dcfg = ap_get_module_config(r->per_dir_config,
@@ -353,6 +372,11 @@
     dcfg->style = CT_UNSET;
     dcfg->format = CF_NORMAL;
     dcfg->enabled = 0;
+    /*
+     * In case the user does not use the CookieName directive,
+     * we need to compile the regexp for the default cookie name.
+     */
+    set_and_comp_regexp(dcfg, p, COOKIE_NAME);
     return dcfg;
 }

@@ -437,18 +461,10 @@
 {
     cookie_dir_rec *dcfg = (cookie_dir_rec *) mconfig;

-    /* The goal is to end up with this regexp,
-     * ^cookie_name=([^;]+)|;[ \t]+cookie_name=([^;]+)
-     * with cookie_name
-     * obviously substituted with the real cookie name set by the
-     * user in httpd.conf. */
-    dcfg->regexp_string = ap_pstrcat(cmd->pool, "^", name,
-                                     "=([^;]+)|;[ \t]+", name,
-                                     "=([^;]+)", NULL);
-
     dcfg->cookie_name = ap_pstrdup(cmd->pool, name);

- dcfg->regexp = ap_pregcomp(cmd->pool, dcfg->regexp_string, REG_EXTENDED);
+ set_and_comp_regexp(dcfg, cmd->pool, name);
+
if (dcfg->regexp == NULL) {
return "Regular expression could not be compiled.";
}




Reply via email to