dgaudet     98/02/20 17:18:29

  Modified:    src      CHANGES
               src/main http_protocol.c
  Log:
  Fix "http://host1"; without trailing /.
  
  Revision  Changes    Path
  1.645     +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.644
  retrieving revision 1.645
  diff -u -r1.644 -r1.645
  --- CHANGES   1998/02/21 00:50:39     1.644
  +++ CHANGES   1998/02/21 01:18:25     1.645
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3b6
   
  +  *) Fix problems with absoluteURIs.  [Dean Gaudet,
  +     Alvaro Martinez Echevarria <[EMAIL PROTECTED]>]
  +
     *) Fix multiple UserDir problem introduced during 1.3b4-dev. [Dean Gaudet]
   
     *) ap_cpystrn() had an off-by-1 error.
  
  
  
  1.190     +10 -4     apache-1.3/src/main/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/http_protocol.c,v
  retrieving revision 1.189
  retrieving revision 1.190
  diff -u -r1.189 -r1.190
  --- http_protocol.c   1998/02/18 11:59:20     1.189
  +++ http_protocol.c   1998/02/21 01:18:28     1.190
  @@ -628,6 +628,7 @@
       char *host, *proto, *slash, *colon;
       int plen;
       unsigned port;
  +    const char *res_uri;
   
       /* This routine parses full URLs, if they match the server */
       proto = http_method(r);
  @@ -664,15 +665,20 @@
           return uri;
   
       /* Save it for later use */
  -    r->hostname = pstrdup(r->pool, host);
  +    r->hostname = host;
       r->hostlen = plen + 3 + slash - host;
  +    res_uri = uri + r->hostlen;
  +    /* deal with "http://host"; */
  +    if (*res_uri == '\0') {
  +     res_uri = "/";
  +    }
   
       /* The easy cases first */
       if (!strcasecmp(host, r->server->server_hostname)) {
  -        return (uri + r->hostlen);
  +        return res_uri;
       }
       else if (!strcmp(host, inet_ntoa(r->connection->local_addr.sin_addr))) {
  -        return (uri + r->hostlen);
  +        return res_uri;
       }
       else {
           /* Now things get a bit trickier - check the IP address(es) of
  @@ -685,7 +691,7 @@
               for (n = 0; hp->h_addr_list[n] != NULL; n++) {
                   if (r->connection->local_addr.sin_addr.s_addr ==
                       (((struct in_addr *) (hp->h_addr_list[n]))->s_addr)) {
  -                    return (uri + r->hostlen);
  +                    return res_uri;
                   }
               }
           }
  
  
  

Reply via email to