dgaudet     98/02/01 14:05:44

  Modified:    conf     httpd.conf-dist httpd.conf-dist-win
               htdocs/manual new_features_1_3.html
               htdocs/manual/mod core.html
               src      CHANGES
               src/include http_config.h http_core.h httpd.h
               src/main http_core.c util.c util_script.c
               src/modules/standard mod_dir.c mod_imap.c mod_rewrite.c
                        mod_speling.c
  Log:
  Add the UseCanonicalName directive which controls how self-referential
  redirects are generated.  This was at least approved in spirit by a
  handful of folks two weeks ago.  The default should be no behaviour
  change.
  
  This changes the prototype of construct_url(), and adds two new
  API functions: get_server_name() and get_server_port().  So the
  MODULE_MAGIC_NUMBER has been bumped.
  
  PR:             315, 459, 485, 1433
  Submitted by:   Michael Douglass <[EMAIL PROTECTED]>, Dean Gaudet
  
  Revision  Changes    Path
  1.19      +8 -0      apache-1.3/conf/httpd.conf-dist
  
  Index: httpd.conf-dist
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/conf/httpd.conf-dist,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- httpd.conf-dist   1997/12/22 21:39:58     1.18
  +++ httpd.conf-dist   1998/02/01 22:05:26     1.19
  @@ -92,6 +92,14 @@
   
   #ServerName new.host.name
   
  +# UseCanonicalName:  (new for 1.3)  With this setting turned on, whenever
  +# Apache needs to construct a self-referencing URL (a url that refers back
  +# to the server the response is coming from) it will use ServerName and
  +# Port to form a "canonical" name.  With this setting off, Apache will
  +# use the hostname:port that the client supplied, when possible.  This
  +# also affects SERVER_NAME and SERVER_PORT in CGIs.
  +UseCanonicalName on
  +
   # CacheNegotiatedDocs: By default, Apache sends Pragma: no-cache with each
   # document that was negotiated on the basis of content. This asks proxy
   # servers not to cache the document. Uncommenting the following line disables
  
  
  
  1.8       +8 -0      apache-1.3/conf/httpd.conf-dist-win
  
  Index: httpd.conf-dist-win
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/conf/httpd.conf-dist-win,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- httpd.conf-dist-win       1997/11/21 15:39:32     1.7
  +++ httpd.conf-dist-win       1998/02/01 22:05:27     1.8
  @@ -79,6 +79,14 @@
   
   #ServerName new.host.name
   
  +# UseCanonicalName:  (new for 1.3)  With this setting turned on, whenever
  +# Apache needs to construct a self-referencing URL (a url that refers back
  +# to the server the response is coming from) it will use ServerName and
  +# Port to form a "canonical" name.  With this setting off, Apache will
  +# use the hostname:port that the client supplied, when possible.  This
  +# also affects SERVER_NAME and SERVER_PORT in CGIs.
  +UseCanonicalName on
  +
   # CacheNegotiatedDocs: By default, Apache sends Pragma: no-cache with each
   # document that was negotiated on the basis of content. This asks proxy
   # servers not to cache the document. Uncommenting the following line disables
  
  
  
  1.41      +19 -0     apache-1.3/htdocs/manual/new_features_1_3.html
  
  Index: new_features_1_3.html
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/new_features_1_3.html,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- new_features_1_3.html     1998/01/30 09:35:54     1.40
  +++ new_features_1_3.html     1998/02/01 22:05:28     1.41
  @@ -480,6 +480,15 @@
       also some debugging support to ensure code uses them properly.
       See <code>src/CHANGES</code> for more information.
   
  +    <li><strong><code>construct_url</code></strong><br>
  +    The function prototype for this changed from taking a
  +    <code>server_rec *</code> to taking a <code>request_rec *</code>.
  +
  +    <li><strong><code>get_server_name</code>, 
<code>get_server_port</code></strong><br>
  +    These are wrappers which deal with the
  +    <a href="mod/core.html#usecanonicalname">UseCanonicalName</a> directive
  +    when retrieving the server name and port for a request.
  +
       </UL>
   
    <LI><STRONG>Year-2000 Improvements</STRONG>
  @@ -518,6 +527,16 @@
     to tell which server produced the error message, especially in a proxy
     chain (often found in intranet environments).
    </LI>
  +
  + <li><strong>New <samp><a 
href="mod/core.html#usecanonicalname">UseCanonicalName</a></samp> 
directive</strong>
  +  <br>
  +  This directive gives control over how Apache creates self-referential URLs.
  +  Previously Apache would always use the <a href="mod/core.html#servername">
  +  ServerName</a> and <a href="mod/core.html#port">Port</a> directives to
  +  construct a "canonical" name for the server.  With <samp>UseCanonicalName
  +  off</samp> Apache will use the hostname and port supplied by the client,
  +  if available.
  + </li>
   </UL>
   
   <!--#include virtual="footer.html" -->
  
  
  
  1.96      +63 -4     apache-1.3/htdocs/manual/mod/core.html
  
  Index: core.html
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/core.html,v
  retrieving revision 1.95
  retrieving revision 1.96
  diff -u -r1.95 -r1.96
  --- core.html 1998/01/30 09:48:47     1.95
  +++ core.html 1998/02/01 22:05:29     1.96
  @@ -79,6 +79,7 @@
   <LI><A HREF="#startservers">StartServers</A>
   <LI><A HREF="#threadsperchild">ThreadsPerChild</A>
   <LI><A HREF="#timeout">TimeOut</A>
  +<LI><A HREF="#usecanonicalname">UseCanonicalName</A>
   <LI><A HREF="#user">User</A>
   <LI><A HREF="#virtualhost">&lt;VirtualHost&gt;</A>
   </UL>
  @@ -1788,7 +1789,9 @@
   sets the <CODE>SERVER_PORT</CODE> environment variable (for
   <A HREF="mod_cgi.html">CGI</A> and <A HREF="mod_include.html">SSI</A>),
   and is used when the server must generate a URL that refers to itself
  -(for example when creating an external redirect to itself).
  +(for example when creating an external redirect to itself).  This
  +behaviour is modified by
  +<a href="#usecanonicalname">UseCanonicalName</a>.
   </UL>
   
   In no event does a Port setting affect
  @@ -1798,7 +1801,8 @@
   The primary behaviour of Port should be considered to be similar to that of
   the <A HREF="#servername">ServerName</A> directive.  The ServerName
   and Port together specify what you consider to be the <EM>canonical</EM>
  -address of the server.<P>
  +address of the server.
  +(See also <a href="#usecanonicalname">UseCanonicalName</a>.)<P>
   
   Port 80 is one of Unix's special ports. All ports numbered
   below 1024 are reserved for system use, i.e. regular (non-root) users cannot
  @@ -2186,8 +2190,10 @@
   <BLOCKQUOTE><CODE>ServerName www.wibble.com</CODE></BLOCKQUOTE>
   would be used if the canonical (main) name of the actual machine
   were <CODE>monster.wibble.com</CODE>.<P>
  -<P><STRONG>See Also</STRONG>:
  -<A HREF="../dns-caveats.html">DNS Issues</A></P>
  +<P><STRONG>See Also</STRONG>:<br>
  +<A HREF="../dns-caveats.html">DNS Issues</A><br>
  +<A HREF="#usecanonicalname">UseCanonicalName</A><br>
  +</P>
   <HR>
   
   <H2><A name="serverpath">ServerPath directive</A></H2>
  @@ -2432,6 +2438,59 @@
   a packet is sent.
   
   <P><HR>
  +
  +<H2><A name="usecanonicalname">UseCanonicalName directive</A></H2>
  +<!--%plaintext &lt;?INDEX {\tt UseCanonicalName} directive&gt; -->
  +<A HREF="directive-dict.html#Syntax" REL="Help">
  +<STRONG>Syntax:</STRONG></A> UseCanonicalName <EM>on|off</EM><BR>
  +<A HREF="directive-dict.html#Default" REL="Help">
  +<STRONG>Default:</STRONG></A> <CODE>UseCanonicalName on</CODE><BR>
  +<A HREF="directive-dict.html#Context" REL="Help">
  +<STRONG>Context:</STRONG></A> server config, virtual host, directory, 
.htaccess<BR>
  +<A HREF="directive-dict.html#Override" REL="Help">
  +<STRONG>Override:</STRONG></A> AuthConfig<BR>
  +<A HREF="directive-dict.html#Compatibility" REL="Help">
  +<STRONG>Compatibility:</STRONG></A> UseCanonicalName is only available in 
Apache 1.3 and later<P>
  +
  +In many situations Apache has to construct a <i>self-referential</i>
  +URL.  That is, a URL which refers back to the same server.
  +With <code>UseCanonicalName on</code> (and in all versions prior to
  +1.3) Apache will use the <a href="#servername">ServerName</a> and <a
  +href="#port">Port</a> directives to construct a canonical name for the
  +server.  This name is used in all self-referential URLs, and for the
  +values of <code>SERVER_NAME</code> and <code>SERVER_PORT</code> in CGIs.
  +
  +<p>With <code>UseCanonicalName off</code> Apache will form
  +self-referential URLs using the hostname and port supplied
  +by the client if any are supplied (otherwise it will use the
  +canonical name).  These values are the same that are used to
  +implement <a href="../vhosts/name-based.html">name based virtual
  +hosts</a>, and are available with the same clients.  The CGI variables
  +<code>SERVER_NAME</code> and <code>SERVER_PORT</code> will be constructed
  +from the client supplied values as well.
  +
  +<p>An example where this may be useful is on an intranet server where
  +you have users connecting to the machine using short names such as
  +<code>www</code>.  You'll notice that if the users type a shortname,
  +and a URL which is a directory, such as <code>http://www/splat</code>,
  +<i>without the trailing slash</i> then Apache will redirect them to
  +<code>http://www.domain.com/splat/</code>.  If you have authentication
  +enabled, this will cause the user to have to reauthenticate twice (once
  +for <code>www</code> and once again for <code>www.domain.com</code>).
  +But if <code>UseCanonicalName</code> is set off, then Apache will redirect
  +to <code>http://www/splat/</code>.
  +
  +<p><b>Warning:</b> if CGIs make assumptions about the values of
  +<code>SERVER_NAME</code> they may be broken by this option.  The client
  +is essentially free to give whatever value they want as a hostname.
  +But if the CGI is only using <code>SERVER_NAME</code> to construct
  +self-referential URLs then it should be just fine.
  +
  +<p><strong>See also:</strong>
  +<a href="#servername">ServerName</a>,
  +<a href="#port">Port</a>
  +
  +<p><hr>
   
   <H2><A name="user">User directive</A></H2>
   <!--%plaintext &lt;?INDEX {\tt User} directive&gt; -->
  
  
  
  1.612     +7 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.611
  retrieving revision 1.612
  diff -u -r1.611 -r1.612
  --- CHANGES   1998/02/01 16:35:42     1.611
  +++ CHANGES   1998/02/01 22:05:31     1.612
  @@ -1,4 +1,11 @@
   Changes with Apache 1.3b4
  +  
  +  *) There are many cases where users do not want Apache to form
  +     self-referential urls using the "canonical" ServerName and Port.
  +     The new UseCanonicalName directive (default on), if set to off
  +     will cause Apache to use the client-supplied hostname and port.
  +     [Michael Douglass <[EMAIL PROTECTED]>, Dean Gaudet]
  +     PR#315, 459, 485, 1433
   
     *) Yet another rearrangement of the source tree.. now all the common
        header files are in the src/include directory.  The -Imain -Iap
  
  
  
  1.63      +1 -1      apache-1.3/src/include/http_config.h
  
  Index: http_config.h
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/include/http_config.h,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- http_config.h     1998/01/26 19:50:11     1.62
  +++ http_config.h     1998/02/01 22:05:33     1.63
  @@ -253,7 +253,7 @@
    * handle it back-compatibly, or at least signal an error).
    */
   
  -#define MODULE_MAGIC_NUMBER 19980126
  +#define MODULE_MAGIC_NUMBER 19980201
   #define STANDARD_MODULE_STUFF MODULE_MAGIC_NUMBER, -1, __FILE__, NULL
   
   /* Generic accessors for other modules to get at their own module-specific
  
  
  
  1.34      +9 -0      apache-1.3/src/include/http_core.h
  
  Index: http_core.h
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/include/http_core.h,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- http_core.h       1998/01/26 18:24:32     1.33
  +++ http_core.h       1998/02/01 22:05:34     1.34
  @@ -97,6 +97,13 @@
                                      */
   API_EXPORT(const char *) get_remote_host(conn_rec *conn, void *dir_config, 
int type);
   API_EXPORT(const char *) get_remote_logname(request_rec *r);
  +
  +/* Used for constructing self-referencing URLs, and things like SERVER_PORT,
  + * and SERVER_NAME.
  + */
  +API_EXPORT(char *) construct_url(pool *p, const char *uri, const request_rec 
*r);
  +API_EXPORT(const char *) get_server_name(const request_rec *r);
  +API_EXPORT(unsigned) get_server_port(const request_rec *r);
        
   /* Authentication stuff.  This is one of the places where compatibility
    * with the old config files *really* hurts; they don't discriminate at
  @@ -175,6 +182,8 @@
       int do_rfc1413 : 2;   /* See if client is advertising a username? */
   
       int content_md5 : 2;  /* calculate Content-MD5? */
  +
  +    unsigned use_canonical_name : 2; /* bit 0 = on/off, bit 1 = unset/set */
   
       /* since is_fnmatch(conf->d) was being called so frequently in
        * directory_walk() and its relatives, this field was created and
  
  
  
  1.179     +0 -2      apache-1.3/src/include/httpd.h
  
  Index: httpd.h
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/include/httpd.h,v
  retrieving revision 1.178
  retrieving revision 1.179
  diff -u -r1.178 -r1.179
  --- httpd.h   1998/01/30 03:36:57     1.178
  +++ httpd.h   1998/02/01 22:05:34     1.179
  @@ -803,8 +803,6 @@
   API_EXPORT(char *) escape_html(pool *p, const char *s);
   API_EXPORT(char *) construct_server(pool *p, const char *hostname,
                                    unsigned port);
  -API_EXPORT(char *) construct_url(pool *p, const char *path,
  -                              const server_rec *s);
   API_EXPORT(char *) escape_shell_cmd(pool *p, const char *s);
   
   API_EXPORT(int) count_dirs(const char *path);
  
  
  
  1.154     +70 -0     apache-1.3/src/main/http_core.c
  
  Index: http_core.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v
  retrieving revision 1.153
  retrieving revision 1.154
  diff -u -r1.153 -r1.154
  --- http_core.c       1998/01/30 19:30:34     1.153
  +++ http_core.c       1998/02/01 22:05:36     1.154
  @@ -118,6 +118,8 @@
   
       conf->content_md5 = 2;
   
  +    conf->use_canonical_name = 1 | 2;        /* 2 = unset, default on */
  +
       conf->hostname_lookups = HOSTNAME_LOOKUP_UNSET;
       conf->do_rfc1413 = DEFAULT_RFC1413 | 2;  /* set bit 1 to indicate 
default */
       conf->satisfy = SATISFY_NOSPEC;
  @@ -190,6 +192,9 @@
        conf->hostname_lookups = new->hostname_lookups;
       if ((new->do_rfc1413 & 2) == 0) conf->do_rfc1413 = new->do_rfc1413;
       if ((new->content_md5 & 2) == 0) conf->content_md5 = new->content_md5;
  +    if ((new->use_canonical_name & 2) == 0) {
  +     conf->use_canonical_name = new->use_canonical_name;
  +    }
   
   #ifdef RLIMIT_CPU
       if (new->limit_cpu) conf->limit_cpu = new->limit_cpu;
  @@ -563,6 +568,59 @@
        return NULL;
   }
   
  +/* There are two options regarding what the "name" of a server is.  The
  + * "canonical" name as defined by ServerName and Port, or the "client's
  + * name" as supplied by a possible Host: header or full URI.  We never
  + * trust the port passed in the client's headers, we always use the
  + * port of the actual socket.
  + */
  +API_EXPORT(const char *) get_server_name(const request_rec *r)
  +{
  +    core_dir_config *d =
  +      (core_dir_config *)get_module_config(r->per_dir_config, &core_module);
  +    
  +    if (d->use_canonical_name & 1) {
  +     return r->server->server_hostname;
  +    }
  +    return r->hostname ? r->hostname : r->server->server_hostname;
  +}
  +
  +API_EXPORT(unsigned) get_server_port(const request_rec *r)
  +{
  +    core_dir_config *d =
  +      (core_dir_config *)get_module_config(r->per_dir_config, &core_module);
  +    
  +    if (d->use_canonical_name & 1) {
  +     return r->server->port;
  +    }
  +    return r->hostname ? ntohs(r->connection->local_addr.sin_port)
  +                     : r->server->port;
  +}
  +
  +API_EXPORT(char *) construct_url(pool *p, const char *uri, const request_rec 
*r)
  +{
  +    unsigned port;
  +    const char *host;
  +    char portnum[22];
  +    core_dir_config *d =
  +      (core_dir_config *)get_module_config(r->per_dir_config, &core_module);
  +
  +    if (d->use_canonical_name & 1) {
  +     port = r->server->port;
  +     host = r->server->server_hostname;
  +    }
  +    else {
  +     port = r->hostname ? ntohs(r->connection->local_addr.sin_port)
  +                         : r->server->port;
  +     host = r->hostname ? r->hostname : r->server->server_hostname;
  +    }
  +    if (port == DEFAULT_PORT) {
  +     return pstrcat(p, "http://";, host, uri, NULL);
  +    }
  +    ap_snprintf(portnum, sizeof(portnum), "%u", port);
  +    return pstrcat(p, "http://";, host, ":", portnum, uri, NULL);
  +}
  +
   /*****************************************************************
    *
    * Commands... this module handles almost all of the NCSA httpd.conf
  @@ -1369,6 +1427,17 @@
       return NULL;
   }
   
  +const char *set_use_canonical_name (cmd_parms *cmd, core_dir_config *d, int 
arg)
  +{
  +    const char *err = check_cmd_context(cmd, NOT_IN_LIMIT);
  +
  +    if (err != NULL)
  +     return err;
  +    
  +    d->use_canonical_name = arg != 0;
  +    return NULL;
  +}
  +
   const char *set_daemons_to_start (cmd_parms *cmd, void *dummy, char *arg) {
       const char *err = check_cmd_context(cmd, GLOBAL_ONLY);
       if (err != NULL) return err;
  @@ -1763,6 +1832,7 @@
   { "KeepAlive", set_keep_alive, NULL, RSRC_CONF, TAKE1, "Whether persistent 
connections should be On or Off" },
   { "IdentityCheck", set_idcheck, NULL, RSRC_CONF|ACCESS_CONF, FLAG, "Enable 
identd (RFC 1413) user lookups - SLOW" },
   { "ContentDigest", set_content_md5, NULL, RSRC_CONF|ACCESS_CONF|OR_AUTHCFG, 
FLAG, "whether or not to send a Content-MD5 header with each request" },
  +{ "UseCanonicalName", set_use_canonical_name, NULL, 
RSRC_CONF|ACCESS_CONF|OR_AUTHCFG, FLAG, "whether or not to always use the 
canonical ServerName : Port when constructing URLs" },
   { "StartServers", set_daemons_to_start, NULL, RSRC_CONF, TAKE1, "Number of 
child processes launched at server startup" },
   { "MinSpareServers", set_min_free_servers, NULL, RSRC_CONF, TAKE1, "Minimum 
number of idle children, to handle request spikes" },
   { "MaxSpareServers", set_max_free_servers, NULL, RSRC_CONF, TAKE1, "Maximum 
number of idle children" },
  
  
  
  1.92      +0 -7      apache-1.3/src/main/util.c
  
  Index: util.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/util.c,v
  retrieving revision 1.91
  retrieving revision 1.92
  diff -u -r1.91 -r1.92
  --- util.c    1998/01/31 23:55:41     1.91
  +++ util.c    1998/02/01 22:05:37     1.92
  @@ -1084,13 +1084,6 @@
       }
   }
   
  -API_EXPORT(char *) construct_url(pool *p, const char *uri, const server_rec 
*s)
  -{
  -    return pstrcat(p, "http://";,
  -                construct_server(p, s->server_hostname, s->port),
  -                uri, NULL);
  -}
  -
   #define c2x(what,where) sprintf(where,"%%%02x",(unsigned char)what)
   
   /*
  
  
  
  1.94      +2 -3      apache-1.3/src/main/util_script.c
  
  Index: util_script.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/util_script.c,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- util_script.c     1998/01/26 19:50:14     1.93
  +++ util_script.c     1998/02/01 22:05:38     1.94
  @@ -221,8 +221,6 @@
            table_setn(e, http2env(r->pool, hdrs[i].key), hdrs[i].val);
       }
   
  -    ap_snprintf(port, sizeof(port), "%u", s->port);
  -
       if (!(env_path = getenv("PATH")))
        env_path = DEFAULT_PATH;
   
  @@ -237,7 +235,8 @@
   
       table_setn(e, "PATH", env_path);
       table_setn(e, "SERVER_SOFTWARE", SERVER_VERSION);
  -    table_setn(e, "SERVER_NAME", s->server_hostname);
  +    table_setn(e, "SERVER_NAME", get_server_name(r));
  +    ap_snprintf(port, sizeof(port), "%u", get_server_port(r));
       table_setn(e, "SERVER_PORT", pstrdup(r->pool,port));
       table_setn(e, "REMOTE_HOST",
           pstrdup(r->pool, get_remote_host(c, r->per_dir_config, 
REMOTE_NAME)));
  
  
  
  1.46      +1 -1      apache-1.3/src/modules/standard/mod_dir.c
  
  Index: mod_dir.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_dir.c,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- mod_dir.c 1998/01/26 19:50:19     1.45
  +++ mod_dir.c 1998/02/01 22:05:40     1.46
  @@ -118,7 +118,7 @@
                               "/", NULL);
   
           table_setn(r->headers_out, "Location",
  -                  construct_url(r->pool, ifile, r->server));
  +                  construct_url(r->pool, ifile, r));
           return HTTP_MOVED_PERMANENTLY;
       }
   
  
  
  
  1.41      +2 -2      apache-1.3/src/modules/standard/mod_imap.c
  
  Index: mod_imap.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_imap.c,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- mod_imap.c        1998/01/26 19:50:20     1.40
  +++ mod_imap.c        1998/02/01 22:05:40     1.41
  @@ -406,7 +406,7 @@
       char *my_base;
   
       if (!strcasecmp(value, "map") || !strcasecmp(value, "menu")) {
  -     return construct_url(r->pool, r->uri, r->server);
  +     return construct_url(r->pool, r->uri, r);
       }
   
       if (!strcasecmp(value, "nocontent") || !strcasecmp(value, "error")) {
  @@ -447,7 +447,7 @@
            return pstrdup(r->pool, value); /* no base: use what is given */
           }
        /* no base, no value: pick a simple default */
  -     return construct_url(r->pool, "/", r->server);
  +     return construct_url(r->pool, "/", r);
       }
   
       /* must be a relative URL to be combined with base */
  
  
  
  1.65      +4 -4      apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- mod_rewrite.c     1998/01/28 11:33:30     1.64
  +++ mod_rewrite.c     1998/02/01 22:05:41     1.65
  @@ -2945,7 +2945,7 @@
   
   static char *lookup_variable(request_rec *r, char *var)
   {
  -    char *result;
  +    const char *result;
       char resultbuf[LONG_STRING_LEN];
       time_t tc;
       struct tm *tm;
  @@ -3035,10 +3035,10 @@
           result = r->server->server_admin;
       }
       else if (strcasecmp(var, "SERVER_NAME") == 0) {
  -        result = r->server->server_hostname;
  +     result = get_server_name(r);
       }
       else if (strcasecmp(var, "SERVER_PORT") == 0) {
  -        ap_snprintf(resultbuf, sizeof(resultbuf), "%u", r->server->port);
  +        ap_snprintf(resultbuf, sizeof(resultbuf), "%u", get_server_port(r));
           result = resultbuf;
       }
       else if (strcasecmp(var, "SERVER_PROTOCOL") == 0) {
  @@ -3128,7 +3128,7 @@
               rewritelog(r, 5, "lookahead: path=%s var=%s -> val=%s", \
                          r->filename, var+5, result); \
               /* return ourself to prevent re-pstrdup */ \
  -            return result; \
  +            return (char *)result; \
           }
   
       /* look-ahead for parameter through URI-based sub-request */
  
  
  
  1.13      +1 -1      apache-1.3/src/modules/standard/mod_speling.c
  
  Index: mod_speling.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_speling.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- mod_speling.c     1998/01/26 19:50:24     1.12
  +++ mod_speling.c     1998/02/01 22:05:42     1.13
  @@ -339,7 +339,7 @@
                              r->path_info, NULL);
   
               table_setn(r->headers_out, "Location",
  -                      construct_url(r->pool, nuri, r->server));
  +                      construct_url(r->pool, nuri, r));
   
               aplog_error(APLOG_MARK, APLOG_NOERRNO | APLOG_INFO, r->server,
                           ref ? "Fixed spelling: %s to %s from %s"
  
  
  

Reply via email to