]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
util_script: Make REDIRECT_URL a complete URL (where set).
authorGraham Leggett <minfrin@apache.org>
Sat, 26 Sep 2015 22:44:23 +0000 (22:44 +0000)
committerGraham Leggett <minfrin@apache.org>
Sat, 26 Sep 2015 22:44:23 +0000 (22:44 +0000)
PR 57785

Submitted by: niq
Reviewed by: jim, minfrin

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1705496 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
server/util_script.c

diff --git a/CHANGES b/CHANGES
index 562b1e0ee0caa89a5c6d8a490cc4734c825703f8..3155c1a34382fe483c92110be97dd4b7ea3fcfb5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,8 @@
 
 Changes with Apache 2.4.17
 
+  *) core/util_script: make REDIRECT_URL a full URL.  PR 57785. [Nick Kew]
+
   *) MPMs: Support SO_REUSEPORT to create multiple duplicated listener
      records for scalability. [Yingqi Lu <yingqi.lu@intel.com>,
      Jeff Trawick, Jim Jagielski, Yann Ylavic]
diff --git a/STATUS b/STATUS
index 41ce371fc3441c038967b57d1af0e3650c4d6084..8e6c179a03c6cbd5acda0f5fb9fad2a9079e7eca 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -109,11 +109,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-  *) util_script: Make REDIRECT_URL a complete URL (where set).
-     PR 57785
-     trunk: http://svn.apache.org/viewvc?view=revision&revision=1677702
-     2.4.x: trunk patch applies.
-     +1: niq, jim, minfrin
  
 
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
index a8d9ebc4f015194458d5f826c251c643c126c679..14991cd0ff21ba1378f379309ef4f380c05a5c2a 100644 (file)
@@ -282,12 +282,25 @@ AP_DECLARE(void) ap_add_common_vars(request_rec *r)
     /* Apache custom error responses. If we have redirected set two new vars */
 
     if (r->prev) {
+        /* PR#57785: reconstruct full URL here */
+        apr_uri_t *uri = &r->prev->parsed_uri;
+        if (!uri->scheme) {
+            uri->scheme = (char*)ap_http_scheme(r->prev);
+        }
+        if (!uri->port) {
+            uri->port = ap_get_server_port(r->prev);
+            uri->port_str = apr_psprintf(r->pool, "%u", uri->port);
+        }
+        if (!uri->hostname) {
+            uri->hostname = (char*)ap_get_server_name_for_url(r->prev);
+        }
         add_unless_null(e, "REDIRECT_QUERY_STRING", r->prev->args);
-        add_unless_null(e, "REDIRECT_URL", r->prev->uri);
+        add_unless_null(e, "REDIRECT_URL",
+                        apr_uri_unparse(r->pool, uri, 0));
     }
 
     if (e != r->subprocess_env) {
-      apr_table_overlap(r->subprocess_env, e, APR_OVERLAP_TABLES_SET);
+        apr_table_overlap(r->subprocess_env, e, APR_OVERLAP_TABLES_SET);
     }
 }