rse         98/05/05 07:04:22

  Modified:    src/modules/standard mod_rewrite.c
  Log:
  Repair mod_rewrite - Lars' patch Brain comitted was totally broken.
  Thanks to Ben Hyde for immediately discovering this.
  
  Revision  Changes    Path
  1.103     +22 -15    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.102
  retrieving revision 1.103
  diff -u -r1.102 -r1.103
  --- mod_rewrite.c     1998/05/05 04:47:59     1.102
  +++ mod_rewrite.c     1998/05/05 14:04:20     1.103
  @@ -943,11 +943,13 @@
       void *sconf;
       rewrite_server_conf *conf;
       char *var;
  -    char *thisserver, *thisport, *thisurl;
  +    const char *thisserver;
  +    char *thisport, *thisurl;
       char buf[512];
       char docroot[512];
       char *cp, *cp2;
       struct stat finfo;
  +    unsigned int port;
       int n;
       int l;
   
  @@ -998,12 +1000,12 @@
        */
   
       /* add the canonical URI of this URL */
  -    thisserver = (char *) ap_get_server_name(r);
  -    thisport = (char *) ap_get_server_port(r);
  -    if (is_default_port((int) thisport, r))
  +    thisserver = ap_get_server_name(r);
  +    port = ap_get_server_port(r);
  +    if (is_default_port(port, r))
           thisport = "";
       else {
  -        ap_snprintf(buf, sizeof(buf), ":%u", thisport);
  +        ap_snprintf(buf, sizeof(buf), ":%u", port);
           thisport = buf;
       }
       thisurl = ap_table_get(r->subprocess_env, ENVVAR_SCRIPT_URL);
  @@ -2249,8 +2251,10 @@
   static void fully_qualify_uri(request_rec *r)
   {
       int i;
  -    char port[32];
  +    char buf[32];
  +    const char *thisserver;
       char *thisport;
  +    int port;
   
       i = strlen(r->filename);
       if (!(   (i > 7 && strncasecmp(r->filename, "http://";, 7)   == 0)
  @@ -2258,20 +2262,23 @@
             || (i > 9 && strncasecmp(r->filename, "gopher://";, 9) == 0)
             || (i > 6 && strncasecmp(r->filename, "ftp://";, 6)    == 0))) {
             
  -        thisport = (char *) ap_get_server_port(r);
  -        if (is_default_port((int) thisport,r))
  -            port[0] = '\0';
  -        else
  -            ap_snprintf(port, sizeof(port), ":%u", thisport);
  +        thisserver = ap_get_server_name(r);
  +        port = ap_get_server_port(r);
  +        if (is_default_port(port,r))
  +            thisport = "";
  +        else {
  +            ap_snprintf(buf, sizeof(buf), ":%u", port);
  +            thisport = buf;
  +        }
   
           if (r->filename[0] == '/')
               r->filename = ap_psprintf(r->pool, "%s://%s%s%s",
  -                        http_method(r), ap_get_server_name(r),
  -                        port, r->filename);
  +                        http_method(r), thisserver,
  +                        thisport, r->filename);
           else
               r->filename = ap_psprintf(r->pool, "%s://%s%s/%s",
  -                        http_method(r), ap_get_server_name(r),
  -                        port, r->filename);
  +                        http_method(r), thisserver,
  +                        thisport, r->filename);
       }
       return;
   }
  
  
  

Reply via email to