httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ch...@locus.apache.org
Subject cvs commit: apache-2.0/src/modules/proxy mod_proxy.c
Date Sat, 11 Nov 2000 11:03:42 GMT
chuck       00/11/11 03:03:42

  Modified:    src/modules/proxy mod_proxy.c
  Log:
  This is the 1.3.x current proxy code into 2.0.
  Obtained from: Sam Magnuson
  Submitted by:	Chuck Murcko
  
  Revision  Changes    Path
  1.15      +206 -210  apache-2.0/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- mod_proxy.c	2000/10/16 06:05:03	1.14
  +++ mod_proxy.c	2000/11/11 11:03:42	1.15
  @@ -64,7 +64,6 @@
   #include "http_vhost.h"
   #include "http_request.h"
   #include "util_date.h"
  -#include "apr_strings.h"
   
   /* Some WWW schemes and their default ports; this is basically /etc/services */
   /* This will become global when the protocol abstraction comes */
  @@ -78,7 +77,7 @@
       {"wais", DEFAULT_WAIS_PORT},
       {"snews", DEFAULT_SNEWS_PORT},
       {"prospero", DEFAULT_PROSPERO_PORT},
  -    {NULL, -1}  /* unknown port */
  +    {NULL, -1}			/* unknown port */
   };
   
   /*
  @@ -100,29 +99,29 @@
       const char *aliasp = alias_fakename, *urip = uri;
   
       while (aliasp < end_fakename) {
  -        if (*aliasp == '/') {
  -        /* any number of '/' in the alias matches any number in
  -         * the supplied URI, but there must be at least one...
  -         */
  -        if (*urip != '/')
  -        return 0;
  -
  -        while (*aliasp == '/')
  -        ++aliasp;
  -        while (*urip == '/')
  -        ++urip;
  -        }
  -        else {
  -        /* Other characters are compared literally */
  -            if (*urip++ != *aliasp++)
  -            return 0;
  -        }
  +	if (*aliasp == '/') {
  +	    /* any number of '/' in the alias matches any number in
  +	     * the supplied URI, but there must be at least one...
  +	     */
  +	    if (*urip != '/')
  +		return 0;
  +
  +	    while (*aliasp == '/')
  +		++aliasp;
  +	    while (*urip == '/')
  +		++urip;
  +	}
  +	else {
  +	    /* Other characters are compared literally */
  +	    if (*urip++ != *aliasp++)
  +		return 0;
  +	}
       }
   
       /* Check last alias path component matched all the way */
   
       if (aliasp[-1] != '/' && *urip != '\0' && *urip != '/')
  -    return 0;
  +	return 0;
   
       /* Return number of characters from URI which matched (may be
        * greater than length of alias, since we may have matched
  @@ -151,25 +150,25 @@
       conf = (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
   
       if (conf->req && r->parsed_uri.scheme) {
  -    /* but it might be something vhosted */
  +	/* but it might be something vhosted */
          if (!(r->parsed_uri.hostname
  -        && !strcasecmp(r->parsed_uri.scheme, ap_http_method(r))
  -        && ap_matches_request_vhost(r, r->parsed_uri.hostname,
  -          r->parsed_uri.port_str ? r->parsed_uri.port : ap_default_port(r)))) {
  -        r->proxyreq = 1;
  -        r->uri = r->unparsed_uri;
  -        r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL);
  -        r->handler = "proxy-server";
  +	    && !strcasecmp(r->parsed_uri.scheme, ap_http_method(r))
  +	    && ap_matches_request_vhost(r, r->parsed_uri.hostname,
  +               r->parsed_uri.port_str ? r->parsed_uri.port : ap_default_port(r))))
{
  +	    r->proxyreq = 1;
  +	    r->uri = r->unparsed_uri;
  +	    r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL);
  +	    r->handler = "proxy-server";
           }
       }
       /* We need special treatment for CONNECT proxying: it has no scheme part */
       else if (conf->req && r->method_number == M_CONNECT
  -         && r->parsed_uri.hostname
  -         && r->parsed_uri.port_str) {
  -        r->proxyreq = 1;
  -        r->uri = r->unparsed_uri;
  -        r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL);
  -        r->handler = "proxy-server";
  +	     && r->parsed_uri.hostname
  +	     && r->parsed_uri.port_str) {
  +	    r->proxyreq = 1;
  +	    r->uri = r->unparsed_uri;
  +	    r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL);
  +	    r->handler = "proxy-server";
       }
       return DECLINED;
   }
  @@ -183,10 +182,10 @@
       struct proxy_alias *ent = (struct proxy_alias *) conf->aliases->elts;
   
       if (r->proxyreq) {
  -        /* someone has already set up the proxy, it was possibly ourselves
  -         * in proxy_detect
  -         */
  -        return OK;
  +	/* someone has already set up the proxy, it was possibly ourselves
  +	 * in proxy_detect
  +	 */
  +	return OK;
       }
   
       /* XXX: since r->uri has been manipulated already we're not really
  @@ -196,14 +195,14 @@
   
       for (i = 0; i < conf->aliases->nelts; i++) {
           len = alias_match(r->uri, ent[i].fake);
  -        
  -        if (len > 0) {
  +	    
  +       if (len > 0) {
              r->filename = apr_pstrcat(r->pool, "proxy:", ent[i].real,
                                    r->uri + len, NULL);
              r->handler = "proxy-server";
              r->proxyreq = 1;
              return OK;
  -        }
  +	}
       }
       return DECLINED;
   }
  @@ -218,61 +217,60 @@
   {
       char *url, *p;
   
  -    if (!r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0)
  -    return DECLINED;
  +    if (r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0)
  +	return DECLINED;
   
       url = &r->filename[6];
   
   /* canonicalise each specific scheme */
       if (strncasecmp(url, "http:", 5) == 0)
  -    return ap_proxy_http_canon(r, url + 5, "http", DEFAULT_HTTP_PORT);
  +	return ap_proxy_http_canon(r, url + 5, "http", DEFAULT_HTTP_PORT);
       else if (strncasecmp(url, "ftp:", 4) == 0)
  -    return ap_proxy_ftp_canon(r, url + 4);
  +	return ap_proxy_ftp_canon(r, url + 4);
   
       p = strchr(url, ':');
       if (p == NULL || p == url)
  -    return HTTP_BAD_REQUEST;
  +	return HTTP_BAD_REQUEST;
   
  -    return OK;        /* otherwise; we've done the best we can */
  +    return OK;		/* otherwise; we've done the best we can */
   }
   
  -/* Send a redirection if the request contains a hostname which is not
  - * fully qualified, i.e. doesn't have a domain name appended. Some proxy
  - * servers like Netscape's allow this and access hosts from the local
  - * domain in this case. I think it is better to redirect to a FQDN, since
  - * these will later be found in the bookmarks files.
  - * The "ProxyDomain" directive determines what domain will be appended
  - */
  +/* Send a redirection if the request contains a hostname which is not */
  +/* fully qualified, i.e. doesn't have a domain name appended. Some proxy */
  +/* servers like Netscape's allow this and access hosts from the local */
  +/* domain in this case. I think it is better to redirect to a FQDN, since */
  +/* these will later be found in the bookmarks files. */
  +/* The "ProxyDomain" directive determines what domain will be appended */
   static int proxy_needsdomain(request_rec *r, const char *url, const char *domain)
   {
       char *nuri;
       const char *ref;
   
       /* We only want to worry about GETs */
  -    if (!r->proxyreq || r->method_number != M_GET || !r->parsed_uri.hostname)
  -    return DECLINED;
  +    if (r->proxyreq || r->method_number != M_GET || !r->parsed_uri.hostname)
  +	return DECLINED;
   
       /* If host does contain a dot already, or it is "localhost", decline */
       if (strchr(r->parsed_uri.hostname, '.') != NULL
        || strcasecmp(r->parsed_uri.hostname, "localhost") == 0)
  -    return DECLINED;    /* host name has a dot already */
  +	return DECLINED;	/* host name has a dot already */
   
       ref = apr_table_get(r->headers_in, "Referer");
   
       /* Reassemble the request, but insert the domain after the host name */
       /* Note that the domain name always starts with a dot */
       r->parsed_uri.hostname = apr_pstrcat(r->pool, r->parsed_uri.hostname,
  -                     domain, NULL);
  +				     domain, NULL);
       nuri = ap_unparse_uri_components(r->pool,
  -                  &r->parsed_uri,
  -                  UNP_REVEALPASSWORD);
  +				  &r->parsed_uri,
  +				  UNP_REVEALPASSWORD);
   
       apr_table_set(r->headers_out, "Location", nuri);
       ap_log_rerror(APLOG_MARK, APLOG_INFO|APLOG_NOERRNO, 0, r,
  -        "Domain missing: %s sent to %s%s%s", r->uri,
  -        ap_unparse_uri_components(r->pool, &r->parsed_uri,
  -              UNP_OMITUSERINFO),
  -        ref ? " from " : "", ref ? ref : "");
  +		"Domain missing: %s sent to %s%s%s", r->uri,
  +		ap_unparse_uri_components(r->pool, &r->parsed_uri,
  +		      UNP_OMITUSERINFO),
  +		ref ? " from " : "", ref ? ref : "");
   
       return HTTP_MOVED_PERMANENTLY;
   }
  @@ -290,42 +288,42 @@
       apr_array_header_t *proxies = conf->proxies;
       struct proxy_remote *ents = (struct proxy_remote *) proxies->elts;
       int i, rc;
  -    ap_cache_el *cr=NULL;
  +    ap_cache_el *cr = NULL;
       int direct_connect = 0;
       const char *maxfwd_str;
       const char *pragma, *auth, *imstr;
  -    
  -    if (!r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0)
  -        return DECLINED;
  -
  -    if (r->method_number == M_TRACE && (maxfwd_str =
  -      apr_table_get(r->headers_in, "Max-Forwards")) != NULL) {
  -        int maxfwd = strtol(maxfwd_str, NULL, 10);
  -        if (maxfwd < 1) {
  -            int access_status;
  -            r->proxyreq = 0;
  -            if ((access_status = ap_send_http_trace(r)))
  -                ap_die(access_status, r);
  -            else
  -                ap_finalize_request_protocol(r);
  -            return OK;
  -        }
  -        apr_table_setn(r->headers_in, "Max-Forwards", 
  -                      apr_psprintf(r->pool, "%d", (maxfwd > 0) ? maxfwd-1 : 0));
  +
  +    if (r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0)
  +	return DECLINED;
  +
  +    if (r->method_number == M_TRACE &&
  +	(maxfwd_str = apr_table_get(r->headers_in, "Max-Forwards")) != NULL) {
  +	long maxfwd = strtol(maxfwd_str, NULL, 10);
  +	if (maxfwd < 1) {
  +	    int access_status;
  +	    r->proxyreq = 0;
  +	    if ((access_status = ap_send_http_trace(r)))
  +		ap_die(access_status, r);
  +	    else
  +		ap_finalize_request_protocol(r);
  +	    return OK;
  +	}
  +	apr_table_setn(r->headers_in, "Max-Forwards", 
  +		      apr_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd-1 : 0));
       }
   
       if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)))
  -        return rc;
  +	return rc;
   
       url = r->filename + 6;
       p = strchr(url, ':');
       if (p == NULL)
  -        return HTTP_BAD_REQUEST;
  +	return HTTP_BAD_REQUEST;
   
       pragma = apr_table_get(r->headers_in, "Pragma");
       auth = apr_table_get(r->headers_in, "Authorization");
       imstr = apr_table_get(r->headers_in, "If-Modified-Since");
  -    
  +
       ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, NULL,
                    "Request for %s, pragma=%s, auth=%s, imstr=%s", url,
                    pragma, auth, imstr);
  @@ -338,7 +336,7 @@
           {
               int has_m = 0;
               /* now we need to check if the last modified date is write if */
  -        
  +
               if(imstr)
               {
                   time_t ims = (time_t)ap_parseHTTPdate(ap_proxy_date_canon(r->pool, imstr));
  @@ -351,15 +349,14 @@
                         (char **)&imstr) == APR_SUCCESS)
                       {
                           time_t lm =
  -                          ap_parseHTTPdate(ap_proxy_date_canon(r->pool, imstr));
  -                        if(lm != BAD_DATE)
  +                          ap_parseHTTPdate(ap_proxy_date_canon(r->pool, imstr));   
                    if(lm != BAD_DATE)
                           {
                               if(ims < lm)
                                   apr_table_set(r->headers_in,
                                     "If-Modified-Since", imstr);
                               else
                               {
  -                            
  +
                                   has_m = 1;
                               }
                           }
  @@ -372,12 +369,12 @@
              we need to create one */
           ap_cache_create(conf->cache, url, &cr);
       }
  -    
  +
       /* If the host doesn't have a domain name, add one and redirect. */
       if (conf->domain != NULL) {
  -        rc = proxy_needsdomain(r, url, conf->domain);
  -        if (ap_is_HTTP_REDIRECT(rc))
  -            return HTTP_MOVED_PERMANENTLY;
  +	rc = proxy_needsdomain(r, url, conf->domain);
  +	if (ap_is_HTTP_REDIRECT(rc))
  +	    return HTTP_MOVED_PERMANENTLY;
       }
   
       *p = '\0';
  @@ -389,77 +386,77 @@
       /* we only know how to handle communication to a proxy via http */
       /*if (strcasecmp(scheme, "http") == 0) */
       {
  -        int ii;
  -        struct dirconn_entry *list = (struct dirconn_entry *) conf->dirconn->elts;
  +	int ii;
  +	struct dirconn_entry *list = (struct dirconn_entry *) conf->dirconn->elts;
   
  -        for (direct_connect = ii = 0; ii < conf->dirconn->nelts && !direct_connect;
ii++) {
  -            direct_connect = list[ii].matcher(&list[ii], r);
  -        }
  +	for (direct_connect = ii = 0; ii < conf->dirconn->nelts && !direct_connect;
ii++) {
  +	    direct_connect = list[ii].matcher(&list[ii], r);
  +	}
   #if DEBUGGING
  -        ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r,
  -                      (direct_connect) ? "NoProxy for %s" : "UseProxy for %s",
  -                      r->uri);
  +	ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r,
  +		     (direct_connect) ? "NoProxy for %s" : "UseProxy for %s",
  +		     r->uri);
   #endif
       }
   
   /* firstly, try a proxy, unless a NoProxy directive is active */
   
       if (!direct_connect)
  -        for (i = 0; i < proxies->nelts; i++) {
  +	for (i = 0; i < proxies->nelts; i++) {
               p2 = ap_strchr_c(ents[i].scheme, ':');  /* is it a partial URL? */
  -            if (strcmp(ents[i].scheme, "*") == 0 ||
  -                (p2 == NULL && strcasecmp(scheme, ents[i].scheme) == 0) ||
  -                (p2 != NULL &&
  -                 strncasecmp(url, ents[i].scheme, strlen(ents[i].scheme)) == 0)) {
  -                /* CONNECT is a special method that bypasses the normal
  -                 * proxy code.
  -                 */
  -                if (r->method_number == M_CONNECT)
  -                    rc = ap_proxy_connect_handler(r, cr, url, ents[i].hostname,
  -                                                  ents[i].port);
  +	    if (strcmp(ents[i].scheme, "*") == 0 ||
  +		(p2 == NULL && strcasecmp(scheme, ents[i].scheme) == 0) ||
  +		(p2 != NULL &&
  +	       strncasecmp(url, ents[i].scheme, strlen(ents[i].scheme)) == 0)) {
  +		/* CONNECT is a special method that bypasses the normal
  +		 * proxy code.
  +		 */
  +		if (r->method_number == M_CONNECT)
  +		    rc = ap_proxy_connect_handler(r, cr, url, ents[i].hostname,
  +					       ents[i].port);
   /* we only know how to handle communication to a proxy via http */
  -                else if (strcasecmp(ents[i].protocol, "http") == 0)
  -                    rc = ap_proxy_http_handler(r, cr, url, ents[i].hostname,
  -                                               ents[i].port);
  -                else
  -                    rc = DECLINED;
  +		else if (strcasecmp(ents[i].protocol, "http") == 0)
  +		    rc = ap_proxy_http_handler(r, cr, url, ents[i].hostname,
  +					    ents[i].port);
  +		else
  +		    rc = DECLINED;
  +
  +		/* an error or success */
  +		if (rc != DECLINED && rc != HTTP_BAD_GATEWAY)
  +		    return rc;
  +		/* we failed to talk to the upstream proxy */
  +	    }
  +	}
   
  -                /* an error or success */
  -                if (rc != DECLINED && rc != HTTP_BAD_GATEWAY)
  -                    return rc;
  -                /* we failed to talk to the upstream proxy */
  -            }
  -        }
  -
   /* otherwise, try it direct */
   /* N.B. what if we're behind a firewall, where we must use a proxy or
    * give up??
    */
       /* handle the scheme */
       if (r->method_number == M_CONNECT)
  -        return ap_proxy_connect_handler(r, cr, url, NULL, 0);
  +	return ap_proxy_connect_handler(r, cr, url, NULL, 0);
       if (strcasecmp(scheme, "http") == 0)
  -        return ap_proxy_http_handler(r, cr, url, NULL, 0);
  +	return ap_proxy_http_handler(r, cr, url, NULL, 0);
       if (strcasecmp(scheme, "ftp") == 0)
  -        return ap_proxy_ftp_handler(r, cr, url);
  +	return ap_proxy_ftp_handler(r, cr, url);
       else
  -        return HTTP_FORBIDDEN;
  +	return HTTP_FORBIDDEN;
   }
   
   /* -------------------------------------------------------------- */
   /* Setup configurable data */
   
  -static void *create_proxy_config(apr_pool_t *p, server_rec *s)
  +static void * create_proxy_config(apr_pool_t *p, server_rec *s)
   {
  -    proxy_server_conf *ps = apr_pcalloc(p, sizeof(proxy_server_conf));
  +    proxy_server_conf *ps = ap_pcalloc(p, sizeof(proxy_server_conf));
   
  -    ps->proxies = apr_make_array(p, 10, sizeof(struct proxy_remote));
  -    ps->aliases = apr_make_array(p, 10, sizeof(struct proxy_alias));
  -    ps->raliases = apr_make_array(p, 10, sizeof(struct proxy_alias));
  -    ps->noproxies = apr_make_array(p, 10, sizeof(struct noproxy_entry));
  -    ps->dirconn = apr_make_array(p, 10, sizeof(struct dirconn_entry));
  -    ps->nocaches = apr_make_array(p, 10, sizeof(struct nocache_entry));
  -    ps->allowed_connect_ports = apr_make_array(p, 10, sizeof(int));
  +    ps->proxies = ap_make_array(p, 10, sizeof(struct proxy_remote));
  +    ps->aliases = ap_make_array(p, 10, sizeof(struct proxy_alias));
  +    ps->raliases = ap_make_array(p, 10, sizeof(struct proxy_alias));
  +    ps->noproxies = ap_make_array(p, 10, sizeof(struct noproxy_entry));
  +    ps->dirconn = ap_make_array(p, 10, sizeof(struct dirconn_entry));
  +    ps->nocaches = ap_make_array(p, 10, sizeof(struct nocache_entry));
  +    ps->allowed_connect_ports = ap_make_array(p, 10, sizeof(int));
       ps->cache_completion = DEFAULT_CACHE_COMPLETION;
       ps->domain = NULL;
       ps->viaopt = via_off; /* initially backward compatible with 1.3.1 */
  @@ -470,7 +467,7 @@
   }
   
   static const char *
  -     add_proxy(cmd_parms *cmd, void *dummy, const char *f1, const char *r1)
  +    add_proxy(cmd_parms *cmd, void *dummy, const char *f1, const char *r1)
   {
       server_rec *s = cmd->server;
       proxy_server_conf *conf =
  @@ -484,26 +481,26 @@
       f = apr_pstrdup(cmd->pool, f1);
       p = strchr(r, ':');
       if (p == NULL || p[1] != '/' || p[2] != '/' || p[3] == '\0')
  -    return "ProxyRemote: Bad syntax for a remote proxy server";
  +	return "ProxyRemote: Bad syntax for a remote proxy server";
       q = strchr(p + 3, ':');
       if (q != NULL) {
  -    if (sscanf(q + 1, "%u", &port) != 1 || port > 65535)
  -        return "ProxyRemote: Bad syntax for a remote proxy server (bad port number)";
  -    *q = '\0';
  +	if (sscanf(q + 1, "%u", &port) != 1 || port > 65535)
  +	    return "ProxyRemote: Bad syntax for a remote proxy server (bad port number)";
  +	*q = '\0';
       }
       else
  -    port = -1;
  +	port = -1;
       *p = '\0';
       if (strchr(f, ':') == NULL)
  -    ap_str_tolower(f);            /* lowercase scheme */
  -    ap_str_tolower(p + 3);        /* lowercase hostname */
  +	ap_str_tolower(f);		/* lowercase scheme */
  +    ap_str_tolower(p + 3);		/* lowercase hostname */
   
       if (port == -1) {
  -    int i;
  -    for (i = 0; defports[i].scheme != NULL; i++)
  -        if (strcasecmp(defports[i].scheme, r) == 0)
  -        break;
  -    port = defports[i].port;
  +	int i;
  +	for (i = 0; defports[i].scheme != NULL; i++)
  +	    if (strcasecmp(defports[i].scheme, r) == 0)
  +		break;
  +	port = defports[i].port;
       }
   
       new = apr_push_array(conf->proxies);
  @@ -515,7 +512,7 @@
   }
   
   static const char *
  -     set_cache_exclude(cmd_parms *cmd, void *dummy, const char *arg)
  +    set_cache_exclude(cmd_parms *cmd, void *dummy, const char *arg)
   {
       server_rec *s = cmd->server;
       proxy_server_conf *psf = (proxy_server_conf *) ap_get_module_config(s->module_config,
&proxy_module);
  @@ -527,18 +524,17 @@
   
       /* Don't duplicate entries */
       for (i = 0; i < psf->nocaches->nelts; i++) {
  -    if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */
  -        found = 1;
  +	if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */
  +	    found = 1;
       }
   
       if (!found) {
           new = apr_push_array(psf->nocaches);
           new->name = arg;
           /* Don't do name lookups on things that aren't dotted */
  -        if (ap_strchr_c(arg, '.') != NULL && 
  +        if (ap_strchr_c(arg, '.') != NULL &&
               ap_proxy_host2addr(new->name, &hp) == NULL)
  -           /*@@@FIXME: This copies only the first of (possibly many) IP addrs */
  -            memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr));
  +           /*@@@FIXME: This copies only the first of (possibly many) IP addrs */      
     memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr));
           else
               new->addr.s_addr = 0;
       }
  @@ -546,7 +542,7 @@
   }
   
   static const char *
  -     add_pass(cmd_parms *cmd, void *dummy, const char *f, const char *r)
  +    add_pass(cmd_parms *cmd, void *dummy, const char *f, const char *r)
   {
       server_rec *s = cmd->server;
       proxy_server_conf *conf =
  @@ -574,7 +570,8 @@
       return NULL;
   }
   
  -static const char *set_proxy_exclude(cmd_parms *parms, void *dummy, const char *arg)
  +static const char *
  +    set_proxy_exclude(cmd_parms *parms, void *dummy, const char *arg)
   {
       server_rec *s = parms->server;
       proxy_server_conf *conf =
  @@ -587,19 +584,20 @@
   
       /* Don't duplicate entries */
       for (i = 0; i < conf->noproxies->nelts; i++) {
  -    if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */
  -        found = 1;
  +	if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */
  +	    found = 1;
       }
   
       if (!found) {
  -    new = apr_push_array(conf->noproxies);
  -    new->name = arg;
  -    /* Don't do name lookups on things that aren't dotted */
  -    if (ap_strchr_c(arg, '.') != NULL && ap_proxy_host2addr(new->name, &hp)
== NULL)
  +	new = apr_push_array(conf->noproxies);
  +	new->name = arg;
  +	/* Don't do name lookups on things that aren't dotted */
  +        if (ap_strchr_c(arg, '.') != NULL &&
  +          ap_proxy_host2addr(new->name, &hp) == NULL)
           /*@@@FIXME: This copies only the first of (possibly many) IP addrs */
  -        memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr));
  -    else
  -        new->addr.s_addr = 0;
  +	    memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr));
  +	else
  +	    new->addr.s_addr = 0;
       }
       return NULL;
   }
  @@ -616,7 +614,7 @@
       int *New;
   
       if (!apr_isdigit(arg[0]))
  -    return "AllowCONNECT: port number must be numeric";
  +	return "AllowCONNECT: port number must be numeric";
   
       New = apr_push_array(conf->allowed_connect_ports);
       *New = atoi(arg);
  @@ -627,7 +625,7 @@
    * which should never be accessed via the configured ProxyRemote servers
    */
   static const char *
  -     set_proxy_dirconn(cmd_parms *parms, void *dummy, const char *arg)
  +    set_proxy_dirconn(cmd_parms *parms, void *dummy, const char *arg)
   {
       server_rec *s = parms->server;
       proxy_server_conf *conf =
  @@ -639,63 +637,62 @@
   
       /* Don't duplicate entries */
       for (i = 0; i < conf->dirconn->nelts; i++) {
  -    if (strcasecmp(arg, list[i].name) == 0)
  -        found = 1;
  +	if (strcasecmp(arg, list[i].name) == 0)
  +	    found = 1;
       }
   
       if (!found) {
  -    New = apr_push_array(conf->dirconn);
  -    New->name = apr_pstrdup(parms->pool, arg);
  -    New->hostentry = NULL;
  +	New = apr_push_array(conf->dirconn);
  +        New->name = apr_pstrdup(parms->pool, arg);
  +	New->hostentry = NULL;
   
  -    if (ap_proxy_is_ipaddr(New, parms->pool)) {
  +	if (ap_proxy_is_ipaddr(New, parms->pool)) {
   #if DEBUGGING
  -        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, 
  +        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL,
                            "Parsed addr %s", inet_ntoa(New->addr));
  -        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, 
  +        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL,
                            "Parsed mask %s", inet_ntoa(New->mask));
   #endif
  -    }
  -    else if (ap_proxy_is_domainname(New, parms->pool)) {
  -        ap_str_tolower(New->name);
  +	}
  +	else if (ap_proxy_is_domainname(New, parms->pool)) {
  +	    ap_str_tolower(New->name);
   #if DEBUGGING
  -        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, 
  +        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL,
                            "Parsed domain %s", New->name);
   #endif
  -    }
  -    else if (ap_proxy_is_hostname(New, parms->pool)) {
  -        ap_str_tolower(New->name);
  +	}
  +	else if (ap_proxy_is_hostname(New, parms->pool)) {
  +	    ap_str_tolower(New->name);
   #if DEBUGGING
  -        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, 
  +        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL,
                            "Parsed host %s", New->name);
   #endif
  -    }
  -    else {
  -        ap_proxy_is_word(New, parms->pool);
  +	}
  +	else {
  +	    ap_proxy_is_word(New, parms->pool);
   #if DEBUGGING
  -        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, 
  -                         "Parsed word %s", New->name);
  +	    fprintf(stderr, "Parsed word %s\n", New->name);
   #endif
  -    }
  +	}
       }
       return NULL;
   }
   
   static const char *
  -     set_proxy_domain(cmd_parms *parms, void *dummy, const char *arg)
  +    set_proxy_domain(cmd_parms *parms, void *dummy, const char *arg)
   {
       proxy_server_conf *psf =
       ap_get_module_config(parms->server->module_config, &proxy_module);
   
       if (arg[0] != '.')
  -    return "ProxyDomain: domain name must start with a dot.";
  +	return "ProxyDomain: domain name must start with a dot.";
   
       psf->domain = arg;
       return NULL;
   }
   
   static const char *
  -     set_proxy_req(cmd_parms *parms, void *dummy, int flag)
  +    set_proxy_req(cmd_parms *parms, void *dummy, int flag)
   {
       proxy_server_conf *psf =
       ap_get_module_config(parms->server->module_config, &proxy_module);
  @@ -704,15 +701,14 @@
       return NULL;
   }
   
  -
   static const char *
  -     set_recv_buffer_size(cmd_parms *parms, void *dummy, const char *arg)
  +    set_recv_buffer_size(cmd_parms *parms, void *dummy, const char *arg)
   {
       proxy_server_conf *psf =
       ap_get_module_config(parms->server->module_config, &proxy_module);
       int s = atoi(arg);
       if (s < 512 && s != 0) {
  -    return "ProxyReceiveBufferSize must be >= 512 bytes, or 0 for system default.";
  +	return "ProxyReceiveBufferSize must be >= 512 bytes, or 0 for system default.";
       }
   
       psf->recv_buffer_size = s;
  @@ -722,7 +718,8 @@
   static const char*
       set_via_opt(cmd_parms *parms, void *dummy, const char *arg)
   {
  -    proxy_server_conf *psf = ap_get_module_config(parms->server->module_config, &proxy_module);
  +    proxy_server_conf *psf =
  +    ap_get_module_config(parms->server->module_config, &proxy_module);
   
       if (strcasecmp(arg, "Off") == 0)
           psf->viaopt = via_off;
  @@ -733,7 +730,7 @@
       else if (strcasecmp(arg, "Full") == 0)
           psf->viaopt = via_full;
       else {
  -    return "ProxyVia must be one of: "
  +	return "ProxyVia must be one of: "
                  "off | on | full | block";
       }
   
  @@ -746,7 +743,7 @@
       proxy_server_conf *psf = ap_get_module_config(parms->server->module_config, &proxy_module);
       int s = atoi(arg);
       if (s > 100 || s < 0) {
  -        return "CacheForceCompletion must be <= 100 percent, "
  +		return "CacheForceCompletion must be <= 100 percent, "
                  "or 0 for system default.";
       }
   
  @@ -785,9 +782,8 @@
        "Configure Via: proxy header header to one of: on | off | block | full"),
       AP_INIT_ITERATE("ProxyNoCache", set_cache_exclude, NULL, RSRC_CONF,
        "A list of names, hosts or domains for which caching is *not* provided"),
  -    AP_INIT_TAKE1("ProxyForceCacheCompletion", set_cache_completion, NULL, RSRC_CONF,
  +    AP_INIT_TAKE1("ProxyCacheForceCompletion", set_cache_completion, NULL, RSRC_CONF,
        "Force a http cache completion after this percentage is loaded"),
  -
       {NULL}
   };
   
  @@ -796,7 +792,7 @@
       /* [2] filename-to-URI translation */
       ap_hook_translate_name(proxy_trans, NULL, NULL, AP_HOOK_FIRST);
       /* [8] fixups */
  -    ap_hook_fixups(proxy_fixup, NULL, NULL, AP_HOOK_FIRST);   
  +    ap_hook_fixups(proxy_fixup, NULL, NULL, AP_HOOK_FIRST);
       /* [1] post read_request handling */
       ap_hook_post_read_request(proxy_detect, NULL, NULL, AP_HOOK_FIRST);
   }
  @@ -804,11 +800,11 @@
   module AP_MODULE_DECLARE_DATA proxy_module =
   {
       STANDARD20_MODULE_STUFF,
  -    NULL,                  /* create per-directory config structure */
  -    NULL,                  /* merge per-directory config structures */
  -    create_proxy_config,   /* create per-server config structure */
  -    NULL,                  /* merge per-server config structures */
  -    proxy_cmds,            /* command apr_table_t */
  -    proxy_handlers,        /* handlers */
  +    NULL,			/* create per-directory config structure */
  +    NULL,			/* merge per-directory config structures */
  +    create_proxy_config,	/* create per-server config structure */
  +    NULL,			/* merge per-server config structures */
  +    proxy_cmds,			/* command table */
  +    proxy_handlers,		/* handlers */
       register_hooks
   };
  
  
  

Mime
View raw message