I'm not sure this is the right approach, but returning a non-encoded URI certainly isn't. In particular, I wonder if the optimization of using unparsed_uri is good or whether the r->uri should be escaped. Again, diff is vs our local copy of 2.4.3. -tim Index: trunk/Apache/httpd/modules/dav/main/mod_dav.c =================================================================== --- trunk/Apache/httpd/modules/dav/main/mod_dav.c (revision 180429) +++ trunk/Apache/httpd/modules/dav/main/mod_dav.c (revision 180431) @@ -611,7 +611,9 @@ const char *body; if (locn == NULL) { - locn = r->uri; + locn = r->unparsed_uri; + } else { + locn = ap_escape_uri(r->pool, locn); } /* did the target resource already exist? */
A specific case of this may be <https://issues.apache.org/bugzilla/show_bug.cgi?id=54367> but all Location-returning commands have the issue.
A quick test against trunk/2.5 r1470683 shows that the bug still exists there and this patch still fixes it there.
Applied to trunk in r1476621.
Proposed for backport to v2.4 and v2.2.
Backported to v2.4.
I think this is fixed; see my comment in bug 54367.
See r1485721 for the backport in 2.4.x It was part of 2.4.5 See r1497121 for the backport in 2.2.x It was part of 2.2.25