commit ef74274048873a930f8bdf31cb16f888953b985c
Author: Thomas Eckert <Thomas.Eckert@Sophos.com>
Date:   Wed Apr 3 15:26:21 2013 +0200

    Added default value for second argument of ProxyPassReverseCookieDomain
    
    If the second argument is left blank it will default to the hostname
    of the original client request.

diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c
index 0bd3a6c..9a82a51 100644
--- a/modules/proxy/mod_proxy.c
+++ b/modules/proxy/mod_proxy.c
@@ -2248,7 +2248,7 @@ static const command_rec proxy_cmds[] =
      "a virtual path and a URL for reverse proxy behaviour"),
     AP_INIT_TAKE23("ProxyPassReverseCookiePath", cookie_path, NULL,
        RSRC_CONF|ACCESS_CONF, "Path rewrite rule for proxying cookies"),
-    AP_INIT_TAKE23("ProxyPassReverseCookieDomain", cookie_domain, NULL,
+    AP_INIT_TAKE123("ProxyPassReverseCookieDomain", cookie_domain, NULL,
        RSRC_CONF|ACCESS_CONF, "Domain rewrite rule for proxying cookies"),
     AP_INIT_ITERATE("ProxyBlock", set_proxy_exclude, NULL, RSRC_CONF,
      "A list of names, hosts or domains to which the proxy will not connect"),
diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c
index d2a35dc..60e7d0f 100644
--- a/modules/proxy/proxy_util.c
+++ b/modules/proxy/proxy_util.c
@@ -1034,9 +1034,12 @@ PROXY_DECLARE(const char *) ap_proxy_cookie_reverse_map(request_rec *r,
             l2 = strlen(ent[i].fake);
             if ((ap_proxy_balancer_matches_domain(r, domainp, ent[i].fake) == 1) ||
                 (l1 >= l2 && strncasecmp(ent[i].fake, domainp, l2) == 0)) {
-                newdomain = ent[i].real;
-                ddiff = strlen(newdomain) - l1;
-                break;
+                char *real = ent[i].real;
+                if (real == NULL || real[0] == '\0')
+                  real = r->hostname;
+                newdomain = real;
+                ddiff = strlen(newdomain) - l1;
+                break;
             }
         }
     }
