Commit ef63a0d6 authored by Sander Temme's avatar Sander Temme
Browse files

Add optional 'scheme://' prefix to ServerName directive. For

     'https', mod_http returns "https" for the ap_hook_http_scheme and
     DEFAULT_HTTPS_PORT for ap_hook_default_port.  This fixes Redirect
     responses to requests for directories without a trailing slash
     when httpd runs behind a proxy or offload device that processes
     SSL.  It also enables support for Subversion in that
     configuration.  This change is completely backwards compatible
     and passes the perl-framework.  Minor mmn bump because I add a
     field to server_rec. 


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@399947 13f79535-47bb-0310-9956-ffa450edef68
parent 9600a2d2
Loading
Loading
Loading
Loading
+10 −1
Changes for CHANGES: 10 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -2,6 +2,15 @@
Changes with Apache 2.3.0
  [Remove entries to the current 2.0 and 2.2 section below, when backported]
  *) core, mod_http: add optional 'scheme://' prefix to ServerName directive. 
     For 'https', mod_http returns "https" for the ap_hook_http_scheme and
     DEFAULT_HTTPS_PORT for ap_hook_default_port.  This fixes Redirect
     responses to requests for directories without a trailing slash when
     httpd runs behind a proxy or offload device that processes SSL.  It
     also enables support for Subversion in that configuration.  This change is 
     completely backwards compatible and passes the perl-framework.  Minor
     mmn bump because I add a field to server_rec.  [Sander Temme]     
  *) mod_charset_lite: Bypass translation when the source and dest charsets
     are the same.  [Jeff Trawick]
@@ -139,7 +148,7 @@ Changes with Apache 2.2.1
     non-SSL request is processed for an SSL vhost (such as the
     "HTTP request received on SSL port" error message when an 400 
     ErrorDocument is configured, or if using "SSLEngine optional").
     PR 37791.  [Rüdiger Plüm, Joe Orton]
     PR 37791.  [Rüdiger Plüm, Joe Orton]
  *) SECURITY: CVE-2005-3352 (cve.mitre.org)
     mod_imagemap: Escape untrusted referer header before outputting
+2 −1
Changes for include/ap_mmn.h: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@
 * 20060110.2 (2.3.0-dev)  flush_packets and flush_wait members added to
 *                         proxy_server (minor)
 * 20060110.3 (2.3.0-dev)  added inreslist member to proxy_conn_rec (minor)
 * 20060110.4 (2.3.0-dev)  Added server_scheme member to server_rec (minor)
 */

#define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
@@ -127,7 +128,7 @@
#ifndef MODULE_MAGIC_NUMBER_MAJOR
#define MODULE_MAGIC_NUMBER_MAJOR 20060110
#endif
#define MODULE_MAGIC_NUMBER_MINOR 3                     /* 0...n */
#define MODULE_MAGIC_NUMBER_MINOR 4                     /* 0...n */

/**
 * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
+3 −0
Changes for include/httpd.h: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -1197,6 +1197,9 @@ struct server_rec {
    int limit_req_fieldsize;
    /** limit on number of request header fields  */
    int limit_req_fields; 

    /** The server request scheme for redirect responses */
    const char *server_scheme;
};

typedef struct core_output_filter_ctx {
+12 −0
Changes for modules/http/http_core.c: 12 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -99,11 +99,23 @@ static const command_rec http_cmds[] = {

static const char *http_scheme(const request_rec *r)
{
    /* 
     * The http module shouldn't return anything other than 
     * "http" (the default) or "https".
     */
    if (r->server->server_scheme &&
        (strcmp(r->server->server_scheme, "https") == 0))
        return "https";
    
    return "http";
}

static apr_port_t http_port(const request_rec *r)
{
    if (r->server->server_scheme &&
        (strcmp(r->server->server_scheme, "https") == 0))
        return DEFAULT_HTTPS_PORT;
    
    return DEFAULT_HTTP_PORT;
}

+2 −0
Changes for server/config.c: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -1855,6 +1855,7 @@ AP_CORE_DECLARE(const char *) ap_init_virtual_host(apr_pool_t *p,
    s->process = main_server->process;
    s->server_admin = NULL;
    s->server_hostname = NULL;
    s->server_scheme = NULL;
    s->error_fname = NULL;
    s->timeout = 0;
    s->keep_alive_timeout = 0;
@@ -1940,6 +1941,7 @@ static server_rec *init_server_config(process_rec *process, apr_pool_t *p)
    s->port = 0;
    s->server_admin = DEFAULT_ADMIN;
    s->server_hostname = NULL;
    s->server_scheme = NULL;
    s->error_fname = DEFAULT_ERRORLOG;
    s->loglevel = DEFAULT_LOGLEVEL;
    s->limit_req_line = DEFAULT_LIMIT_REQUEST_LINE;
Loading