dgaudet     98/01/31 18:22:30

  Modified:    src      http_protocol.c
  Log:
  The last commit contained changes it shouldn't have.  Reverse them.
  
  Revision  Changes    Path
  1.129     +31 -112   apache-1.2/src/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.2/src/http_protocol.c,v
  retrieving revision 1.128
  retrieving revision 1.129
  diff -u -r1.128 -r1.129
  --- http_protocol.c   1998/01/30 09:55:41     1.128
  +++ http_protocol.c   1998/02/01 02:22:28     1.129
  @@ -548,15 +548,13 @@
       }
   }
   
  -const char *check_fulluri (request_rec *r, const char *uri)
  -{
  +const char *check_fulluri (request_rec *r, const char *uri) {
     char *name, *host;
     int i;
     unsigned port;
  -  server_addr_rec * sar;
   
     /* This routine parses full URLs, if they match the server */
  -  if (strncasecmp(uri, "http://";, 7)) return uri;
  +  if (strncmp(uri, "http://";, 7)) return uri;
     name = pstrdup(r->pool, uri + 7);
     
     /* Find the hostname, assuming a valid request */
  @@ -569,13 +567,7 @@
     else port = 80;
   
     /* Make sure ports patch */
  -  if (port != r->server->port) {
  -    for (sar = r->server->addrs; sar; sar = sar->next) {
  -      if( (sar->host_port == 0) || (port == sar->host_port) )
  -        break;
  -    }
  -    if (!sar) return uri;
  -  }
  +  if (port != r->server->port) return uri;
   
     /* Save it for later use */
     r->hostname = pstrdup(r->pool, host);
  @@ -686,29 +678,15 @@
       }
   }
   
  -#define ADDR_MATCHES(addr1,addr2) \
  -   (addr1.s_addr == addr2.s_addr) || (addr1.s_addr == htonl(INADDR_ANY)) \
  -        || (addr1.s_addr == DEFAULT_VHOST_ADDR)
  -
  -static void check_hostalias (request_rec *r)
  -{
  +static void check_hostalias (request_rec *r) {
     const char *hostname=r->hostname;
     char *host = getword(r->pool, &hostname, ':');     /* Get rid of port */
     unsigned port = (*hostname) ? atoi(hostname) : 80;
  -  server_rec *s = r->server;
  -  server_addr_rec * sar;
  +  server_rec *s;
     int l;
   
  -/* make sure the client can't spoof the port;
  - * have to check all possiblities to see if the server
  - * should be listening. */
  -  if (port != r->server->port) {
  -    for (sar = s->addrs; sar; sar = sar->next) {
  -      if ( (port == sar->host_port) || (sar->host_port == 0) )
  -        break;
  -    }
  -    if (!sar) return;
  -  }
  +  if (port && (port != r->server->port))
  +    return;
   
     l = strlen(host)-1;
     if ((host[l]) == '.') {
  @@ -726,68 +704,37 @@
            configuration */
        continue;
       }
  -/* ok, now there are several possibilities, and we're matching the
  - * hostname, the port, and r->connection->local_addr.  The last is
  - * required so as to only respond on an address to which this vhost
  - * should actually be listening.
  - *
  - * Either we can match s->server_name and s->port while matching
  - * against the ip address in a record in the s->addrs list *or* we
  - * can match s->server_name and a complete record in the s->addrs
  - * list *or* we can match the virtual host name and the address and
  - * the port of a record in the s->addrs list.
  - */
  -    if (!strcasecmp(host,s->server_hostname)) {   /* ServerName matches 
hostname */
  -      if (port == s->port) {                  /* possibly configured by Port 
*/
  -        for (sar = s->addrs; sar; sar = sar->next) {
  -          if 
(ADDR_MATCHES(sar->host_addr,r->connection->local_addr.sin_addr))
  -            break; /* SN matches, Port matches, and one IP addr matches */
  -        }
  -      } else {                             /* check to see if an addr 
matches */
  -        for (sar = s->addrs; sar; sar = sar->next) {
  -          if (((port == sar->host_port) || (sar->host_port == 0))
  -              && (ADDR_MATCHES(sar->host_addr,
  -                               r->connection->local_addr.sin_addr)))
  -            break; /* SN matches, and a addr matches IP & port */
  -        }
  -      }
  -      if (sar) { /* we got a match */
  -        r->server = r->connection->server = s;
  -        if (r->hostlen && !strncasecmp(r->uri, "http://";, 7)) {
  -          r->uri += r->hostlen;
  -          parse_uri(r, r->uri);
  -          /* we still might want to do something below (ie. set r->proxyreq) 
*/
  -        }
  +
  +    if ((!strcasecmp(host, s->server_hostname)) && (port == s->port)) {
  +      r->server = r->connection->server = s;
  +      if (r->hostlen && !strncmp(r->uri, "http://";, 7)) {
  +     r->uri += r->hostlen;
  +     parse_uri(r, r->uri);
         }
  -    } /* ServerName doesn't match */
  +    }
   
  -    /* now s->addrs list, include the names, from the VirtualHost directive 
*/
  -    for (sar = s->addrs; sar; sar = sar->next) {
  -      if (((sar->host_port==0) || (port==sar->host_port))
  -          && 
(ADDR_MATCHES(sar->host_addr,r->connection->local_addr.sin_addr))
  -          && !strcasecmp(host,sar->virthost)) {
  -        /* ok, an element in the addrs list matched all three items */
  -        r->server = r->connection->server = s;
  -        if (r->hostlen && !strncasecmp(r->uri, "http://";, 7)) {
  -          r->uri += r->hostlen;
  -          r->proxyreq = 0;
  -        }
  +    /* search all the names from <VirtualHost> directive */
  +    for( sar = s->addrs; sar; sar = sar->next ) {
  +      if( !strcasecmp( sar->virthost, host ) &&
  +       ( (sar->host_port == 0) || (port == sar->host_port) )) {
  +     r->server = r->connection->server = s;
  +     if( r->hostlen && !strncmp( r->uri, "http://";, 7) ) {
  +       r->uri += r->hostlen;
  +       r->proxyreq = 0;
  +     }
         }
       }
   
  -    /* search all the aliases from ServerAlias directive
  -     * ServerAlias acts like a wildcard, so as to help deal with the
  -     * transition when the DNS for a given host changes.
  -     */
  +    /* search all the aliases from ServerAlias directive */
       names = s->names;
  -    if (names) {
  +    if( names ) {
         while (*names) {
        char *name = getword_conf (r->pool, &names);
   
        if ((is_matchexp(name) && !strcasecmp_match(host, name)) ||
            (!strcasecmp(host, name))) {
          r->server = r->connection->server = s;
  -       if (r->hostlen && !strncasecmp(r->uri, "http://";, 7)) {
  +       if (r->hostlen && !strncmp(r->uri, "http://";, 7)) {
            r->uri += r->hostlen;
            r->proxyreq = 0;
          }
  @@ -797,11 +744,8 @@
     }
   }
   
  -void check_serverpath (request_rec *r)
  -{
  +void check_serverpath (request_rec *r) {
     server_rec *s;
  -  server_addr_rec * sar = NULL;
  -  int port = r->connection->local_addr.sin_port;
   
     /* This is in conjunction with the ServerPath code in
      * http_core, so we get the right host attached to a non-
  @@ -809,35 +753,10 @@
      */
   
     for (s = r->server->next; s; s = s->next) {
  -    /* we should check to make sure that this server should be listening
  -     * at all.
  -     *
  -     * this code is duplicated in check_hostalias, but only one of these
  -     * two functions runs for a given request.
  -     */
  -    if (!s->addrs) continue;
  -
  -    if( (port == s->port) ) {
  -        for(sar = s->addrs; sar; sar = sar->next) {
  -          if(ADDR_MATCHES(sar->host_addr, 
r->connection->local_addr.sin_addr))
  -            break;
  -        }
  -    }
  -    else {
  -        for(sar = s->addrs; sar; sar = sar->next) {
  -          if( ( (port == sar->host_port) || (sar->host_port == 0) )
  -              && ( ADDR_MATCHES(sar->host_addr,
  -                                r->connection->local_addr.sin_addr) ) )
  -            break;
  -        }
  -    }
  -
  -    if (!sar) continue; /* no match */
  -
  -    if (s->path && !strncmp(r->uri, s->path, s->pathlen)
  -     && (s->path[s->pathlen - 1] == '/'
  -         || r->uri[s->pathlen] == '/'
  -         || r->uri[s->pathlen] == '\0'))
  +    if (s->addrs && s->path && !strncmp(r->uri, s->path, s->pathlen) &&
  +     (s->path[s->pathlen - 1] == '/' ||
  +      r->uri[s->pathlen] == '/' ||
  +      r->uri[s->pathlen] == '\0'))
         r->server = r->connection->server = s;
     }
   }
  
  
  

Reply via email to