[Remove entries to the current 2.0 section below, when backported]
+ *) mod_rewrite: Handle per-location rules when r->filename is unset.
+ Previously this would segfault or simply not match as expected,
+ depending on the platform. [Jeff Trawick]
+
*) Unix MPMs: Shut down the server more quickly when child processes are
slow to exit. [Joe Orton, Jeff Trawick]
* remember the current filename before rewriting for later check
* to prevent deadlooping because of internal redirects
* on final URL/filename which can be equal to the inital one.
+ * also, we'll restore original r->filename if we decline this
+ * request
*/
ofilename = r->filename;
+ if (r->filename == NULL) {
+ r->filename = apr_pstrdup(r->pool, r->uri);
+ rewritelog((r, 2, "init rewrite engine with requested uri %s",
+ r->filename));
+ }
+
/*
* now apply the rules ...
*/
* use the following internal redirection stuff because
* this would lead to a deadloop.
*/
- if (strcmp(r->filename, ofilename) == 0) {
+ if (ofilename != NULL && strcmp(r->filename, ofilename) == 0) {
rewritelog((r, 1, dconf->directory, "initial URL equal rewritten"
" URL: %s [IGNORING REWRITE]", r->filename));
return OK;
}
else {
rewritelog((r, 1, dconf->directory, "pass through %s", r->filename));
+ r->filename = ofilename;
return DECLINED;
}
}