You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by nd...@apache.org on 2004/08/20 23:17:41 UTC
cvs commit: httpd-2.0/modules/mappers mod_rewrite.c mod_rewrite.h
nd 2004/08/20 14:17:41
Modified: . Tag: APACHE_2_0_BRANCH CHANGES STATUS
modules/mappers Tag: APACHE_2_0_BRANCH mod_rewrite.c
mod_rewrite.h
Log:
Fix confused map cache (with maps in different VHs using
the same name).
PR: 26462
Reviewed by: Jeff Trawick, Joe Orton
Revision Changes Path
No revision
No revision
1.988.2.325 +4 -0 httpd-2.0/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/httpd-2.0/CHANGES,v
retrieving revision 1.988.2.324
retrieving revision 1.988.2.325
diff -u -u -r1.988.2.324 -r1.988.2.325
--- CHANGES 19 Aug 2004 23:29:39 -0000 1.988.2.324
+++ CHANGES 20 Aug 2004 21:17:39 -0000 1.988.2.325
@@ -1,5 +1,9 @@
Changes with Apache 2.0.51
+ *) mod_rewrite no longer confuses the RewriteMap caches if
+ different maps defined in different virtual hosts use the
+ same map name. PR 26462. [Andr� Malo]
+
*) mod_setenvif: Remove "support" for Remote_User variable which
never worked at all. PR 25725. [Andr� Malo]
1.751.2.996 +1 -8 httpd-2.0/STATUS
Index: STATUS
===================================================================
RCS file: /home/cvs/httpd-2.0/STATUS,v
retrieving revision 1.751.2.995
retrieving revision 1.751.2.996
diff -u -u -r1.751.2.995 -r1.751.2.996
--- STATUS 20 Aug 2004 18:51:01 -0000 1.751.2.995
+++ STATUS 20 Aug 2004 21:17:39 -0000 1.751.2.996
@@ -212,13 +212,6 @@
server/config.c: r1.175
+1: nd
- *) mod_rewrite: Fix confused map cache (with maps in different VHs using
- the same name). PR 26462. (2.0 + 1.3)
- A patch for 1.3 is here (2.0 goes similar):
- <http://www.apache.org/~nd/mod_rewrite-confusion-1.3.patch>
- modules/mappers/mod_rewrite.c: r1.256
- +1: nd, trawick, jorton
-
*) mod_log_config: Cleanup log_header_out function to allow multiple headers
like Set-Cookie to be logged properly. PR 27787 (2.0 + 1.3)
modules/loggers/mod_log_config.c: r1.116
No revision
No revision
1.135.2.27 +19 -9 httpd-2.0/modules/mappers/mod_rewrite.c
Index: mod_rewrite.c
===================================================================
RCS file: /home/cvs/httpd-2.0/modules/mappers/mod_rewrite.c,v
retrieving revision 1.135.2.26
retrieving revision 1.135.2.27
diff -u -u -r1.135.2.26 -r1.135.2.27
--- mod_rewrite.c 11 Jun 2004 21:05:22 -0000 1.135.2.26
+++ mod_rewrite.c 20 Aug 2004 21:17:40 -0000 1.135.2.27
@@ -402,11 +402,15 @@
newmap->type = MAPTYPE_TXT;
newmap->datafile = a2+4;
newmap->checkfile = a2+4;
+ newmap->cachename = apr_psprintf(cmd->pool, "%pp:%s",
+ (void *)cmd->server, a1);
}
else if (strncmp(a2, "rnd:", 4) == 0) {
newmap->type = MAPTYPE_RND;
newmap->datafile = a2+4;
newmap->checkfile = a2+4;
+ newmap->cachename = apr_psprintf(cmd->pool, "%pp:%s",
+ (void *)cmd->server, a1);
}
else if (strncmp(a2, "dbm", 3) == 0) {
const char *ignored_fname;
@@ -414,6 +418,8 @@
apr_status_t rv;
newmap->type = MAPTYPE_DBM;
+ newmap->cachename = apr_psprintf(cmd->pool, "%pp:%s",
+ (void *)cmd->server, a1);
if (a2[3] == ':') {
newmap->dbmtype = "default";
@@ -453,12 +459,14 @@
apr_tokenize_to_argv(a2 + 4, &newmap->argv, cmd->pool);
newmap->datafile = NULL;
newmap->checkfile = newmap->argv[0];
+ newmap->cachename = NULL;
}
else if (strncmp(a2, "int:", 4) == 0) {
newmap->type = MAPTYPE_INT;
newmap->datafile = NULL;
newmap->checkfile = NULL;
+ newmap->cachename = NULL;
newmap->func = (char *(*)(request_rec *,char *))
apr_hash_get(mapfunc_hash, a2+4, strlen(a2+4));
if ((sconf->state == ENGINE_ENABLED) && (newmap->func == NULL)) {
@@ -470,6 +478,8 @@
newmap->type = MAPTYPE_TXT;
newmap->datafile = a2;
newmap->checkfile = a2;
+ newmap->cachename = apr_psprintf(cmd->pool, "%pp:%s",
+ (void *)cmd->server, a1);
}
newmap->fpin = NULL;
newmap->fpout = NULL;
@@ -2965,7 +2975,7 @@
"see error log");
return NULL;
}
- value = get_cache_string(cachep, s->name, CACHEMODE_TS,
+ value = get_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key);
if (value == NULL) {
rewritelog(r, 6, "cache lookup FAILED, forcing new "
@@ -2974,14 +2984,14 @@
lookup_map_txtfile(r, s->datafile, key)) != NULL) {
rewritelog(r, 5, "map lookup OK: map=%s key=%s[txt] "
"-> val=%s", s->name, key, value);
- set_cache_string(cachep, s->name, CACHEMODE_TS,
+ set_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key, value);
return value;
}
else {
rewritelog(r, 5, "map lookup FAILED: map=%s[txt] "
"key=%s", s->name, key);
- set_cache_string(cachep, s->name, CACHEMODE_TS,
+ set_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key, "");
return NULL;
}
@@ -3002,7 +3012,7 @@
"see error log");
return NULL;
}
- value = get_cache_string(cachep, s->name, CACHEMODE_TS,
+ value = get_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key);
if (value == NULL) {
rewritelog(r, 6,
@@ -3011,14 +3021,14 @@
lookup_map_dbmfile(r, s->datafile, s->dbmtype, key)) != NULL) {
rewritelog(r, 5, "map lookup OK: map=%s[dbm] key=%s "
"-> val=%s", s->name, key, value);
- set_cache_string(cachep, s->name, CACHEMODE_TS,
+ set_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key, value);
return value;
}
else {
rewritelog(r, 5, "map lookup FAILED: map=%s[dbm] "
"key=%s", s->name, key);
- set_cache_string(cachep, s->name, CACHEMODE_TS,
+ set_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key, "");
return NULL;
}
@@ -3062,7 +3072,7 @@
"see error log");
return NULL;
}
- value = get_cache_string(cachep, s->name, CACHEMODE_TS,
+ value = get_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key);
if (value == NULL) {
rewritelog(r, 6, "cache lookup FAILED, forcing new "
@@ -3071,13 +3081,13 @@
lookup_map_txtfile(r, s->datafile, key)) != NULL) {
rewritelog(r, 5, "map lookup OK: map=%s key=%s[txt] "
"-> val=%s", s->name, key, value);
- set_cache_string(cachep, s->name, CACHEMODE_TS,
+ set_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key, value);
}
else {
rewritelog(r, 5, "map lookup FAILED: map=%s[txt] "
"key=%s", s->name, key);
- set_cache_string(cachep, s->name, CACHEMODE_TS,
+ set_cache_string(cachep, s->cachename, CACHEMODE_TS,
st.mtime, key, "");
return NULL;
}
1.39.2.10 +4 -3 httpd-2.0/modules/mappers/mod_rewrite.h
Index: mod_rewrite.h
===================================================================
RCS file: /home/cvs/httpd-2.0/modules/mappers/mod_rewrite.h,v
retrieving revision 1.39.2.9
retrieving revision 1.39.2.10
diff -u -u -r1.39.2.9 -r1.39.2.10
--- mod_rewrite.h 9 Feb 2004 20:53:18 -0000 1.39.2.9
+++ mod_rewrite.h 20 Aug 2004 21:17:41 -0000 1.39.2.10
@@ -186,12 +186,13 @@
const char *dbmtype; /* dbm type for dbm map data files */
const char *checkfile; /* filename to check for map existence */
int type; /* the type of the map */
- apr_file_t *fpin; /* in file pointer for program maps */
- apr_file_t *fpout; /* out file pointer for program maps */
- apr_file_t *fperr; /* err file pointer for program maps */
+ apr_file_t *fpin; /* in file pointer for program maps */
+ apr_file_t *fpout; /* out file pointer for program maps */
+ apr_file_t *fperr; /* err file pointer for program maps */
char *(*func)(request_rec *, /* function pointer for internal maps */
char *);
char **argv;
+ char *cachename; /* name for the cache */
} rewritemap_entry;
typedef struct {