You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Dean Gaudet <dg...@hyperreal.org> on 1997/09/16 02:59:51 UTC

cvs commit: apachen/src/modules/proxy .indent.pro mod_proxy.c mod_proxy.h proxy_cache.c proxy_connect.c proxy_ftp.c proxy_http.c proxy_util.c

dgaudet     97/09/15 17:59:48

  Modified:    src/modules/proxy mod_proxy.c mod_proxy.h proxy_cache.c
                        proxy_connect.c proxy_ftp.c proxy_http.c
                        proxy_util.c
  Added:       src/modules/proxy .indent.pro
  Log:
  painful indent
  
  Revision  Changes    Path
  1.25      +274 -271  apachen/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- mod_proxy.c	1997/09/05 00:26:32	1.24
  +++ mod_proxy.c	1997/09/16 00:59:38	1.25
  @@ -55,16 +55,17 @@
   
   /* Some WWW schemes and their default ports; this is basically /etc/services */
   /* This will become global when the protocol abstraction comes */
  -static struct proxy_services defports[]={
  -    { "ftp",      DEFAULT_FTP_PORT},
  -    { "gopher",   DEFAULT_GOPHER_PORT},
  -    { "http",     DEFAULT_PORT},
  -    { "nntp",     DEFAULT_NNTP_PORT},
  -    { "wais",     DEFAULT_WAIS_PORT}, 
  -    { "https",    DEFAULT_HTTPS_PORT},
  -    { "snews",    DEFAULT_SNEWS_PORT},
  -    { "prospero", DEFAULT_PROSPERO_PORT},
  -    { NULL, -1}  /* unknown port */
  +static struct proxy_services defports[] =
  +{
  +    {"ftp", DEFAULT_FTP_PORT},
  +    {"gopher", DEFAULT_GOPHER_PORT},
  +    {"http", DEFAULT_PORT},
  +    {"nntp", DEFAULT_NNTP_PORT},
  +    {"wais", DEFAULT_WAIS_PORT},
  +    {"https", DEFAULT_HTTPS_PORT},
  +    {"snews", DEFAULT_SNEWS_PORT},
  +    {"prospero", DEFAULT_PROSPERO_PORT},
  +    {NULL, -1}			/* unknown port */
   };
   
   /*
  @@ -80,27 +81,28 @@
   /* -------------------------------------------------------------- */
   /* Translate the URL into a 'filename' */
   
  -static int
  -alias_match(char *uri, char *alias_fakename)
  +static int alias_match(char *uri, char *alias_fakename)
   {
  -    char *end_fakename = alias_fakename + strlen (alias_fakename);
  +    char *end_fakename = alias_fakename + strlen(alias_fakename);
       char *aliasp = alias_fakename, *urip = uri;
   
  -    while (aliasp < end_fakename)
  -    {
  -	if (*aliasp == '/')
  -	{
  +    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;
  +	    if (*urip != '/')
  +		return 0;
  +
  +	    while (*aliasp == '/')
  +		++aliasp;
  +	    while (*urip == '/')
  +		++urip;
   	}
   	else {
   	    /* Other characters are compared literally */
  -	    if (*urip++ != *aliasp++) return 0;
  +	    if (*urip++ != *aliasp++)
  +		return 0;
   	}
       }
   
  @@ -117,31 +119,28 @@
       return urip - uri;
   }
   
  -static int
  -proxy_trans(request_rec *r)
  +static int proxy_trans(request_rec *r)
   {
       void *sconf = r->server->module_config;
       proxy_server_conf *conf =
  -        (proxy_server_conf *)get_module_config(sconf, &proxy_module);
  +    (proxy_server_conf *) get_module_config(sconf, &proxy_module);
  +
  +    if (r->proxyreq) {
  +	if (!conf->req)
  +	    return DECLINED;
   
  -    if (r->proxyreq)
  -    {
  -	if (!conf->req) return DECLINED;
  -	
   	r->filename = pstrcat(r->pool, "proxy:", r->uri, NULL);
   	r->handler = "proxy-server";
   	return OK;
  -    } else
  -    {
  +    }
  +    else {
   	int i, len;
  -	struct proxy_alias *ent=(struct proxy_alias *)conf->aliases->elts;
  +	struct proxy_alias *ent = (struct proxy_alias *) conf->aliases->elts;
   
  -	for (i=0; i < conf->aliases->nelts; i++)
  -	{
  +	for (i = 0; i < conf->aliases->nelts; i++) {
   	    len = alias_match(r->uri, ent[i].fake);
   
  -	    if (len > 0)
  -	    {
  +	    if (len > 0) {
   		r->filename = pstrcat(r->pool, "proxy:", ent[i].real,
   				      r->uri + len, NULL);
   		r->handler = "proxy-server";
  @@ -158,33 +157,35 @@
   /*
    * Canonicalise the URL
    */
  -static int
  -proxy_fixup(request_rec *r)
  +static int proxy_fixup(request_rec *r)
   {
       char *url, *p;
       int i;
   
  -    if (strncmp(r->filename, "proxy:", 6) != 0) return DECLINED;
  +    if (strncmp(r->filename, "proxy:", 6) != 0)
  +	return DECLINED;
   
       url = &r->filename[6];
   /* lowercase the scheme */
       p = strchr(url, ':');
  -    if (p == NULL || p == url) return BAD_REQUEST;
  -    for (i=0; i != p - url; i++) url[i] = tolower(url[i]);
  +    if (p == NULL || p == url)
  +	return BAD_REQUEST;
  +    for (i = 0; i != p - url; i++)
  +	url[i] = tolower(url[i]);
   
   /* canonicalise each specific scheme */
       if (strncmp(url, "http:", 5) == 0)
  -	return proxy_http_canon(r, url+5, "http", DEFAULT_PORT);
  +	return proxy_http_canon(r, url + 5, "http", DEFAULT_PORT);
       else if (strncmp(url, "ftp:", 4) == 0)
  -	return proxy_ftp_canon(r, url+4);
  -    else return OK; /* otherwise; we've done the best we can */
  +	return proxy_ftp_canon(r, url + 4);
  +    else
  +	return OK;		/* otherwise; we've done the best we can */
   }
   
  -static void
  -proxy_init(server_rec *r, pool *p)
  +static void proxy_init(server_rec *r, pool *p)
   {
       proxy_garbage_init(r, p);
  -} 
  +}
   
   
   
  @@ -194,27 +195,27 @@
   /* 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)
  +static int proxy_needsdomain(request_rec *r, const char *url, const char *domain)
   {
  -    char *scheme = pstrdup (r->pool, url);
  +    char *scheme = pstrdup(r->pool, url);
       char *url_copy, *user = NULL, *password = NULL, *path, *err, *host;
       int port = -1;
   
       /* We only want to worry about GETs */
  -    if (r->method_number != M_GET) return DECLINED;
  +    if (r->method_number != M_GET)
  +	return DECLINED;
   
       /* Set url to the first char after "scheme://" */
  -    if ((url_copy = strchr(scheme,':')) == NULL
  +    if ((url_copy = strchr(scheme, ':')) == NULL
   	|| url_copy[1] != '/' || url_copy[2] != '/')
   	return DECLINED;
   
  -    *url_copy++ = '\0';	/* delimit scheme, make url_copy point to "//", which is what proxy_canon_netloc expects */
  +    *url_copy++ = '\0';		/* delimit scheme, make url_copy point to "//", which is what proxy_canon_netloc expects */
   
       /* Save the path - it will be re-appended for the redirection later */
       path = strchr(&url_copy[2], '/');
       if (path != NULL)
  -	++path;	    /* leading '/' will be overwritten by proxy_canon_netloc */
  +	++path;			/* leading '/' will be overwritten by proxy_canon_netloc */
       else
   	path = "";
   
  @@ -227,32 +228,31 @@
       }
   
       /* If host does contain a dot already, or it is "localhost", decline */
  -    if (strchr (host, '.') != NULL || strcasecmp(host, "localhost") == 0)
  +    if (strchr(host, '.') != NULL || strcasecmp(host, "localhost") == 0)
   	return DECLINED;	/* host name has a dot already */
  -    else
  -    {
  +    else {
   	char *nuri;
   	char *ref = table_get(r->headers_in, "Referer");
   	char strport[10];
   
   	/* now, rebuild URL */
   	if (port == -1)
  -	    strcpy (strport, "");
  +	    strcpy(strport, "");
   	else
   	    ap_snprintf(strport, sizeof(strport), ":%d", port);
   
   	/* Reassemble the request, but insert the domain after the host name */
   	nuri = pstrcat(r->pool, scheme, "://", (user != NULL) ? user : "",
  -		       (password != NULL) ? ":" : "",
  -		       (password != NULL) ? password : "",
  -		       (user != NULL) ? "@" : "",
  +		            (password != NULL) ? ":" : "",
  +		            (password != NULL) ? password : "",
  +		            (user != NULL) ? "@" : "",
   		       host, domain, strport, "/", path,
   		       NULL);
   
   	table_set(r->headers_out, "Location", nuri);
   	aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    pstrcat(r->pool, "Domain missing: ", r->uri, " sent to ", nuri,
  -			    ref ? " from " : NULL, ref, NULL));
  +	     pstrcat(r->pool, "Domain missing: ", r->uri, " sent to ", nuri,
  +		     ref ? " from " : NULL, ref, NULL));
   
   	return REDIRECT;
       }
  @@ -260,31 +260,33 @@
   
   /* -------------------------------------------------------------- */
   /* Invoke handler */
  - 
  -static int
  -proxy_handler(request_rec *r)
  +
  +static int proxy_handler(request_rec *r)
   {
       char *url, *scheme, *p;
       void *sconf = r->server->module_config;
       proxy_server_conf *conf =
  -        (proxy_server_conf *)get_module_config(sconf, &proxy_module);
  -    array_header *proxies=conf->proxies;
  -    struct proxy_remote *ents=(struct proxy_remote *)proxies->elts;
  +    (proxy_server_conf *) get_module_config(sconf, &proxy_module);
  +    array_header *proxies = conf->proxies;
  +    struct proxy_remote *ents = (struct proxy_remote *) proxies->elts;
       int i, rc;
       struct cache_req *cr;
       int direct_connect = 0;
   
  -    if (strncmp(r->filename, "proxy:", 6) != 0) return DECLINED;
  +    if (strncmp(r->filename, "proxy:", 6) != 0)
  +	return DECLINED;
   
       if ((rc = setup_client_block(r, REQUEST_CHUNKED_ERROR)))
   	return rc;
   
       url = r->filename + 6;
       p = strchr(url, ':');
  -    if (p == NULL) return BAD_REQUEST;
  +    if (p == NULL)
  +	return BAD_REQUEST;
   
       rc = proxy_cache_check(r, url, &conf->cache, &cr);
  -    if (rc != DECLINED) return rc;
  +    if (rc != DECLINED)
  +	return rc;
   
       /* If the host doesn't have a domain name, add one and redirect. */
       if (conf->domain != NULL
  @@ -298,56 +300,55 @@
       /* Check URI's destination host against NoProxy hosts */
       /* Bypass ProxyRemote server lookup if configured as NoProxy */
       /* we only know how to handle communication to a proxy via http */
  -    /*if (strcmp(scheme, "http") == 0)*/
  +    /*if (strcmp(scheme, "http") == 0) */
       {
   	int ii;
  -	struct dirconn_entry *list=(struct dirconn_entry*)conf->dirconn->elts;
  +	struct dirconn_entry *list = (struct dirconn_entry *) conf->dirconn->elts;
   
   /*        if (*++p == '/' && *++p == '/')   */
   
  -	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);
   	    aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
   			"URI and NoProxy: %s: %s", r->uri, list[ii].name);
   	}
   #if DEBUGGING
   	{
   	    char msg[256];
  -	    sprintf (msg, (direct_connect)?"NoProxy for %s":"UseProxy for %s", r->uri);
  +	    sprintf(msg, (direct_connect) ? "NoProxy for %s" : "UseProxy for %s", r->uri);
   	    aplog_error(APLOG_MARK, APLOG_DEBUG, r->server, msg);
   	}
   #endif
       }
  -	
  +
   /* firstly, try a proxy, unless a NoProxy directive is active */
   
       if (!direct_connect)
  -    for (i=0; i < proxies->nelts; i++)
  -    {
  -	p = strchr(ents[i].scheme, ':');  /* is it a partial URL? */
  -	if (strcmp(ents[i].scheme, "*") == 0 || 
  -	    (p == NULL && strcmp(scheme, ents[i].scheme) == 0) ||
  -	    (p != NULL &&
  -	       strncmp(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 = proxy_connect_handler(r, cr, url, ents[i].hostname,
  -		    ents[i].port);
  +	for (i = 0; i < proxies->nelts; i++) {
  +	    p = strchr(ents[i].scheme, ':');	/* is it a partial URL? */
  +	    if (strcmp(ents[i].scheme, "*") == 0 ||
  +		(p == NULL && strcmp(scheme, ents[i].scheme) == 0) ||
  +		(p != NULL &&
  +	       strncmp(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 = 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 (strcmp(ents[i].protocol, "http") == 0)
  -		rc = proxy_http_handler(r, cr, url, ents[i].hostname,
  -		    ents[i].port);
  -	    else rc = DECLINED;
  -
  - /* an error or success */
  -	    if (rc != DECLINED && rc != BAD_GATEWAY) return rc;
  - /* we failed to talk to the upstream proxy */
  +		else if (strcmp(ents[i].protocol, "http") == 0)
  +		    rc = proxy_http_handler(r, cr, url, ents[i].hostname,
  +					    ents[i].port);
  +		else
  +		    rc = DECLINED;
  +
  +		/* an error or success */
  +		if (rc != DECLINED && rc != 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
  @@ -360,44 +361,45 @@
   	return proxy_http_handler(r, cr, url, NULL, 0);
       if (strcmp(scheme, "ftp") == 0)
   	return proxy_ftp_handler(r, cr, url);
  -    else return NOT_IMPLEMENTED;
  +    else
  +	return NOT_IMPLEMENTED;
   }
   
   /* -------------------------------------------------------------- */
   /* Setup configurable data */
   
   static void *
  -create_proxy_config(pool *p, server_rec *s)
  +     create_proxy_config(pool *p, server_rec *s)
   {
  -  proxy_server_conf *ps = pcalloc(p, sizeof(proxy_server_conf));
  +    proxy_server_conf *ps = pcalloc(p, sizeof(proxy_server_conf));
   
  -  ps->proxies = make_array(p, 10, sizeof(struct proxy_remote));
  -  ps->aliases = make_array(p, 10, sizeof(struct proxy_alias));
  -  ps->noproxies = make_array(p, 10, sizeof(struct noproxy_entry));
  -  ps->dirconn = make_array(p, 10, sizeof(struct dirconn_entry));
  -  ps->nocaches = make_array(p, 10, sizeof(struct nocache_entry));
  -  ps->domain = NULL;
  -  ps->req = 0;
  +    ps->proxies = make_array(p, 10, sizeof(struct proxy_remote));
  +    ps->aliases = make_array(p, 10, sizeof(struct proxy_alias));
  +    ps->noproxies = make_array(p, 10, sizeof(struct noproxy_entry));
  +    ps->dirconn = make_array(p, 10, sizeof(struct dirconn_entry));
  +    ps->nocaches = make_array(p, 10, sizeof(struct nocache_entry));
  +    ps->domain = NULL;
  +    ps->req = 0;
   
  -  ps->cache.root = NULL;
  -  ps->cache.space = DEFAULT_CACHE_SPACE;
  -  ps->cache.maxexpire = DEFAULT_CACHE_MAXEXPIRE;
  -  ps->cache.defaultexpire = DEFAULT_CACHE_EXPIRE;
  -  ps->cache.lmfactor = DEFAULT_CACHE_LMFACTOR;
  -  ps->cache.gcinterval = -1;
  -  /* at these levels, the cache can have 2^18 directories (256,000)  */
  -  ps->cache.dirlevels=3;
  -  ps->cache.dirlength=1;
  +    ps->cache.root = NULL;
  +    ps->cache.space = DEFAULT_CACHE_SPACE;
  +    ps->cache.maxexpire = DEFAULT_CACHE_MAXEXPIRE;
  +    ps->cache.defaultexpire = DEFAULT_CACHE_EXPIRE;
  +    ps->cache.lmfactor = DEFAULT_CACHE_LMFACTOR;
  +    ps->cache.gcinterval = -1;
  +    /* at these levels, the cache can have 2^18 directories (256,000)  */
  +    ps->cache.dirlevels = 3;
  +    ps->cache.dirlength = 1;
   
  -  return ps;
  +    return ps;
   }
   
   static const char *
  -add_proxy(cmd_parms *cmd, void *dummy, char *f, char *r)
  +     add_proxy(cmd_parms *cmd, void *dummy, char *f, char *r)
   {
       server_rec *s = cmd->server;
       proxy_server_conf *conf =
  -        (proxy_server_conf *)get_module_config(s->module_config,&proxy_module);
  +    (proxy_server_conf *) get_module_config(s->module_config, &proxy_module);
       struct proxy_remote *new;
       char *p, *q;
       int port;
  @@ -406,25 +408,27 @@
       if (p == NULL || p[1] != '/' || p[2] != '/' || p[3] == '\0')
   	return "Bad syntax for a remote proxy server";
       q = strchr(p + 3, ':');
  -    if (q != NULL)
  -    {
  -	if (sscanf(q+1, "%u", &port) != 1 || port > 65535)
  +    if (q != NULL) {
  +	if (sscanf(q + 1, "%u", &port) != 1 || port > 65535)
   	    return "Bad syntax for a remote proxy server (bad port number)";
   	*q = '\0';
  -    } else port = -1;
  +    }
  +    else
  +	port = -1;
       *p = '\0';
  -    if (strchr(f, ':') == NULL) str_tolower(f);     /* lowercase scheme */
  -    str_tolower(p + 3); /* lowercase hostname */
  +    if (strchr(f, ':') == NULL)
  +	str_tolower(f);		/* lowercase scheme */
  +    str_tolower(p + 3);		/* lowercase hostname */
   
  -    if (port == -1)
  -    {
  +    if (port == -1) {
   	int i;
  -	for (i=0; defports[i].scheme != NULL; i++)
  -	    if (strcmp(defports[i].scheme, r) == 0) break;
  +	for (i = 0; defports[i].scheme != NULL; i++)
  +	    if (strcmp(defports[i].scheme, r) == 0)
  +		break;
   	port = defports[i].port;
       }
   
  -    new = push_array (conf->proxies);
  +    new = push_array(conf->proxies);
       new->scheme = f;
       new->protocol = r;
       new->hostname = p + 3;
  @@ -433,41 +437,39 @@
   }
   
   static const char *
  -add_pass(cmd_parms *cmd, void *dummy, char *f, char *r)
  +     add_pass(cmd_parms *cmd, void *dummy, char *f, char *r)
   {
       server_rec *s = cmd->server;
       proxy_server_conf *conf =
  -        (proxy_server_conf *)get_module_config(s->module_config,&proxy_module);
  +    (proxy_server_conf *) get_module_config(s->module_config, &proxy_module);
       struct proxy_alias *new;
   
  -    new = push_array (conf->aliases);
  +    new = push_array(conf->aliases);
       new->fake = f;
       new->real = r;
       return NULL;
   }
   
   static const char *
  -set_proxy_exclude(cmd_parms *parms, void *dummy, char *arg)
  +     set_proxy_exclude(cmd_parms *parms, void *dummy, char *arg)
   {
       server_rec *s = parms->server;
       proxy_server_conf *conf =
  -	get_module_config (s->module_config, &proxy_module);
  +    get_module_config(s->module_config, &proxy_module);
       struct noproxy_entry *new;
  -    struct noproxy_entry *list=(struct noproxy_entry*)conf->noproxies->elts;
  +    struct noproxy_entry *list = (struct noproxy_entry *) conf->noproxies->elts;
       struct hostent hp;
       int found = 0;
       int i;
   
       /* Don't duplicate entries */
  -    for (i=0; i < conf->noproxies->nelts; i++)
  -    {
  +    for (i = 0; i < conf->noproxies->nelts; i++) {
   	if (strcmp(arg, list[i].name) == 0)
   	    found = 1;
       }
   
  -    if (!found)
  -    {
  -	new = push_array (conf->noproxies);
  +    if (!found) {
  +	new = push_array(conf->noproxies);
   	new->name = arg;
   	/* Don't do name lookups on things that aren't dotted */
   	if (strchr(arg, '.') != NULL && proxy_host2addr(new->name, &hp) == NULL)
  @@ -482,54 +484,48 @@
    * which should never be accessed via the configured ProxyRemote servers
    */
   static const char *
  -set_proxy_dirconn(cmd_parms *parms, void *dummy, char *arg)
  +     set_proxy_dirconn(cmd_parms *parms, void *dummy, char *arg)
   {
       server_rec *s = parms->server;
       proxy_server_conf *conf =
  -	get_module_config (s->module_config, &proxy_module);
  +    get_module_config(s->module_config, &proxy_module);
       struct dirconn_entry *New;
  -    struct dirconn_entry *list=(struct dirconn_entry*)conf->dirconn->elts;
  +    struct dirconn_entry *list = (struct dirconn_entry *) conf->dirconn->elts;
       int found = 0;
       int i;
   
       /* Don't duplicate entries */
  -    for (i=0; i < conf->dirconn->nelts; i++)
  -    {
  +    for (i = 0; i < conf->dirconn->nelts; i++) {
   	if (strcasecmp(arg, list[i].name) == 0)
   	    found = 1;
       }
   
  -    if (!found)
  -    {
  -	New = push_array (conf->dirconn);
  +    if (!found) {
  +	New = push_array(conf->dirconn);
   	New->name = arg;
   
  -	if (proxy_is_ipaddr(New))
  -	{
  +	if (proxy_is_ipaddr(New)) {
   #if DEBUGGING
  -	    fprintf(stderr,"Parsed addr %s\n", inet_ntoa(New->addr));
  -	    fprintf(stderr,"Parsed mask %s\n", inet_ntoa(New->mask));
  +	    fprintf(stderr, "Parsed addr %s\n", inet_ntoa(New->addr));
  +	    fprintf(stderr, "Parsed mask %s\n", inet_ntoa(New->mask));
   #endif
   	}
  -	else if (proxy_is_domainname(New))
  -	{
  +	else if (proxy_is_domainname(New)) {
   	    str_tolower(New->name);
   #if DEBUGGING
  -	    fprintf(stderr,"Parsed domain %s\n", New->name);
  +	    fprintf(stderr, "Parsed domain %s\n", New->name);
   #endif
   	}
  -	else if (proxy_is_hostname(New))
  -	{
  +	else if (proxy_is_hostname(New)) {
   	    str_tolower(New->name);
   #if DEBUGGING
  -	    fprintf(stderr,"Parsed host %s\n", New->name);
  +	    fprintf(stderr, "Parsed host %s\n", New->name);
   #endif
   	}
  -	else
  -	{
  +	else {
   	    proxy_is_word(New);
   #if DEBUGGING
  -	    fprintf(stderr,"Parsed word %s\n", New->name);
  +	    fprintf(stderr, "Parsed word %s\n", New->name);
   #endif
   	}
       }
  @@ -537,10 +533,10 @@
   }
   
   static const char *
  -set_proxy_domain(cmd_parms *parms, void *dummy, char *arg)
  +     set_proxy_domain(cmd_parms *parms, void *dummy, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
   
       if (arg[0] != '.')
   	return "Domain name must start with a dot.";
  @@ -550,10 +546,10 @@
   }
   
   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 =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
   
       psf->req = flag;
       return NULL;
  @@ -561,22 +557,23 @@
   
   
   static const char *
  -set_cache_size(cmd_parms *parms, char *struct_ptr, char *arg)
  +     set_cache_size(cmd_parms *parms, char *struct_ptr, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
       int val;
   
  -    if (sscanf(arg, "%d", &val) != 1) return "Value must be an integer";
  +    if (sscanf(arg, "%d", &val) != 1)
  +	return "Value must be an integer";
       psf->cache.space = val;
       return NULL;
   }
   
   static const char *
  -set_cache_root(cmd_parms *parms, void *dummy, char *arg)
  +     set_cache_root(cmd_parms *parms, void *dummy, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
   
       psf->cache.root = arg;
   
  @@ -584,184 +581,190 @@
   }
   
   static const char *
  -set_cache_factor(cmd_parms *parms, void *dummy, char *arg)
  +     set_cache_factor(cmd_parms *parms, void *dummy, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
       double val;
   
  -    if (sscanf(arg, "%lg", &val) != 1) return "Value must be a float";
  +    if (sscanf(arg, "%lg", &val) != 1)
  +	return "Value must be a float";
       psf->cache.lmfactor = val;
   
       return NULL;
   }
   
   static const char *
  -set_cache_maxex(cmd_parms *parms, void *dummy, char *arg)
  +     set_cache_maxex(cmd_parms *parms, void *dummy, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
       double val;
   
  -    if (sscanf(arg, "%lg", &val) != 1) return "Value must be a float";
  -    psf->cache.maxexpire = (int)(val * (double)SEC_ONE_HR);
  +    if (sscanf(arg, "%lg", &val) != 1)
  +	return "Value must be a float";
  +    psf->cache.maxexpire = (int) (val * (double) SEC_ONE_HR);
       return NULL;
   }
   
   static const char *
  -set_cache_defex(cmd_parms *parms, void *dummy, char *arg)
  +     set_cache_defex(cmd_parms *parms, void *dummy, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
       double val;
   
  -    if (sscanf(arg, "%lg", &val) != 1) return "Value must be a float";
  -    psf->cache.defaultexpire = (int)(val * (double)SEC_ONE_HR);
  +    if (sscanf(arg, "%lg", &val) != 1)
  +	return "Value must be a float";
  +    psf->cache.defaultexpire = (int) (val * (double) SEC_ONE_HR);
       return NULL;
   }
   
   static const char *
  -set_cache_gcint(cmd_parms *parms, void *dummy, char *arg)
  +     set_cache_gcint(cmd_parms *parms, void *dummy, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
       double val;
   
  -    if (sscanf(arg, "%lg", &val) != 1) return "Value must be a float";
  -    psf->cache.gcinterval = (int)(val * (double)SEC_ONE_HR);
  +    if (sscanf(arg, "%lg", &val) != 1)
  +	return "Value must be a float";
  +    psf->cache.gcinterval = (int) (val * (double) SEC_ONE_HR);
       return NULL;
   }
   
   static const char *
  -set_cache_dirlevels(cmd_parms *parms, char *struct_ptr, char *arg)
  +     set_cache_dirlevels(cmd_parms *parms, char *struct_ptr, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
       int val;
   
  -    if (sscanf(arg, "%d", &val) != 1) return "Value must be an integer";
  +    if (sscanf(arg, "%d", &val) != 1)
  +	return "Value must be an integer";
       psf->cache.dirlevels = val;
       return NULL;
   }
   
   static const char *
  -set_cache_dirlength(cmd_parms *parms, char *struct_ptr, char *arg)
  +     set_cache_dirlength(cmd_parms *parms, char *struct_ptr, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  +    get_module_config(parms->server->module_config, &proxy_module);
       int val;
   
  -    if (sscanf(arg, "%d", &val) != 1) return "Value must be an integer";
  +    if (sscanf(arg, "%d", &val) != 1)
  +	return "Value must be an integer";
       psf->cache.dirlength = val;
       return NULL;
   }
   
   static const char *
  -set_cache_exclude(cmd_parms *parms, void *dummy, char *arg)
  +     set_cache_exclude(cmd_parms *parms, void *dummy, char *arg)
   {
       server_rec *s = parms->server;
       proxy_server_conf *conf =
  -	get_module_config (s->module_config, &proxy_module);
  +    get_module_config(s->module_config, &proxy_module);
       struct nocache_entry *new;
  -    struct nocache_entry *list=(struct nocache_entry*)conf->nocaches->elts;
  +    struct nocache_entry *list = (struct nocache_entry *) conf->nocaches->elts;
       struct hostent hp;
       int found = 0;
       int i;
   
       /* Don't duplicate entries */
  -    for (i=0; i < conf->nocaches->nelts; i++)
  -    {
  +    for (i = 0; i < conf->nocaches->nelts; i++) {
   	if (strcmp(arg, list[i].name) == 0)
   	    found = 1;
       }
   
  -    if (!found)
  -    {
  -	new = push_array (conf->nocaches);
  +    if (!found) {
  +	new = push_array(conf->nocaches);
   	new->name = arg;
   	/* Don't do name lookups on things that aren't dotted */
   	if (strchr(arg, '.') != NULL && proxy_host2addr(new->name, &hp) == NULL)
   	    memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr));
   	else
  -	    new->addr.s_addr= 0;
  +	    new->addr.s_addr = 0;
       }
       return NULL;
   }
   
   static const char *
  -set_recv_buffer_size (cmd_parms *parms, void *dummy, char *arg)
  +     set_recv_buffer_size(cmd_parms *parms, void *dummy, char *arg)
   {
       proxy_server_conf *psf =
  -	get_module_config (parms->server->module_config, &proxy_module);
  -    int s = atoi (arg);
  -    if (s < 512 && s != 0)
  -    {
  -        return "ReceiveBufferSize must be >= 512 bytes, or 0 for system default.";
  +    get_module_config(parms->server->module_config, &proxy_module);
  +    int s = atoi(arg);
  +    if (s < 512 && s != 0) {
  +	return "ReceiveBufferSize must be >= 512 bytes, or 0 for system default.";
       }
   
       psf->recv_buffer_size = s;
       return NULL;
   }
   
  -static handler_rec proxy_handlers[] = {
  -{ "proxy-server", proxy_handler },
  -{ NULL } 
  -};  
  -    
  -static command_rec proxy_cmds[] = {
  -{ "ProxyRequests", set_proxy_req, NULL, RSRC_CONF, FLAG,
  -  "on if the true proxy requests should be accepted"},
  -{ "ProxyRemote", add_proxy, NULL, RSRC_CONF, TAKE2,
  -    "a scheme, partial URL or '*' and a proxy server"},
  -{ "ProxyPass", add_pass, NULL, RSRC_CONF, TAKE2,
  -    "a virtual path and a URL"},
  -{ "ProxyBlock", set_proxy_exclude, NULL, RSRC_CONF, ITERATE,
  -    "A list of names, hosts or domains to which the proxy will not connect" },
  -{ "NoProxy", set_proxy_dirconn, NULL, RSRC_CONF, ITERATE,
  -    "A list of domains, hosts, or subnets to which the proxy will connect directly" },
  -{ "ProxyDomain", set_proxy_domain, NULL, RSRC_CONF, TAKE1,
  -    "The default intranet domain name (in absence of a domain in the URL)" },
  -{ "CacheRoot", set_cache_root, NULL, RSRC_CONF, TAKE1,
  -      "The directory to store cache files"},
  -{ "CacheSize", set_cache_size, NULL, RSRC_CONF, TAKE1,
  -      "The maximum disk space used by the cache in Kb"},
  -{ "CacheMaxExpire", set_cache_maxex, NULL, RSRC_CONF, TAKE1,
  -      "The maximum time in hours to cache a document"},
  -{ "CacheDefaultExpire", set_cache_defex, NULL, RSRC_CONF, TAKE1,
  -      "The default time in hours to cache a document"}, 
  -{ "CacheLastModifiedFactor", set_cache_factor, NULL, RSRC_CONF, TAKE1,
  -      "The factor used to estimate Expires date from LastModified date"},
  -{ "CacheGcInterval", set_cache_gcint, NULL, RSRC_CONF, TAKE1,
  -      "The interval between garbage collections, in hours"},
  -{ "CacheDirLevels", set_cache_dirlevels, NULL, RSRC_CONF, TAKE1,
  -    "The number of levels of subdirectories in the cache" },
  -{ "CacheDirLength", set_cache_dirlength, NULL, RSRC_CONF, TAKE1,
  -    "The number of characters in subdirectory names" },
  -{ "NoCache", set_cache_exclude, NULL, RSRC_CONF, ITERATE,
  -    "A list of names, hosts or domains for which caching is *not* provided" },
  -{ "ReceiveBufferSize", set_recv_buffer_size, NULL, RSRC_CONF, TAKE1,
  -    "Receive buffer size in bytes" },
  -{ NULL }
  +static handler_rec proxy_handlers[] =
  +{
  +    {"proxy-server", proxy_handler},
  +    {NULL}
  +};
  +
  +static command_rec proxy_cmds[] =
  +{
  +    {"ProxyRequests", set_proxy_req, NULL, RSRC_CONF, FLAG,
  +     "on if the true proxy requests should be accepted"},
  +    {"ProxyRemote", add_proxy, NULL, RSRC_CONF, TAKE2,
  +     "a scheme, partial URL or '*' and a proxy server"},
  +    {"ProxyPass", add_pass, NULL, RSRC_CONF, TAKE2,
  +     "a virtual path and a URL"},
  +    {"ProxyBlock", set_proxy_exclude, NULL, RSRC_CONF, ITERATE,
  +   "A list of names, hosts or domains to which the proxy will not connect"},
  +    {"NoProxy", set_proxy_dirconn, NULL, RSRC_CONF, ITERATE,
  +     "A list of domains, hosts, or subnets to which the proxy will connect directly"},
  +    {"ProxyDomain", set_proxy_domain, NULL, RSRC_CONF, TAKE1,
  +     "The default intranet domain name (in absence of a domain in the URL)"},
  +    {"CacheRoot", set_cache_root, NULL, RSRC_CONF, TAKE1,
  +     "The directory to store cache files"},
  +    {"CacheSize", set_cache_size, NULL, RSRC_CONF, TAKE1,
  +     "The maximum disk space used by the cache in Kb"},
  +    {"CacheMaxExpire", set_cache_maxex, NULL, RSRC_CONF, TAKE1,
  +     "The maximum time in hours to cache a document"},
  +    {"CacheDefaultExpire", set_cache_defex, NULL, RSRC_CONF, TAKE1,
  +     "The default time in hours to cache a document"},
  +    {"CacheLastModifiedFactor", set_cache_factor, NULL, RSRC_CONF, TAKE1,
  +     "The factor used to estimate Expires date from LastModified date"},
  +    {"CacheGcInterval", set_cache_gcint, NULL, RSRC_CONF, TAKE1,
  +     "The interval between garbage collections, in hours"},
  +    {"CacheDirLevels", set_cache_dirlevels, NULL, RSRC_CONF, TAKE1,
  +     "The number of levels of subdirectories in the cache"},
  +    {"CacheDirLength", set_cache_dirlength, NULL, RSRC_CONF, TAKE1,
  +     "The number of characters in subdirectory names"},
  +    {"NoCache", set_cache_exclude, NULL, RSRC_CONF, ITERATE,
  +   "A list of names, hosts or domains for which caching is *not* provided"},
  +    {"ReceiveBufferSize", set_recv_buffer_size, NULL, RSRC_CONF, TAKE1,
  +     "Receive buffer size in bytes"},
  +    {NULL}
   };
   
  -module MODULE_VAR_EXPORT proxy_module = {
  -   STANDARD_MODULE_STUFF,
  -   proxy_init,                  /* initializer */
  -   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 */
  -   proxy_trans,                 /* translate_handler */
  -   NULL,                        /* check_user_id */
  -   NULL,                        /* check auth */
  -   NULL,                        /* check access */
  -   NULL,                        /* type_checker */
  -   proxy_fixup,                 /* pre-run fixups */
  -   NULL,                        /* logger */
  -   NULL,                        /* header parser */
  -   NULL,			/* child_init */
  -   NULL,			/* child_exit */
  -   NULL				/* post read-request */
  +module MODULE_VAR_EXPORT proxy_module =
  +{
  +    STANDARD_MODULE_STUFF,
  +    proxy_init,			/* initializer */
  +    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 */
  +    proxy_trans,		/* translate_handler */
  +    NULL,			/* check_user_id */
  +    NULL,			/* check auth */
  +    NULL,			/* check access */
  +    NULL,			/* type_checker */
  +    proxy_fixup,		/* pre-run fixups */
  +    NULL,			/* logger */
  +    NULL,			/* header parser */
  +    NULL,			/* child_init */
  +    NULL,			/* child_exit */
  +    NULL			/* post read-request */
   };
  
  
  
  1.23      +83 -88    apachen/src/modules/proxy/mod_proxy.h
  
  Index: mod_proxy.h
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/proxy/mod_proxy.h,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- mod_proxy.h	1997/09/06 14:16:56	1.22
  +++ mod_proxy.h	1997/09/16 00:59:39	1.23
  @@ -56,43 +56,43 @@
   
   /*
   
  -Note that the Explain() stuff is not yet complete.
  -Also note numerous FIXMEs and CHECKMEs which should be eliminated.
  +   Note that the Explain() stuff is not yet complete.
  +   Also note numerous FIXMEs and CHECKMEs which should be eliminated.
   
  -If TESTING is set, then garbage collection doesn't delete ... probably a good
  -idea when hacking.
  +   If TESTING is set, then garbage collection doesn't delete ... probably a good
  +   idea when hacking.
   
  -This code is still experimental!
  +   This code is still experimental!
   
  -Things to do:
  +   Things to do:
   
  -1. Make it garbage collect in the background, not while someone is waiting for
  -a response!
  +   1. Make it garbage collect in the background, not while someone is waiting for
  +   a response!
   
  -2. Check the logic thoroughly.
  +   2. Check the logic thoroughly.
   
  -3. Empty directories are only removed the next time round (but this does avoid
  -two passes). Consider doing them the first time round.
  +   3. Empty directories are only removed the next time round (but this does avoid
  +   two passes). Consider doing them the first time round.
   
  -Ben Laurie <be...@algroup.co.uk> 30 Mar 96
  +   Ben Laurie <be...@algroup.co.uk> 30 Mar 96
   
  -More things to do:
  +   More things to do:
   
  -0. Code cleanup (ongoing)
  +   0. Code cleanup (ongoing)
   
  -1. add 230 response output for ftp now that it works
  +   1. add 230 response output for ftp now that it works
   
  -2. Make the ftp proxy transparent, also same with (future) gopher & wais
  +   2. Make the ftp proxy transparent, also same with (future) gopher & wais
   
  -3. Use protocol handler struct a la Apache module handlers (Dirk van Gulik)
  - 
  -4. Use a cache expiry database for more efficient GC (Jeremy Wohl)
  +   3. Use protocol handler struct a la Apache module handlers (Dirk van Gulik)
   
  -5. Bulletproof GC against SIGALRM
  +   4. Use a cache expiry database for more efficient GC (Jeremy Wohl)
   
  -Chuck Murcko <ch...@topsail.org> 15 April 1997
  +   5. Bulletproof GC against SIGALRM
   
  -*/
  +   Chuck Murcko <ch...@topsail.org> 15 April 1997
  +
  + */
   
   #define TESTING	0
   #undef EXPLAIN
  @@ -100,17 +100,19 @@
   #include "httpd.h"
   #include "http_config.h"
   #include "http_protocol.h"
  -  
  +
   #include "explain.h"
   
   extern module MODULE_VAR_EXPORT proxy_module;
   
   
   /* for proxy_canonenc() */
  -enum enctype { enc_path, enc_search, enc_user, enc_fpath, enc_parm }; 
  - 
  -#define HDR_APP (0)	/* append header, for proxy_add_header() */
  -#define HDR_REP (1)	/* replace header, for proxy_add_header() */
  +enum enctype {
  +    enc_path, enc_search, enc_user, enc_fpath, enc_parm
  +};
  +
  +#define HDR_APP (0)		/* append header, for proxy_add_header() */
  +#define HDR_REP (1)		/* replace header, for proxy_add_header() */
   
   /* number of characters in the hash */
   #define HASH_LEN (22*2)
  @@ -128,19 +130,17 @@
   #define	DEFAULT_PROSPERO_PORT	1525	/* WARNING: conflict w/Oracle */
   
   /* Some WWW schemes and their default ports; this is basically /etc/services */
  -struct proxy_services
  -{
  +struct proxy_services {
       const char *scheme;
       int port;
   };
   
   /* static information about a remote proxy */
  -struct proxy_remote
  -{
  -    const char *scheme;    /* the schemes handled by this proxy, or '*' */
  -    const char *protocol;  /* the scheme used to talk to this proxy */
  -    const char *hostname;  /* the hostname of this proxy */
  -    int port;              /* the port for this proxy */
  +struct proxy_remote {
  +    const char *scheme;		/* the schemes handled by this proxy, or '*' */
  +    const char *protocol;	/* the scheme used to talk to this proxy */
  +    const char *hostname;	/* the hostname of this proxy */
  +    int port;			/* the port for this proxy */
   };
   
   struct proxy_alias {
  @@ -150,9 +150,9 @@
   
   struct dirconn_entry {
       char *name;
  -    struct in_addr addr,mask;
  +    struct in_addr addr, mask;
       struct hostent hostlist;
  -    int (*matcher)(struct dirconn_entry *This, request_rec *r);
  +    int (*matcher) (struct dirconn_entry * This, request_rec *r);
   };
   
   struct noproxy_entry {
  @@ -171,74 +171,70 @@
   #define DEFAULT_CACHE_LMFACTOR (0.1)
   
   /* static information about the local cache */
  -struct cache_conf
  -{
  -    const char *root;   /* the location of the cache directory */
  -    int space;          /* Maximum cache size (in 1024 bytes) */
  -    int maxexpire;      /* Maximum time to keep cached files in secs */
  -    int defaultexpire;  /* default time to keep cached file in secs */
  -    double lmfactor;    /* factor for estimating expires date */
  -    int gcinterval;     /* garbage collection interval, in seconds */
  -    int dirlevels;	/* Number of levels of subdirectories */
  -    int dirlength;	/* Length of subdirectory names */
  +struct cache_conf {
  +    const char *root;		/* the location of the cache directory */
  +    int space;			/* Maximum cache size (in 1024 bytes) */
  +    int maxexpire;		/* Maximum time to keep cached files in secs */
  +    int defaultexpire;		/* default time to keep cached file in secs */
  +    double lmfactor;		/* factor for estimating expires date */
  +    int gcinterval;		/* garbage collection interval, in seconds */
  +    int dirlevels;		/* Number of levels of subdirectories */
  +    int dirlength;		/* Length of subdirectory names */
   };
   
  -typedef struct
  -{
  -    struct cache_conf cache;  /* cache configuration */
  +typedef struct {
  +    struct cache_conf cache;	/* cache configuration */
       array_header *proxies;
       array_header *aliases;
       array_header *noproxies;
       array_header *dirconn;
       array_header *nocaches;
  -    char         *domain;    /* domain name to use in absence of a domain name in the request */
  -    int req;                 /* true if proxy requests are enabled */
  +    char *domain;		/* domain name to use in absence of a domain name in the request */
  +    int req;			/* true if proxy requests are enabled */
       int recv_buffer_size;
   } proxy_server_conf;
   
  -struct hdr_entry
  -{
  +struct hdr_entry {
       char *field;
       char *value;
   };
   
   /* caching information about a request */
  -struct cache_req
  -{
  -    request_rec *req;  /* the request */
  -    char *url;         /* the URL requested */
  -    char *filename;    /* name of the cache file, or NULL if no cache */
  -    char *tempfile;    /* name of the temporary file, of NULL if not caching */
  -    time_t ims;        /* if-modified-since date of request; -1 if no header */
  -    BUFF *fp;          /* the cache file descriptor if the file is cached
  -                          and may be returned, or NULL if the file is
  -                          not cached (or must be reloaded) */
  -    time_t expire;      /* calculated expire date of cached entity */
  -    time_t lmod;        /* last-modified date of cached entity */
  -    time_t date;        /* the date the cached file was last touched */
  -    int version;        /* update count of the file */
  -    unsigned int len;   /* content length */
  -    char *protocol;     /* Protocol, and major/minor number, e.g. HTTP/1.1 */
  -    int status;         /* the status of the cached file */
  -    char *resp_line;    /* the whole status like (protocol, code + message) */
  -    array_header *hdrs; /* the HTTP headers of the file */
  +struct cache_req {
  +    request_rec *req;		/* the request */
  +    char *url;			/* the URL requested */
  +    char *filename;		/* name of the cache file, or NULL if no cache */
  +    char *tempfile;		/* name of the temporary file, of NULL if not caching */
  +    time_t ims;			/* if-modified-since date of request; -1 if no header */
  +    BUFF *fp;			/* the cache file descriptor if the file is cached
  +				   and may be returned, or NULL if the file is
  +				   not cached (or must be reloaded) */
  +    time_t expire;		/* calculated expire date of cached entity */
  +    time_t lmod;		/* last-modified date of cached entity */
  +    time_t date;		/* the date the cached file was last touched */
  +    int version;		/* update count of the file */
  +    unsigned int len;		/* content length */
  +    char *protocol;		/* Protocol, and major/minor number, e.g. HTTP/1.1 */
  +    int status;			/* the status of the cached file */
  +    char *resp_line;		/* the whole status like (protocol, code + message) */
  +    array_header *hdrs;		/* the HTTP headers of the file */
   };
  -      
  +
   /* Function prototypes */
   
   /* proxy_cache.c */
   
   void proxy_cache_tidy(struct cache_req *c);
   int proxy_cache_check(request_rec *r, char *url, struct cache_conf *conf,
  -    struct cache_req **cr);
  +		      struct cache_req **cr);
   int proxy_cache_update(struct cache_req *c, array_header *resp_hdrs,
  -    const int is_HTTP1, int nocache);
  +		       const int is_HTTP1, int nocache);
   void proxy_garbage_coll(request_rec *r);
   
   /* proxy_connect.c */
   
  -int proxy_connect_handler(request_rec *r, struct cache_req *c, char *url, 
  -    const char *proxyhost, int proxyport);
  +int proxy_connect_handler(request_rec *r, struct cache_req *c, char *url,
  +			  const char *proxyhost, int proxyport);
   
   /* proxy_ftp.c */
   
  @@ -248,33 +244,33 @@
   /* proxy_http.c */
   
   int proxy_http_canon(request_rec *r, char *url, const char *scheme,
  -    int def_port);
  +		     int def_port);
   int proxy_http_handler(request_rec *r, struct cache_req *c, char *url,
  -    const char *proxyhost, int proxyport);
  +		       const char *proxyhost, int proxyport);
   
   /* proxy_util.c */
   
   int proxy_hex2c(const char *x);
   void proxy_c2hex(int ch, char *x);
   char *proxy_canonenc(pool *p, const char *x, int len, enum enctype t,
  -    int isenc);
  +		     int isenc);
   char *proxy_canon_netloc(pool *p, char **const urlp, char **userp,
  -    char **passwordp, char **hostp, int *port);
  +			 char **passwordp, char **hostp, int *port);
   char *proxy_date_canon(pool *p, char *x);
   array_header *proxy_read_headers(pool *p, char *buffer, int size, BUFF *f);
   long int proxy_send_fb(BUFF *f, request_rec *r, BUFF *f2, struct cache_req *c);
   struct hdr_entry *proxy_get_header(array_header *hdrs_arr, const char *name);
   struct hdr_entry *proxy_add_header(array_header *hdrs_arr, char *field,
  -    char *value, int rep);
  +				   char *value, int rep);
   void proxy_del_header(array_header *hdrs_arr, const char *field);
  -void proxy_send_headers(request_rec *r, const char *respline, 
  -    array_header *hdrs_arr);
  +void proxy_send_headers(request_rec *r, const char *respline,
  +			array_header *hdrs_arr);
   int proxy_liststr(const char *list, const char *val);
  -void proxy_hash(const char *it, char *val,int ndepth,int nlength);
  +void proxy_hash(const char *it, char *val, int ndepth, int nlength);
   int proxy_hex2sec(const char *x);
   void proxy_sec2hex(int t, char *y);
   void proxy_log_uerror(const char *routine, const char *file, const char *err,
  -    server_rec *s);
  +		      server_rec *s);
   BUFF *proxy_cache_error(struct cache_req *r);
   int proxyerror(request_rec *r, const char *message);
   const char *proxy_host2addr(const char *host, struct hostent *reqhp);
  @@ -284,4 +280,3 @@
   int proxy_is_word(struct dirconn_entry *This);
   int proxy_doconnect(int sock, struct sockaddr_in *addr, request_rec *r);
   int proxy_garbage_init(server_rec *, pool *);
  -
  
  
  
  1.27      +274 -307  apachen/src/modules/proxy/proxy_cache.c
  
  Index: proxy_cache.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/proxy/proxy_cache.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- proxy_cache.c	1997/09/06 14:16:56	1.26
  +++ proxy_cache.c	1997/09/16 00:59:39	1.27
  @@ -68,23 +68,24 @@
   
   #define	abs(c)	((c) >= 0 ? (c) : -(c))
   
  -struct gc_ent
  -{
  +struct gc_ent {
       unsigned long int len;
       time_t expire;
  -    char file[HASH_LEN+1];
  +    char file[HASH_LEN + 1];
   
   };
   
  -static int
  -gcdiff(const void *ap, const void *bp)
  +static int gcdiff(const void *ap, const void *bp)
   {
  -    const struct gc_ent *a=*(const struct gc_ent * const *)ap;
  -    const struct gc_ent *b=*(const struct gc_ent * const *)bp;
  +    const struct gc_ent *a = *(const struct gc_ent * const *) ap;
  +    const struct gc_ent *b = *(const struct gc_ent * const *) bp;
   
  -    if (a->expire > b->expire) return 1;
  -    else if (a->expire < b->expire) return -1;
  -    else return 0;
  +    if (a->expire > b->expire)
  +	return 1;
  +    else if (a->expire < b->expire)
  +	return -1;
  +    else
  +	return 0;
   }
   
   static int curbytes, cachesize, every;
  @@ -94,91 +95,87 @@
   static mutex *garbage_mutex = NULL;
   
   
  -int
  -proxy_garbage_init(server_rec *r, pool *p)
  +int proxy_garbage_init(server_rec *r, pool *p)
   {
  -    if(!garbage_mutex)
  -        garbage_mutex = create_mutex(NULL);
  +    if (!garbage_mutex)
  +	garbage_mutex = create_mutex(NULL);
   
  -    return(0);
  +    return (0);
   }
   
   
  -static int sub_garbage_coll(request_rec *r,array_header *files,
  -			    const char *cachedir,const char *cachesubdir);
  +static int sub_garbage_coll(request_rec *r, array_header *files,
  +			    const char *cachedir, const char *cachesubdir);
   static void help_proxy_garbage_coll(request_rec *r);
   
   void proxy_garbage_coll(request_rec *r)
   {
       static int inside = 0;
   
  -    (void)acquire_mutex(garbage_mutex);
  -    if(inside == 1)
  -    {
  -        (void)release_mutex(garbage_mutex);
  -        return;
  +    (void) acquire_mutex(garbage_mutex);
  +    if (inside == 1) {
  +	(void) release_mutex(garbage_mutex);
  +	return;
       }
       else
  -        inside = 1;
  -    (void)release_mutex(garbage_mutex);
  +	inside = 1;
  +    (void) release_mutex(garbage_mutex);
   
       help_proxy_garbage_coll(r);
   
  -    (void)acquire_mutex(garbage_mutex);
  +    (void) acquire_mutex(garbage_mutex);
       inside = 0;
  -    (void)release_mutex(garbage_mutex);
  +    (void) release_mutex(garbage_mutex);
   }
   
   
   void help_proxy_garbage_coll(request_rec *r)
  -    {
  +{
       const char *cachedir;
       void *sconf = r->server->module_config;
       proxy_server_conf *pconf =
  -        (proxy_server_conf *)get_module_config(sconf, &proxy_module);
  -    const struct cache_conf *conf=&pconf->cache;
  +    (proxy_server_conf *) get_module_config(sconf, &proxy_module);
  +    const struct cache_conf *conf = &pconf->cache;
       array_header *files;
       struct stat buf;
  -    struct gc_ent *fent,**elts;    
  +    struct gc_ent *fent, **elts;
       int i, timefd;
  -    static time_t lastcheck=BAD_DATE;  /* static data!!! */
  +    static time_t lastcheck = BAD_DATE;		/* static data!!! */
   
       cachedir = conf->root;
       cachesize = conf->space;
       every = conf->gcinterval;
   
  -    if (cachedir == NULL || every == -1) return;
  +    if (cachedir == NULL || every == -1)
  +	return;
       now = time(NULL);
  -    if (now != -1 && lastcheck != BAD_DATE && now < lastcheck + every) return;
  +    if (now != -1 && lastcheck != BAD_DATE && now < lastcheck + every)
  +	return;
   
  -    block_alarms();	/* avoid SIGALRM on big cache cleanup */
  +    block_alarms();		/* avoid SIGALRM on big cache cleanup */
   
       filename = palloc(r->pool, strlen(cachedir) + HASH_LEN + 2);
       strcpy(filename, cachedir);
       strcat(filename, "/.time");
  -    if (stat(filename, &buf) == -1) /* does not exist */
  -    {
  -	if (errno != ENOENT)
  -	{
  +    if (stat(filename, &buf) == -1) {	/* does not exist */
  +	if (errno != ENOENT) {
   	    proxy_log_uerror("stat", filename, NULL, r->server);
   	    unblock_alarms();
   	    return;
   	}
  -	if ((timefd = creat(filename, 0666)) == -1)
  -	{
  +	if ((timefd = creat(filename, 0666)) == -1) {
   	    if (errno != EEXIST)
   		proxy_log_uerror("creat", filename, NULL, r->server);
   	    else
  -		lastcheck = abs(now);  /* someone else got in there */
  +		lastcheck = abs(now);	/* someone else got in there */
   	    unblock_alarms();
   	    return;
   	}
   	close(timefd);
  -    } else
  -    {
  -	lastcheck = buf.st_mtime;  /* save the time */
  -	if (now < lastcheck + every)
  -	{
  +    }
  +    else {
  +	lastcheck = buf.st_mtime;	/* save the time */
  +	if (now < lastcheck + every) {
   	    unblock_alarms();
   	    return;
   	}
  @@ -189,27 +186,24 @@
       curblocks = 0;
       curbytes = 0;
   
  -    sub_garbage_coll(r,files,cachedir,"/");
  +    sub_garbage_coll(r, files, cachedir, "/");
   
  -    if (curblocks < cachesize || curblocks + curbytes <= cachesize)
  -    {
  +    if (curblocks < cachesize || curblocks + curbytes <= cachesize) {
   	unblock_alarms();
   	return;
       }
   
       qsort(files->elts, files->nelts, sizeof(struct gc_ent *), gcdiff);
   
  -    elts = (struct gc_ent **)files->elts;
  -    for (i=0; i < files->nelts; i++)
  -    {
  +    elts = (struct gc_ent **) files->elts;
  +    for (i = 0; i < files->nelts; i++) {
   	fent = elts[i];
   	sprintf(filename, "%s%s", cachedir, fent->file);
  -	Explain3("GC Unlinking %s (expiry %ld, now %ld)",filename,fent->expire,now);
  +	Explain3("GC Unlinking %s (expiry %ld, now %ld)", filename, fent->expire, now);
   #if TESTING
  -	fprintf(stderr,"Would unlink %s\n",filename);
  +	fprintf(stderr, "Would unlink %s\n", filename);
   #else
  -	if (unlink(filename) == -1)
  -	{
  +	if (unlink(filename) == -1) {
   	    if (errno != ENOENT)
   		proxy_log_uerror("unlink", filename, NULL, r->server);
   	}
  @@ -218,8 +212,7 @@
   	{
   	    curblocks -= fent->len >> 10;
   	    curbytes -= fent->len & 0x3FF;
  -	    if (curbytes < 0)
  -	    {
  +	    if (curbytes < 0) {
   		curbytes += 1024;
   		curblocks--;
   	    }
  @@ -230,13 +223,13 @@
       unblock_alarms();
   }
   
  -static int sub_garbage_coll(request_rec *r,array_header *files,
  -			     const char *cachebasedir,const char *cachesubdir)
  +static int sub_garbage_coll(request_rec *r, array_header *files,
  +			  const char *cachebasedir, const char *cachesubdir)
   {
       char line[27];
       char cachedir[HUGE_STRING_LEN];
       struct stat buf;
  -    int fd,i;
  +    int fd, i;
       DIR *dir;
   #if defined(NEXT) || defined(WIN32)
       struct DIR_TYPE *ent;
  @@ -244,101 +237,92 @@
       struct dirent *ent;
   #endif
       struct gc_ent *fent;
  -    int nfiles=0;
  +    int nfiles = 0;
   
  -    ap_snprintf(cachedir, sizeof(cachedir), "%s%s",cachebasedir,cachesubdir);
  -    Explain1("GC Examining directory %s",cachedir);
  +    ap_snprintf(cachedir, sizeof(cachedir), "%s%s", cachebasedir, cachesubdir);
  +    Explain1("GC Examining directory %s", cachedir);
       dir = opendir(cachedir);
  -    if (dir == NULL)
  -    {
  +    if (dir == NULL) {
   	proxy_log_uerror("opendir", cachedir, NULL, r->server);
   	return 0;
       }
   
  -    while ((ent = readdir(dir)) != NULL)
  -    {
  -	if (ent->d_name[0] == '.') continue;
  +    while ((ent = readdir(dir)) != NULL) {
  +	if (ent->d_name[0] == '.')
  +	    continue;
   	sprintf(filename, "%s%s", cachedir, ent->d_name);
  -	Explain1("GC Examining file %s",filename);
  +	Explain1("GC Examining file %s", filename);
   /* is it a temporary file? */
  -	if (strncmp(ent->d_name, "tmp", 3) == 0)
  -	{
  +	if (strncmp(ent->d_name, "tmp", 3) == 0) {
   /* then stat it to see how old it is; delete temporary files > 1 day old */
  -	    if (stat(filename, &buf) == -1)
  -	    {
  +	    if (stat(filename, &buf) == -1) {
   		if (errno != ENOENT)
   		    proxy_log_uerror("stat", filename, NULL, r->server);
  -	    } else if (now != -1 && buf.st_atime < now - SEC_ONE_DAY &&
  -		       buf.st_mtime < now - SEC_ONE_DAY)
  -		{
  -		Explain1("GC unlink %s",filename);
  +	    }
  +	    else if (now != -1 && buf.st_atime < now - SEC_ONE_DAY &&
  +		     buf.st_mtime < now - SEC_ONE_DAY) {
  +		Explain1("GC unlink %s", filename);
   #if TESTING
  -		fprintf(stderr,"Would unlink %s\n",filename);
  +		fprintf(stderr, "Would unlink %s\n", filename);
   #else
   		unlink(filename);
   #endif
  -		}
  +	    }
   	    continue;
   	}
   	++nfiles;
   /* is it another file? */
   	/* FIXME: Shouldn't any unexpected files be deleted? */
  -	/*	if (strlen(ent->d_name) != HASH_LEN) continue; */
  +	/*      if (strlen(ent->d_name) != HASH_LEN) continue; */
   
   /* read the file */
   	fd = open(filename, O_RDONLY | O_BINARY);
  -	if (fd == -1)
  -	{
  -	    if (errno  != ENOENT) proxy_log_uerror("open", filename,NULL,
  -		r->server);
  +	if (fd == -1) {
  +	    if (errno != ENOENT)
  +		proxy_log_uerror("open", filename, NULL,
  +				 r->server);
   	    continue;
   	}
  -	if (fstat(fd, &buf) == -1)
  -	{
  +	if (fstat(fd, &buf) == -1) {
   	    proxy_log_uerror("fstat", filename, NULL, r->server);
   	    close(fd);
   	    continue;
   	}
  -	if(S_ISDIR(buf.st_mode))
  -	    {
  +	if (S_ISDIR(buf.st_mode)) {
   	    char newcachedir[HUGE_STRING_LEN];
   	    close(fd);
   	    ap_snprintf(newcachedir, sizeof(newcachedir),
  -		"%s%s/",cachesubdir,ent->d_name);
  -	    if(!sub_garbage_coll(r,files,cachebasedir,newcachedir))
  -		{
  -		ap_snprintf(newcachedir, sizeof(newcachedir), 
  -			"%s%s",cachedir,ent->d_name);
  +			"%s%s/", cachesubdir, ent->d_name);
  +	    if (!sub_garbage_coll(r, files, cachebasedir, newcachedir)) {
  +		ap_snprintf(newcachedir, sizeof(newcachedir),
  +			    "%s%s", cachedir, ent->d_name);
   #if TESTING
  -		fprintf(stderr,"Would remove directory %s\n",newcachedir);
  +		fprintf(stderr, "Would remove directory %s\n", newcachedir);
   #else
   		rmdir(newcachedir);
   #endif
   		--nfiles;
  -		}
  -	    continue;
   	    }
  -	    
  +	    continue;
  +	}
  +
   	i = read(fd, line, 26);
  -	if (i == -1)
  -	{
  +	if (i == -1) {
   	    proxy_log_uerror("read", filename, NULL, r->server);
   	    close(fd);
   	    continue;
   	}
   	close(fd);
   	line[i] = '\0';
  -	expire = proxy_hex2sec(line+18);
  +	expire = proxy_hex2sec(line + 18);
   	if (!checkmask(line, "&&&&&&&& &&&&&&&& &&&&&&&&") ||
  -	  expire == BAD_DATE)
  -	{
  +	    expire == BAD_DATE) {
   	    /* bad file */
   	    if (now != -1 && buf.st_atime > now + SEC_ONE_DAY &&
  -		buf.st_mtime > now + SEC_ONE_DAY)
  -	    {
  +		buf.st_mtime > now + SEC_ONE_DAY) {
   		log_error("proxy: deleting bad cache file", r->server);
   #if TESTING
  -		fprintf(stderr,"Would unlink bad file %s\n",filename);
  +		fprintf(stderr, "Would unlink bad file %s\n", filename);
   #else
   		unlink(filename);
   #endif
  @@ -357,15 +341,14 @@
   	fent = palloc(r->pool, sizeof(struct gc_ent));
   	fent->len = buf.st_size;
   	fent->expire = expire;
  -	strcpy(fent->file,cachesubdir);
  +	strcpy(fent->file, cachesubdir);
   	strcat(fent->file, ent->d_name);
  -	*(struct gc_ent **)push_array(files) = fent;
  +	*(struct gc_ent **) push_array(files) = fent;
   
   /* accumulate in blocks, to cope with directories > 4Gb */
  -	curblocks += buf.st_size >> 10; /* Kbytes */
  +	curblocks += buf.st_size >> 10;		/* Kbytes */
   	curbytes += buf.st_size & 0x3FF;
  -	if (curbytes >= 1024)
  -	{
  +	if (curbytes >= 1024) {
   	    curbytes -= 1024;
   	    curblocks++;
   	}
  @@ -383,8 +366,7 @@
    *         0 on failure (bad file or wrong URL)
    *        -1 on UNIX error
    */
  -static int
  -rdcache(pool *p, BUFF *cachefp, struct cache_req *c)
  +static int rdcache(pool *p, BUFF *cachefp, struct cache_req *c)
   {
       char urlbuff[1034], *strp;
       int len;
  @@ -394,48 +376,54 @@
    * dates are stored as hex seconds since 1970
    */
       len = bgets(urlbuff, 1034, cachefp);
  -    if (len == -1) return -1;
  -    if (len == 0 || urlbuff[len-1] != '\n') return 0;
  -    urlbuff[len-1] = '\0';
  +    if (len == -1)
  +	return -1;
  +    if (len == 0 || urlbuff[len - 1] != '\n')
  +	return 0;
  +    urlbuff[len - 1] = '\0';
   
       if (!checkmask(urlbuff,
  -      "&&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&&"))
  +		   "&&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&&"))
   	return 0;
   
       c->date = proxy_hex2sec(urlbuff);
  -    c->lmod = proxy_hex2sec(urlbuff+9);
  -    c->expire = proxy_hex2sec(urlbuff+18);
  -    c->version = proxy_hex2sec(urlbuff+27);
  -    c->len = proxy_hex2sec(urlbuff+36);
  +    c->lmod = proxy_hex2sec(urlbuff + 9);
  +    c->expire = proxy_hex2sec(urlbuff + 18);
  +    c->version = proxy_hex2sec(urlbuff + 27);
  +    c->len = proxy_hex2sec(urlbuff + 36);
   
   /* check that we have the same URL */
       len = bgets(urlbuff, 1034, cachefp);
  -    if (len == -1) return -1;
  +    if (len == -1)
  +	return -1;
       if (len == 0 || strncmp(urlbuff, "X-URL: ", 7) != 0 ||
  -	urlbuff[len-1] != '\n')
  +	urlbuff[len - 1] != '\n')
  +	return 0;
  +    urlbuff[len - 1] = '\0';
  +    if (strcmp(urlbuff + 7, c->url) != 0)
   	return 0;
  -    urlbuff[len-1] = '\0';
  -    if (strcmp(urlbuff+7, c->url) != 0) return 0;
   
   /* What follows is the message */
       len = bgets(urlbuff, 1034, cachefp);
  -    if (len == -1) return -1;
  -    if (len == 0 || urlbuff[len-1] != '\n') return 0;
  +    if (len == -1)
  +	return -1;
  +    if (len == 0 || urlbuff[len - 1] != '\n')
  +	return 0;
       urlbuff[--len] = '\0';
   
       c->resp_line = pstrdup(p, urlbuff);
       strp = strchr(urlbuff, ' ');
  -    if (strp == NULL) return 0;
  +    if (strp == NULL)
  +	return 0;
   
       c->status = atoi(strp);
       c->hdrs = proxy_read_headers(p, urlbuff, 1034, cachefp);
  -    if (c->hdrs == NULL) return -1;
  -    if (c->len != -1) /* add a content-length header */
  -    {
  +    if (c->hdrs == NULL)
  +	return -1;
  +    if (c->len != -1) {		/* add a content-length header */
   	struct hdr_entry *q;
   	q = proxy_get_header(c->hdrs, "Content-Length");
  -	if (q == NULL)
  -	{
  +	if (q == NULL) {
   	    strp = palloc(p, 15);
   	    ap_snprintf(strp, 15, "%u", c->len);
   	    proxy_add_header(c->hdrs, "Content-Length", strp, HDR_REP);
  @@ -459,19 +447,18 @@
    *         if last modified after if-modified-since then add
    *            last modified date to request
    */
  -int
  -proxy_cache_check(request_rec *r, char *url, struct cache_conf *conf,
  -	     struct cache_req **cr)
  +int proxy_cache_check(request_rec *r, char *url, struct cache_conf *conf,
  +		      struct cache_req **cr)
   {
       char hashfile[66], *imstr, *pragma, *p, *auth;
       struct cache_req *c;
       time_t now;
       BUFF *cachefp;
       int cfd, i;
  -    const long int zero=0L;
  +    const long int zero = 0L;
       void *sconf = r->server->module_config;
       proxy_server_conf *pconf =
  -        (proxy_server_conf *)get_module_config(sconf, &proxy_module);
  +    (proxy_server_conf *) get_module_config(sconf, &proxy_module);
   
       c = pcalloc(r->pool, sizeof(struct cache_req));
       *cr = c;
  @@ -481,17 +468,16 @@
   /* get the If-Modified-Since date of the request */
       c->ims = BAD_DATE;
       imstr = table_get(r->headers_in, "If-Modified-Since");
  -    if (imstr != NULL)
  -    {
  +    if (imstr != NULL) {
   /* this may modify the value in the original table */
   	imstr = proxy_date_canon(r->pool, imstr);
   	c->ims = parseHTTPdate(imstr);
  -	if (c->ims == BAD_DATE)  /* bad or out of range date; remove it */
  +	if (c->ims == BAD_DATE)	/* bad or out of range date; remove it */
   	    table_set(r->headers_in, "If-Modified-Since", NULL);
       }
   
   /* find the filename for this cache entry */
  -    proxy_hash(url, hashfile,pconf->cache.dirlevels,pconf->cache.dirlength);
  +    proxy_hash(url, hashfile, pconf->cache.dirlevels, pconf->cache.dirlength);
       if (conf->root != NULL)
   	c->filename = pstrcat(r->pool, conf->root, "/", hashfile, NULL);
       else
  @@ -501,38 +487,35 @@
   /* find out about whether the request can access the cache */
       pragma = table_get(r->headers_in, "Pragma");
       auth = table_get(r->headers_in, "Authorization");
  -    Explain5("Request for %s, pragma=%s, auth=%s, ims=%ld, imstr=%s",url,
  -      pragma,auth,c->ims,imstr);
  +    Explain5("Request for %s, pragma=%s, auth=%s, ims=%ld, imstr=%s", url,
  +	     pragma, auth, c->ims, imstr);
       if (c->filename != NULL && r->method_number == M_GET &&
   	strlen(url) < 1024 && !proxy_liststr(pragma, "no-cache") &&
  -	    auth == NULL)
  -    {
  -        Explain1("Check file %s",c->filename);
  +	auth == NULL) {
  +	Explain1("Check file %s", c->filename);
   	cfd = open(c->filename, O_RDWR | O_BINARY);
  -	if (cfd != -1)
  -	{
  +	if (cfd != -1) {
   	    note_cleanups_for_fd(r->pool, cfd);
   	    cachefp = bcreate(r->pool, B_RD | B_WR);
   	    bpushfd(cachefp, cfd, cfd);
  -	} else if (errno != ENOENT)
  +	}
  +	else if (errno != ENOENT)
   	    proxy_log_uerror("open", c->filename,
  -		"proxy: error opening cache file", r->server);
  +			     "proxy: error opening cache file", r->server);
   #ifdef EXPLAIN
   	else
  -	    Explain1("File %s not found",c->filename);
  +	    Explain1("File %s not found", c->filename);
   #endif
       }
  -    
  -    if (cachefp != NULL)
  -    {
  +
  +    if (cachefp != NULL) {
   	i = rdcache(r->pool, cachefp, c);
   	if (i == -1)
   	    proxy_log_uerror("read", c->filename,
  -		"proxy: error reading cache file", r->server);
  +			     "proxy: error reading cache file", r->server);
   	else if (i == 0)
   	    log_error("proxy: bad cache file", r->server);
  -	if (i != 1)
  -	{
  +	if (i != 1) {
   	    pclosef(r->pool, cachefp->fd);
   	    cachefp = NULL;
   	}
  @@ -542,23 +525,21 @@
       /* FIXME: Shouldn't we check the URL somewhere? */
       now = time(NULL);
   /* Ok, have we got some un-expired data? */
  -    if (cachefp != NULL && c->expire != BAD_DATE && now < c->expire)
  -    {
  -        Explain0("Unexpired data available");
  +    if (cachefp != NULL && c->expire != BAD_DATE && now < c->expire) {
  +	Explain0("Unexpired data available");
   /* check IMS */
  -	if (c->lmod != BAD_DATE && c->ims != BAD_DATE && c->ims >= c->lmod)
  -	{
  +	if (c->lmod != BAD_DATE && c->ims != BAD_DATE && c->ims >= c->lmod) {
   /* has the cached file changed since this request? */
  -	    if (c->date == BAD_DATE || c->date > c->ims)
  -	    {
  +	    if (c->date == BAD_DATE || c->date > c->ims) {
   /* No, but these header values may have changed, so we send them with the
    * 304 response
    */
  -	    /* CHECKME: surely this was wrong? (Ben)
  -		p = table_get(r->headers_in, "Expires");
  -		*/
  +		/* CHECKME: surely this was wrong? (Ben)
  +		   p = table_get(r->headers_in, "Expires");
  +		 */
   		p = table_get(c->hdrs, "Expires");
  -		if (p != NULL) 	table_set(r->headers_out, "Expires", p);
  +		if (p != NULL)
  +		    table_set(r->headers_out, "Expires", p);
   	    }
   	    pclosef(r->pool, cachefp->fd);
   	    Explain0("Use local copy, cached file hasn't changed");
  @@ -576,7 +557,8 @@
   	}
   	bsetopt(r->connection->client, BO_BYTECT, &zero);
   	r->sent_bodyct = 1;
  -	if (!r->header_only) proxy_send_fb (cachefp, r, NULL, NULL);
  +	if (!r->header_only)
  +	    proxy_send_fb(cachefp, r, NULL, NULL);
   	pclosef(r->pool, cachefp->fd);
   	return OK;
       }
  @@ -585,21 +567,19 @@
    * request, then add an If-Modified-Since
    */
   
  -    if (cachefp != NULL && c->lmod != BAD_DATE && !r->header_only)
  -    {
  +    if (cachefp != NULL && c->lmod != BAD_DATE && !r->header_only) {
   /*
    * use the later of the one from the request and the last-modified date
    * from the cache
    */
  -	if (c->ims == BAD_DATE || c->ims < c->lmod)
  -	{
  +	if (c->ims == BAD_DATE || c->ims < c->lmod) {
   	    struct hdr_entry *q;
   
   	    q = proxy_get_header(c->hdrs, "Last-Modified");
   
   	    if (q != NULL && q->value != NULL)
   		table_set(r->headers_in, "If-Modified-Since",
  -			  (char *)q->value);
  +			  (char *) q->value);
   	}
       }
       c->fp = cachefp;
  @@ -621,11 +601,10 @@
    *  from the cache, maybe updating the header line
    *  otherwise, delete the old cached file and open a new temporary file
    */
  -int
  -proxy_cache_update(struct cache_req *c, array_header *resp_hdrs,
  -                   const int is_HTTP1, int nocache)
  +int proxy_cache_update(struct cache_req *c, array_header *resp_hdrs,
  +		       const int is_HTTP1, int nocache)
   {
  -    request_rec *r=c->req;
  +    request_rec *r = c->req;
       char *p;
       int i;
       struct hdr_entry *expire, *dates, *lmods, *clen;
  @@ -633,8 +612,8 @@
       char buff[46];
       void *sconf = r->server->module_config;
       proxy_server_conf *conf =
  -        (proxy_server_conf *)get_module_config(sconf, &proxy_module);
  -    const long int zero=0L;
  +    (proxy_server_conf *) get_module_config(sconf, &proxy_module);
  +    const long int zero = 0L;
   
       c->tempfile = NULL;
   
  @@ -643,23 +622,24 @@
    * read it
    */
       expire = proxy_get_header(resp_hdrs, "Expires");
  -    if (expire != NULL) expc = parseHTTPdate(expire->value);
  -    else expc = BAD_DATE;
  +    if (expire != NULL)
  +	expc = parseHTTPdate(expire->value);
  +    else
  +	expc = BAD_DATE;
   
   /*
    * read the last-modified date; if the date is bad, then delete it
    */
       lmods = proxy_get_header(resp_hdrs, "Last-Modified");
  -    if (lmods != NULL)
  -    {
  +    if (lmods != NULL) {
   	lmod = parseHTTPdate(lmods->value);
  -	if (lmod == BAD_DATE)
  -	{
  +	if (lmod == BAD_DATE) {
   /* kill last modified date */
   	    lmods->value = NULL;
   	    lmods = NULL;
   	}
  -    } else
  +    }
  +    else
   	lmod = BAD_DATE;
   
   /*
  @@ -677,18 +657,16 @@
   	(r->status == 200 && lmods == NULL && is_HTTP1) ||
   	r->header_only ||
   	table_get(r->headers_in, "Authorization") != NULL ||
  -	nocache)
  -    {
  -	Explain1("Response is not cacheable, unlinking %s",c->filename);
  +	nocache) {
  +	Explain1("Response is not cacheable, unlinking %s", c->filename);
   /* close the file */
  -	if (c->fp != NULL)
  -	{
  +	if (c->fp != NULL) {
   	    pclosef(r->pool, c->fp->fd);
   	    c->fp = NULL;
   	}
   /* delete the previously cached file */
   	unlink(c->filename);
  -	return DECLINED; /* send data to client but not cache */
  +	return DECLINED;	/* send data to client but not cache */
       }
   
   /* otherwise, we are going to cache the response */
  @@ -696,13 +674,14 @@
    * Read the date. Generate one if one is not supplied
    */
       dates = proxy_get_header(resp_hdrs, "Date");
  -    if (dates != NULL) date = parseHTTPdate(dates->value);
  -    else date = BAD_DATE;
  -	
  +    if (dates != NULL)
  +	date = parseHTTPdate(dates->value);
  +    else
  +	date = BAD_DATE;
  +
       now = time(NULL);
   
  -    if (date == BAD_DATE) /* No, or bad date */
  -    {
  +    if (date == BAD_DATE) {	/* No, or bad date */
   /* no date header! */
   /* add one; N.B. use the time _now_ rather than when we were checking the cache
    */
  @@ -721,17 +700,16 @@
   	Explain0("Last modified is in the future, replacing with now");
       }
   /* if the response did not contain the header, then use the cached version */
  -    if (lmod == BAD_DATE && c->fp != NULL)
  -	{
  +    if (lmod == BAD_DATE && c->fp != NULL) {
   	lmod = c->lmod;
   	Explain0("Reusing cached last modified");
  -	}
  +    }
   
   /* we now need to calculate the expire data for the object. */
  -    if (expire == NULL && c->fp != NULL)  /* no expiry data sent in response */
  -    {
  +    if (expire == NULL && c->fp != NULL) {	/* no expiry data sent in response */
   	expire = proxy_get_header(c->hdrs, "Expires");
  -	if (expire != NULL) expc = parseHTTPdate(expire->value);
  +	if (expire != NULL)
  +	    expc = parseHTTPdate(expire->value);
       }
   /* so we now have the expiry date */
   /* if no expiry date then
  @@ -740,60 +718,59 @@
    *   else
    *      expire date = now + defaultexpire
    */
  -    Explain1("Expiry date is %ld",expc);
  -    if (expc == BAD_DATE)
  -    {
  -	if (lmod != BAD_DATE)
  -	{
  -	    double x = (double)(date - lmod)*conf->cache.lmfactor;
  -	    double maxex=conf->cache.maxexpire;
  -	    if (x > maxex) x = maxex;
  -	    expc = abs(now) + (int)x;
  -	} else
  +    Explain1("Expiry date is %ld", expc);
  +    if (expc == BAD_DATE) {
  +	if (lmod != BAD_DATE) {
  +	    double x = (double) (date - lmod) * conf->cache.lmfactor;
  +	    double maxex = conf->cache.maxexpire;
  +	    if (x > maxex)
  +		x = maxex;
  +	    expc = abs(now) + (int) x;
  +	}
  +	else
   	    expc = abs(now) + conf->cache.defaultexpire;
  -	Explain1("Expiry date calculated %ld",expc);
  +	Explain1("Expiry date calculated %ld", expc);
       }
   
   /* get the content-length header */
       clen = proxy_get_header(c->hdrs, "Content-Length");
  -    if (clen == NULL) c->len = -1;
  -    else c->len = atoi(clen->value);
  +    if (clen == NULL)
  +	c->len = -1;
  +    else
  +	c->len = atoi(clen->value);
   
       proxy_sec2hex(date, buff);
       buff[8] = ' ';
  -    proxy_sec2hex(lmod, buff+9);
  +    proxy_sec2hex(lmod, buff + 9);
       buff[17] = ' ';
  -    proxy_sec2hex(expc, buff+18);
  +    proxy_sec2hex(expc, buff + 18);
       buff[26] = ' ';
  -    proxy_sec2hex(c->version++, buff+27);
  +    proxy_sec2hex(c->version++, buff + 27);
       buff[35] = ' ';
  -    proxy_sec2hex(c->len, buff+36);
  +    proxy_sec2hex(c->len, buff + 36);
       buff[44] = '\n';
       buff[45] = '\0';
   
   /* if file not modified */
  -    if (r->status == 304)
  -    {
  -	if (c->ims != BAD_DATE && lmod != BAD_DATE && lmod <= c->ims)
  -	{
  +    if (r->status == 304) {
  +	if (c->ims != BAD_DATE && lmod != BAD_DATE && lmod <= c->ims) {
   /* set any changed headers somehow */
   /* update dates and version, but not content-length */
  -	    if (lmod != c->lmod || expc != c->expire || date != c->date)
  -	    {
  -		off_t curpos=lseek(c->fp->fd, 0, SEEK_SET);
  +	    if (lmod != c->lmod || expc != c->expire || date != c->date) {
  +		off_t curpos = lseek(c->fp->fd, 0, SEEK_SET);
   		if (curpos == -1)
   		    proxy_log_uerror("lseek", c->filename,
  -			       "proxy: error seeking on cache file",r->server);
  +			   "proxy: error seeking on cache file", r->server);
   		else if (write(c->fp->fd, buff, 35) == -1)
   		    proxy_log_uerror("write", c->filename,
  -			       "proxy: error updating cache file", r->server);
  +			     "proxy: error updating cache file", r->server);
   	    }
   	    pclosef(r->pool, c->fp->fd);
   	    Explain0("Remote document not modified, use local copy");
   	    /* CHECKME: Is this right? Shouldn't we check IMS again here? */
   	    return USE_LOCAL_COPY;
  -	} else
  -	{
  +	}
  +	else {
   /* return the whole document */
   	    Explain0("Remote document updated, sending");
   	    r->status_line = strchr(c->resp_line, ' ') + 1;
  @@ -805,63 +782,60 @@
   	    }
   	    bsetopt(r->connection->client, BO_BYTECT, &zero);
   	    r->sent_bodyct = 1;
  -	    if (!r->header_only) proxy_send_fb (c->fp, r, NULL, NULL);
  +	    if (!r->header_only)
  +		proxy_send_fb(c->fp, r, NULL, NULL);
   /* set any changed headers somehow */
   /* update dates and version, but not content-length */
  -	    if (lmod != c->lmod || expc != c->expire || date != c->date)
  -	    {
  -		off_t curpos=lseek(c->fp->fd, 0, SEEK_SET);
  +	    if (lmod != c->lmod || expc != c->expire || date != c->date) {
  +		off_t curpos = lseek(c->fp->fd, 0, SEEK_SET);
   
   		if (curpos == -1)
   		    proxy_log_uerror("lseek", c->filename,
  -			       "proxy: error seeking on cache file",r->server);
  +			   "proxy: error seeking on cache file", r->server);
   		else if (write(c->fp->fd, buff, 35) == -1)
   		    proxy_log_uerror("write", c->filename,
  -			       "proxy: error updating cache file", r->server);
  +			     "proxy: error updating cache file", r->server);
   	    }
   	    pclosef(r->pool, c->fp->fd);
   	    return OK;
   	}
       }
  -/* new or modified file */	    
  -    if (c->fp != NULL)
  -    {
  +/* new or modified file */
  +    if (c->fp != NULL) {
   	pclosef(r->pool, c->fp->fd);
   	c->fp->fd = -1;
       }
       c->version = 0;
  -    proxy_sec2hex(0, buff+27);
  +    proxy_sec2hex(0, buff + 27);
       buff[35] = ' ';
   
   /* open temporary file */
   #define TMPFILESTR	"/tmpXXXXXX"
       if (conf->cache.root == NULL)
  -        return DECLINED;
  -    c->tempfile=palloc(r->pool,strlen(conf->cache.root)+sizeof(TMPFILESTR));
  -    strcpy(c->tempfile,conf->cache.root);
  -    strcat(c->tempfile,TMPFILESTR);
  +	return DECLINED;
  +    c->tempfile = palloc(r->pool, strlen(conf->cache.root) + sizeof(TMPFILESTR));
  +    strcpy(c->tempfile, conf->cache.root);
  +    strcat(c->tempfile, TMPFILESTR);
   #undef TMPFILESTR
       p = mktemp(c->tempfile);
       if (p == NULL)
  -        return DECLINED;
  +	return DECLINED;
   
  -    Explain1("Create temporary file %s",c->tempfile);
  +    Explain1("Create temporary file %s", c->tempfile);
   
       i = open(c->tempfile, O_WRONLY | O_CREAT | O_EXCL | O_BINARY, 0622);
  -    if (i == -1)
  -    {
  +    if (i == -1) {
   	proxy_log_uerror("open", c->tempfile,
  -	    "proxy: error creating cache file", r->server);
  +			 "proxy: error creating cache file", r->server);
   	return DECLINED;
       }
       note_cleanups_for_fd(r->pool, i);
       c->fp = bcreate(r->pool, B_WR);
       bpushfd(c->fp, -1, i);
   
  -    if (bvputs(c->fp, buff, "X-URL: ", c->url, "\n", NULL) == -1)
  -    {
  +    if (bvputs(c->fp, buff, "X-URL: ", c->url, "\n", NULL) == -1) {
   	proxy_log_uerror("write", c->tempfile,
  -	    "proxy: error writing cache file", r->server);
  +			 "proxy: error writing cache file", r->server);
   	pclosef(r->pool, c->fp->fd);
   	unlink(c->tempfile);
   	c->fp = NULL;
  @@ -869,32 +843,30 @@
       return DECLINED;
   }
   
  -void
  -proxy_cache_tidy(struct cache_req *c)
  +void proxy_cache_tidy(struct cache_req *c)
   {
  -    server_rec *s=c->req->server;
  +    server_rec *s = c->req->server;
       long int bc;
   
  -    if (c->fp == NULL) return;
  +    if (c->fp == NULL)
  +	return;
   
       bgetopt(c->req->connection->client, BO_BYTECT, &bc);
   
  -    if (c->len != -1)
  -    {
  +    if (c->len != -1) {
   /* file lengths don't match; don't cache it */
  -	if (bc != c->len)
  -	{
  -	    pclosef(c->req->pool, c->fp->fd);  /* no need to flush */
  +	if (bc != c->len) {
  +	    pclosef(c->req->pool, c->fp->fd);	/* no need to flush */
   	    unlink(c->tempfile);
   	    return;
   	}
  -    } else
  -    if (c->req->connection->aborted) {
  -	    pclosef(c->req->pool, c->fp->fd);  /* no need to flush */
  -	    unlink(c->tempfile);
  -	    return;
  -    } else 
  -    {
  +    }
  +    else if (c->req->connection->aborted) {
  +	pclosef(c->req->pool, c->fp->fd);	/* no need to flush */
  +	unlink(c->tempfile);
  +	return;
  +    }
  +    else {
   /* update content-length of file */
   	char buff[9];
   	off_t curpos;
  @@ -905,72 +877,67 @@
   	curpos = lseek(c->fp->fd, 36, SEEK_SET);
   	if (curpos == -1)
   	    proxy_log_uerror("lseek", c->tempfile,
  -		"proxy: error seeking on cache file", s);
  +			     "proxy: error seeking on cache file", s);
   	else if (write(c->fp->fd, buff, 8) == -1)
   	    proxy_log_uerror("write", c->tempfile,
  -		"proxy: error updating cache file", s);
  +			     "proxy: error updating cache file", s);
       }
   
  -    if (bflush(c->fp) == -1)
  -    {
  +    if (bflush(c->fp) == -1) {
   	proxy_log_uerror("write", c->tempfile,
  -	    "proxy: error writing to cache file", s);
  +			 "proxy: error writing to cache file", s);
   	pclosef(c->req->pool, c->fp->fd);
   	unlink(c->tempfile);
   	return;
       }
   
  -    if (pclosef(c->req->pool, c->fp->fd) == -1)
  -    {
  +    if (pclosef(c->req->pool, c->fp->fd) == -1) {
   	proxy_log_uerror("close", c->tempfile,
  -	    "proxy: error closing cache file", s);
  +			 "proxy: error closing cache file", s);
   	unlink(c->tempfile);
   	return;
       }
   
  -    if (unlink(c->filename) == -1 && errno != ENOENT)
  -    {
  +    if (unlink(c->filename) == -1 && errno != ENOENT) {
   	proxy_log_uerror("unlink", c->filename,
  -		   "proxy: error deleting old cache file", s);
  -    } else
  -	{
  +			 "proxy: error deleting old cache file", s);
  +    }
  +    else {
   	char *p;
  -	proxy_server_conf *conf=
  -	  (proxy_server_conf *)get_module_config(s->module_config,&proxy_module);
  +	proxy_server_conf *conf =
  +	(proxy_server_conf *) get_module_config(s->module_config, &proxy_module);
   
  -	for(p=c->filename+strlen(conf->cache.root)+1 ; ; )
  -	    {
  -	    p=strchr(p,'/');
  -	    if(!p)
  +	for (p = c->filename + strlen(conf->cache.root) + 1;;) {
  +	    p = strchr(p, '/');
  +	    if (!p)
   		break;
  -	    *p='\0';
  +	    *p = '\0';
   #ifdef WIN32
  -	    if(mkdir(c->filename) < 0 && errno != EEXIST)
  +	    if (mkdir(c->filename) < 0 && errno != EEXIST)
   #else
  -	    if(mkdir(c->filename,S_IREAD|S_IWRITE|S_IEXEC) < 0 && errno != EEXIST)
  +	    if (mkdir(c->filename, S_IREAD | S_IWRITE | S_IEXEC) < 0 && errno != EEXIST)
   #endif /* WIN32 */
  -		proxy_log_uerror("mkdir",c->filename,
  -		    "proxy: error creating cache directory",s);
  -	    *p='/';
  +		proxy_log_uerror("mkdir", c->filename,
  +				 "proxy: error creating cache directory", s);
  +	    *p = '/';
   	    ++p;
  -	    }
  +	}
   #if defined(__EMX__) || defined(WIN32)
  -        /* Under OS/2 use rename. */            
  -        if (rename(c->tempfile, c->filename) == -1)
  -            proxy_log_uerror("rename", c->filename,
  -		"proxy: error renaming cache file", s);
  -}
  -#else            
  +	/* Under OS/2 use rename. */
  +	if (rename(c->tempfile, c->filename) == -1)
  +	    proxy_log_uerror("rename", c->filename,
  +			     "proxy: error renaming cache file", s);
  +    }
  +#else
   
   	if (link(c->tempfile, c->filename) == -1)
   	    proxy_log_uerror("link", c->filename,
  -		"proxy: error linking cache file", s);
  -	}
  +			     "proxy: error linking cache file", s);
  +    }
   
       if (unlink(c->tempfile) == -1)
   	proxy_log_uerror("unlink", c->tempfile,
  -	    "proxy: error deleting temp file",s);
  +			 "proxy: error deleting temp file", s);
   #endif
   
   }
  -
  
  
  
  1.18      +94 -100   apachen/src/modules/proxy/proxy_connect.c
  
  Index: proxy_connect.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/proxy/proxy_connect.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- proxy_connect.c	1997/09/06 14:16:56	1.17
  +++ proxy_connect.c	1997/09/16 00:59:39	1.18
  @@ -57,7 +57,7 @@
   #include "http_main.h"
   
   #ifdef HAVE_BSTRING_H
  -#include <bstring.h>            /* for IRIX, FD_SET calls bzero() */
  +#include <bstring.h>		/* for IRIX, FD_SET calls bzero() */
   #endif
   
   DEF_Explain
  @@ -84,61 +84,57 @@
    * FIXME: this doesn't log the number of bytes sent, but
    *        that may be okay, since the data is supposed to
    *        be transparent. In fact, this doesn't log at all
  - *	  yet. 8^)
  + *        yet. 8^)
    * FIXME: doesn't check any headers initally sent from the
    *        client.
    * FIXME: should allow authentication, but hopefully the
    *        generic proxy authentication is good enough.
    * FIXME: no check for r->assbackwards, whatever that is.
  - */ 
  - 
  -int
  -proxy_connect_handler(request_rec *r, struct cache_req *c, char *url,
  -    const char *proxyhost, int proxyport)
  + */
  +
  +int proxy_connect_handler(request_rec *r, struct cache_req *c, char *url,
  +			  const char *proxyhost, int proxyport)
   {
       struct sockaddr_in server;
       struct in_addr destaddr;
       struct hostent server_hp;
       const char *host, *err;
       char *p;
  -    int   port, sock;
  +    int port, sock;
       char buffer[HUGE_STRING_LEN];
  -    int  nbytes, i, j;
  +    int nbytes, i, j;
       fd_set fds;
   
       void *sconf = r->server->module_config;
       proxy_server_conf *conf =
  -        (proxy_server_conf *)get_module_config(sconf, &proxy_module);
  -    struct noproxy_entry *npent=(struct noproxy_entry *)conf->noproxies->elts;
  +    (proxy_server_conf *) get_module_config(sconf, &proxy_module);
  +    struct noproxy_entry *npent = (struct noproxy_entry *) conf->noproxies->elts;
   
       memset(&server, '\0', sizeof(server));
  -    server.sin_family=AF_INET;
  - 
  +    server.sin_family = AF_INET;
  +
       /* Break the URL into host:port pairs */
   
       host = url;
       p = strchr(url, ':');
  -    if (p==NULL)
  +    if (p == NULL)
   	port = DEFAULT_HTTPS_PORT;
  -    else
  -    {
  -      port = atoi(p+1);
  -      *p='\0';
  +    else {
  +	port = atoi(p + 1);
  +	*p = '\0';
       }
  - 
  +
   /* check if ProxyBlock directive on this host */
       destaddr.s_addr = ap_inet_addr(host);
  -    for (i=0; i < conf->noproxies->nelts; i++)
  -    {
  -        if ((npent[i].name != NULL && strstr(host, npent[i].name) != NULL)
  -          || destaddr.s_addr == npent[i].addr.s_addr || npent[i].name[0] == '*')
  -            return proxyerror(r, "Connect to remote machine blocked");
  +    for (i = 0; i < conf->noproxies->nelts; i++) {
  +	if ((npent[i].name != NULL && strstr(host, npent[i].name) != NULL)
  +	    || destaddr.s_addr == npent[i].addr.s_addr || npent[i].name[0] == '*')
  +	    return proxyerror(r, "Connect to remote machine blocked");
       }
   
  -    switch (port)
  -    {
  +    switch (port) {
   	case DEFAULT_HTTPS_PORT:
  -	case DEFAULT_SNEWS_PORT:
  +	    case DEFAULT_SNEWS_PORT:
   	    break;
   	default:
   	    return HTTP_SERVICE_UNAVAILABLE;
  @@ -146,38 +142,38 @@
   
       if (proxyhost) {
   	Explain2("CONNECT to remote proxy %s on port %d", proxyhost, proxyport);
  -    } else {
  -    	Explain2("CONNECT to %s on port %d", host, port);
       }
  - 
  +    else {
  +	Explain2("CONNECT to %s on port %d", host, port);
  +    }
  +
       server.sin_port = (proxyport ? htons(proxyport) : htons(port));
       err = proxy_host2addr(proxyhost ? proxyhost : host, &server_hp);
   
       if (err != NULL)
  -	return proxyerror(r, err); /* give up */
  - 
  -    sock = psocket(r->pool, PF_INET, SOCK_STREAM, IPPROTO_TCP);  
  -    if (sock == -1)
  -    {     
  -        aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +	return proxyerror(r, err);	/* give up */
  +
  +    sock = psocket(r->pool, PF_INET, SOCK_STREAM, IPPROTO_TCP);
  +    if (sock == -1) {
  +	aplog_error(APLOG_MARK, APLOG_ERR, r->server,
   		    "proxy: error creating socket");
  -        return SERVER_ERROR;
  -    }     
  - 
  +	return SERVER_ERROR;
  +    }
  +
       j = 0;
       while (server_hp.h_addr_list[j] != NULL) {
  -        memcpy(&server.sin_addr, server_hp.h_addr_list[j],
  -            sizeof(struct in_addr));
  -        i = proxy_doconnect(sock, &server, r);
  -        if (i == 0)
  -            break; 
  -        j++;
  -    }   
  +	memcpy(&server.sin_addr, server_hp.h_addr_list[j],
  +	       sizeof(struct in_addr));
  +	i = proxy_doconnect(sock, &server, r);
  +	if (i == 0)
  +	    break;
  +	j++;
  +    }
       if (i == -1) {
   	pclosesocket(r->pool, sock);
  -        return proxyerror(r, "Could not connect to remote machine");
  +	return proxyerror(r, "Could not connect to remote machine");
       }
  - 
  +
       /* If we are connecting through a remote proxy, we need to pass
        * the CONNECT request on to it.
        */
  @@ -187,67 +183,65 @@
   	 * a HTTP/1.0 request to keep things simple.
   	 */
   	Explain0("Sending the CONNECT request to the remote proxy");
  -	ap_snprintf(buffer, sizeof(buffer), "CONNECT %s HTTP/1.0\015\012", 
  -	    r->uri); 
  +	ap_snprintf(buffer, sizeof(buffer), "CONNECT %s HTTP/1.0\015\012",
  +		    r->uri);
   	write(sock, buffer, strlen(buffer));
   	ap_snprintf(buffer, sizeof(buffer),
  -	    "Proxy-agent: %s\015\012\015\012", SERVER_VERSION);
  +		    "Proxy-agent: %s\015\012\015\012", SERVER_VERSION);
   	write(sock, buffer, strlen(buffer));
  -    } else {
  +    }
  +    else {
   	Explain0("Returning 200 OK Status");
   	rvputs(r, "HTTP/1.0 200 Connection established\015\012", NULL);
   	rvputs(r, "Proxy-agent: ", SERVER_VERSION, "\015\012\015\012", NULL);
   	bflush(r->connection->client);
       }
   
  -    while (1) /* Infinite loop until error (one side closes the connection) */
  -    {
  -      FD_ZERO(&fds);
  -      FD_SET(sock, &fds);
  -      FD_SET(r->connection->client->fd, &fds);
  -    
  -      Explain0("Going to sleep (select)");
  -      i = ap_select((r->connection->client->fd > sock ?
  -	r->connection->client->fd+1 :
  -	sock+1), &fds, NULL, NULL, NULL);
  -      Explain1("Woke from select(), i=%d",i);
  -    
  -      if (i)
  -      {
  -        if (FD_ISSET(sock, &fds))
  -        {
  -           Explain0("sock was set");
  -           if((nbytes=read(sock,buffer,HUGE_STRING_LEN))!=0)
  -           {
  -              if (nbytes==-1)
  -		  break;
  -              if (write(r->connection->client->fd, buffer, nbytes)==EOF)
  -		  break;
  -              Explain1("Wrote %d bytes to client", nbytes);
  -           }
  -           else break;
  -        }
  -        else if (FD_ISSET(r->connection->client->fd, &fds))
  -        { 
  -           Explain0("client->fd was set");
  -           if((nbytes=read(r->connection->client->fd,buffer,
  -		HUGE_STRING_LEN))!=0)   
  -           {
  -              if (nbytes==-1)
  -		  break;
  -              if (write(sock,buffer,nbytes)==EOF)
  -		  break;
  -              Explain1("Wrote %d bytes to server", nbytes);
  -           }
  -           else break;
  -        }
  -        else break; /* Must be done waiting */
  -      }
  -      else break;
  +    while (1) {			/* Infinite loop until error (one side closes the connection) */
  +	FD_ZERO(&fds);
  +	FD_SET(sock, &fds);
  +	FD_SET(r->connection->client->fd, &fds);
  +
  +	Explain0("Going to sleep (select)");
  +	i = ap_select((r->connection->client->fd > sock ?
  +		       r->connection->client->fd + 1 :
  +		       sock + 1), &fds, NULL, NULL, NULL);
  +	Explain1("Woke from select(), i=%d", i);
  +
  +	if (i) {
  +	    if (FD_ISSET(sock, &fds)) {
  +		Explain0("sock was set");
  +		if ((nbytes = read(sock, buffer, HUGE_STRING_LEN)) != 0) {
  +		    if (nbytes == -1)
  +			break;
  +		    if (write(r->connection->client->fd, buffer, nbytes) == EOF)
  +			break;
  +		    Explain1("Wrote %d bytes to client", nbytes);
  +		}
  +		else
  +		    break;
  +	    }
  +	    else if (FD_ISSET(r->connection->client->fd, &fds)) {
  +		Explain0("client->fd was set");
  +		if ((nbytes = read(r->connection->client->fd, buffer,
  +				   HUGE_STRING_LEN)) != 0) {
  +		    if (nbytes == -1)
  +			break;
  +		    if (write(sock, buffer, nbytes) == EOF)
  +			break;
  +		    Explain1("Wrote %d bytes to server", nbytes);
  +		}
  +		else
  +		    break;
  +	    }
  +	    else
  +		break;		/* Must be done waiting */
  +	}
  +	else
  +	    break;
       }
   
  -    pclosesocket(r->pool,sock);
  -    
  -    return OK;
  -}     
  +    pclosesocket(r->pool, sock);
   
  +    return OK;
  +}
  
  
  
  1.38      +415 -424  apachen/src/modules/proxy/proxy_ftp.c
  
  Index: proxy_ftp.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/proxy/proxy_ftp.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- proxy_ftp.c	1997/09/06 14:16:57	1.37
  +++ proxy_ftp.c	1997/09/16 00:59:40	1.38
  @@ -61,19 +61,17 @@
   /*
    * Decodes a '%' escaped string, and returns the number of characters
    */
  -static int
  -decodeenc(char *x)
  +static int decodeenc(char *x)
   {
       int i, j, ch;
   
  -    if (x[0] == '\0') return 0; /* special case for no characters */
  -    for (i=0, j=0; x[i] != '\0'; i++, j++)
  -    {
  +    if (x[0] == '\0')
  +	return 0;		/* special case for no characters */
  +    for (i = 0, j = 0; x[i] != '\0'; i++, j++) {
   /* decode it if not already done */
   	ch = x[i];
  -	if ( ch == '%' && isxdigit(x[i+1]) && isxdigit(x[i+2]))
  -	{
  -	    ch = proxy_hex2c(&x[i+1]);
  +	if (ch == '%' && isxdigit(x[i + 1]) && isxdigit(x[i + 2])) {
  +	    ch = proxy_hex2c(&x[i + 1]);
   	    i += 2;
   	}
   	x[j] = ch;
  @@ -86,20 +84,18 @@
    * checks an encoded ftp string for bad characters, namely, CR, LF or
    * non-ascii character
    */
  -static int
  -ftp_check_string(const char *x)
  +static int ftp_check_string(const char *x)
   {
       int i, ch;
   
  -    for (i=0; x[i] != '\0'; i++)
  -    {
  +    for (i = 0; x[i] != '\0'; i++) {
   	ch = x[i];
  -	if ( ch == '%' && isxdigit(x[i+1]) && isxdigit(x[i+2]))
  -	{
  -	    ch = proxy_hex2c(&x[i+1]);
  +	if (ch == '%' && isxdigit(x[i + 1]) && isxdigit(x[i + 2])) {
  +	    ch = proxy_hex2c(&x[i + 1]);
   	    i += 2;
   	}
  -	if (ch == '\015' || ch == '\012' || (ch & 0x80)) return 0;
  +	if (ch == '\015' || ch == '\012' || (ch & 0x80))
  +	    return 0;
       }
       return 1;
   }
  @@ -107,19 +103,21 @@
   /*
    * Canonicalise ftp URLs.
    */
  -int
  -proxy_ftp_canon(request_rec *r, char *url)
  +int proxy_ftp_canon(request_rec *r, char *url)
   {
       char *user, *password, *host, *path, *parms, *p, sport[7];
  -    pool *pool=r->pool;
  +    pool *pool = r->pool;
       const char *err;
       int port;
   
       port = DEFAULT_FTP_PORT;
       err = proxy_canon_netloc(pool, &url, &user, &password, &host, &port);
  -    if (err) return BAD_REQUEST;
  -    if (user != NULL && !ftp_check_string(user)) return BAD_REQUEST;
  -    if (password != NULL && !ftp_check_string(password)) return BAD_REQUEST;
  +    if (err)
  +	return BAD_REQUEST;
  +    if (user != NULL && !ftp_check_string(user))
  +	return BAD_REQUEST;
  +    if (password != NULL && !ftp_check_string(password))
  +	return BAD_REQUEST;
   
   /* now parse path/parameters args, according to rfc1738 */
   /* N.B. if this isn't a true proxy request, then the URL path
  @@ -128,30 +126,32 @@
    * path.
    */
       p = strchr(url, ';');
  -    if (p != NULL)
  -    {
  +    if (p != NULL) {
   	*(p++) = '\0';
   	parms = proxy_canonenc(pool, p, strlen(p), enc_parm, r->proxyreq);
  -	if (parms == NULL) return BAD_REQUEST;
  -    } else
  +	if (parms == NULL)
  +	    return BAD_REQUEST;
  +    }
  +    else
   	parms = "";
   
       path = proxy_canonenc(pool, url, strlen(url), enc_path, r->proxyreq);
  -    if (path == NULL) return BAD_REQUEST;
  -    if (!ftp_check_string(path)) return BAD_REQUEST;
  +    if (path == NULL)
  +	return BAD_REQUEST;
  +    if (!ftp_check_string(path))
  +	return BAD_REQUEST;
   
  -    if (!r->proxyreq && r->args != NULL)
  -    {
  -	if (p != NULL)
  -	{
  +    if (!r->proxyreq && r->args != NULL) {
  +	if (p != NULL) {
   	    p = proxy_canonenc(pool, r->args, strlen(r->args), enc_parm, 1);
  -	    if (p == NULL) return BAD_REQUEST;
  +	    if (p == NULL)
  +		return BAD_REQUEST;
   	    parms = pstrcat(pool, parms, "?", p, NULL);
   	}
  -	else
  -	{
  +	else {
   	    p = proxy_canonenc(pool, r->args, strlen(r->args), enc_fpath, 1);
  -	    if (p == NULL) return BAD_REQUEST;
  +	    if (p == NULL)
  +		return BAD_REQUEST;
   	    path = pstrcat(pool, path, "?", p, NULL);
   	}
   	r->args = NULL;
  @@ -159,14 +159,16 @@
   
   /* now, rebuild URL */
   
  -    if (port != DEFAULT_FTP_PORT) ap_snprintf(sport, sizeof(sport), ":%d", port);
  -    else sport[0] = '\0';
  +    if (port != DEFAULT_FTP_PORT)
  +	ap_snprintf(sport, sizeof(sport), ":%d", port);
  +    else
  +	sport[0] = '\0';
   
       r->filename = pstrcat(pool, "proxy:ftp://", (user != NULL) ? user : "",
  -			  (password != NULL) ? ":" : "",
  -			  (password != NULL) ? password : "",
  -			  (user != NULL) ? "@" : "", host, sport, "/", path,
  -			  (parms[0] != '\0') ? ";" : "", parms, NULL);
  +			       (password != NULL) ? ":" : "",
  +			       (password != NULL) ? password : "",
  +		          (user != NULL) ? "@" : "", host, sport, "/", path,
  +			       (parms[0] != '\0') ? ";" : "", parms, NULL);
   
       return OK;
   }
  @@ -175,14 +177,14 @@
    * Returns the ftp status code;
    *  or -1 on I/O error, 0 on data error
    */
  -static int
  -ftp_getrc(BUFF *f)
  +static int ftp_getrc(BUFF *f)
   {
       int i, len, status;
       char linebuff[100], buff[5];
   
       len = bgets(linebuff, 100, f);
  -    if (len == -1) return -1;
  +    if (len == -1)
  +	return -1;
   /* check format */
       if (len < 5 || !isdigit(linebuff[0]) || !isdigit(linebuff[1]) ||
   	!isdigit(linebuff[2]) || (linebuff[3] != ' ' && linebuff[3] != '-'))
  @@ -190,22 +192,19 @@
       else
   	status = 100 * linebuff[0] + 10 * linebuff[1] + linebuff[2] - 111 * '0';
   
  -    if (linebuff[len-1] != '\n')
  -    {
  +    if (linebuff[len - 1] != '\n') {
   	i = bskiplf(f);
       }
   
  -/* skip continuation lines */    
  -    if (linebuff[3] == '-')
  -    {
  +/* skip continuation lines */
  +    if (linebuff[3] == '-') {
   	memcpy(buff, linebuff, 3);
   	buff[3] = ' ';
  -	do
  -	{
  +	do {
   	    len = bgets(linebuff, 100, f);
  -	    if (len == -1) return -1;
  -	    if (linebuff[len-1] != '\n')
  -	    {
  +	    if (len == -1)
  +		return -1;
  +	    if (linebuff[len - 1] != '\n') {
   		i = bskiplf(f);
   	    }
   	} while (memcmp(linebuff, buff, 4) != 0);
  @@ -215,15 +214,15 @@
   }
   
   static char *
  -encode_space(request_rec *r, char *path)
  +     encode_space(request_rec *r, char *path)
   {
  -    pool *pool=r->pool;
  +    pool *pool = r->pool;
       char *newpath;
       int i, j, len;
   
       len = strlen(path);
       newpath = palloc(pool, 3 * len + 1);
  -    for (i=0, j=0; i < len; i++, j++) {
  +    for (i = 0, j = 0; i < len; i++, j++) {
   	if (path[i] != ' ')
   	    newpath[j] = path[i];
   	else {
  @@ -235,8 +234,7 @@
       return newpath;
   }
   
  -static long int
  -send_dir(BUFF *f, request_rec *r, BUFF *f2, struct cache_req *c, char *url)
  +static long int send_dir(BUFF *f, request_rec *r, BUFF *f2, struct cache_req *c, char *url)
   {
       char buf[IOBUFSIZE];
       char buf2[IOBUFSIZE];
  @@ -252,8 +250,7 @@
       conn_rec *con = r->connection;
   
       tempurl = pstrdup(r->pool, url);
  -    if ((n = strcspn(tempurl, "@")) != strlen(tempurl))	/* hide user/passwd */
  -    {
  +    if ((n = strcspn(tempurl, "@")) != strlen(tempurl)) {	/* hide user/passwd */
   	memmove(tempurl + (n - 5), tempurl, 6);
   	tempurl += n - 5;	/* leave room for ftp:// */
       }
  @@ -261,124 +258,131 @@
       n = decodeenc(tempurl);
       ap_snprintf(buf, sizeof(buf), "<HTML><HEAD><TITLE>%s</TITLE></HEAD><BODY><H1>Directory %s</H1><HR><PRE>", tempurl, tempurl);
       bwrite(con->client, buf, strlen(buf));
  -    if (f2 != NULL) bwrite(f2, buf, strlen(buf));
  -    total_bytes_sent=strlen(buf);
  -    while(!con->aborted)
  -    {
  -        n = bgets(buf, IOBUFSIZE, f);
  -        if (n == -1) /* input error */
  -        {
  -            if (f2 != NULL) f2 = proxy_cache_error(c);
  -            break;
  -        }
  -        if (n == 0) break; /* EOF */
  -        if(buf[0]=='l')
  -        {
  -            char *link;
  -
  -            link=strstr(buf, " -> ");
  -            filename=link;
  -            do filename--; while (filename[0]!=' ');
  -            *(filename++)=0;
  -            *(link++)=0;
  -            ap_snprintf(urlptr, sizeof(urlptr), "%s%s%s",url,(url[strlen(url)-1]=='/' ? "" : "/"), filename);
  -            ap_snprintf(buf2, sizeof(urlptr), "%s <A HREF=\"%s\">%s %s</A>\015\012", buf, urlptr, filename, link);
  -            strncpy(buf, buf2, sizeof(buf)-1);
  -	    buf[sizeof(buf)-1] = '\0';
  -            n=strlen(buf);
  -        }
  -        else if(buf[0]=='d' || buf[0]=='-' || buf[0]=='l' || isdigit(buf[0]))
  -        {
  -	    if(isdigit(buf[0])) {		/* handle DOS dir */
  -	        searchptr = strchr(buf, '<');
  -	        if(searchptr != NULL)
  +    if (f2 != NULL)
  +	bwrite(f2, buf, strlen(buf));
  +    total_bytes_sent = strlen(buf);
  +    while (!con->aborted) {
  +	n = bgets(buf, IOBUFSIZE, f);
  +	if (n == -1) {		/* input error */
  +	    if (f2 != NULL)
  +		f2 = proxy_cache_error(c);
  +	    break;
  +	}
  +	if (n == 0)
  +	    break;		/* EOF */
  +	if (buf[0] == 'l') {
  +	    char *link;
  +
  +	    link = strstr(buf, " -> ");
  +	    filename = link;
  +	    do
  +		filename--;
  +	    while (filename[0] != ' ');
  +	    *(filename++) = 0;
  +	    *(link++) = 0;
  +	    ap_snprintf(urlptr, sizeof(urlptr), "%s%s%s", url, (url[strlen(url) - 1] == '/' ? "" : "/"), filename);
  +	    ap_snprintf(buf2, sizeof(urlptr), "%s <A HREF=\"%s\">%s %s</A>\015\012", buf, urlptr, filename, link);
  +	    strncpy(buf, buf2, sizeof(buf) - 1);
  +	    buf[sizeof(buf) - 1] = '\0';
  +	    n = strlen(buf);
  +	}
  +	else if (buf[0] == 'd' || buf[0] == '-' || buf[0] == 'l' || isdigit(buf[0])) {
  +	    if (isdigit(buf[0])) {	/* handle DOS dir */
  +		searchptr = strchr(buf, '<');
  +		if (searchptr != NULL)
   		    *searchptr = '[';
  -	        searchptr = strchr(buf, '>');
  -	        if(searchptr != NULL)
  +		searchptr = strchr(buf, '>');
  +		if (searchptr != NULL)
   		    *searchptr = ']';
   	    }
  -		
  -            filename=strrchr(buf, ' ');
  -            *(filename++)=0;
  -            filename[strlen(filename)-1]=0;
   
  -            /* handle filenames with spaces in 'em */
  -            if(!strcmp(filename, ".") || !strcmp(filename, "..") || firstfile) {
  +	    filename = strrchr(buf, ' ');
  +	    *(filename++) = 0;
  +	    filename[strlen(filename) - 1] = 0;
  +
  +	    /* handle filenames with spaces in 'em */
  +	    if (!strcmp(filename, ".") || !strcmp(filename, "..") || firstfile) {
   		firstfile = 0;
  -                searchidx = filename - buf;
  -            }
  -            else if (searchidx != 0 && buf[searchidx] != 0) {
  -                *(--filename) = ' ';
  -                buf[searchidx - 1] = 0;
  -                filename = &buf[searchidx];    
  -            }   
  -
  -            /* Special handling for '.' and '..' */
  -            if (!strcmp(filename, "."))
  -            {
  -                ap_snprintf(urlptr, sizeof(urlptr), "%s",url);
  -                ap_snprintf(buf2, sizeof(buf2), "%s <A HREF=\"%s\">%s</A>\015\012", buf, urlptr, filename);
  -            }
  -            else if (!strcmp(filename, ".."))
  -            {
  -                char temp[200];
  -                char newpath[200];
  -                char *method, *host, *path, *newfile;
  -   
  -                strncpy(temp, url, sizeof(temp)-1);
  -		temp[sizeof(temp)-1] = '\0';
  -                method=temp;
  -
  -                host=strchr(method,':');
  -                if (host == NULL) host="";
  -                else *(host++)=0;
  -                host++; host++;
  -                
  -                path=strchr(host,'/');
  -                if (path == NULL) path="";
  -                else *(path++)=0;
  -                
  -                strncpy(newpath, path, sizeof(newpath)-1);
  -		newpath[sizeof(newpath)-1] = '\0';
  -                newfile=strrchr(newpath,'/');
  -                if (newfile) *(newfile)=0;
  -                else newpath[0]=0;
  -
  -                ap_snprintf(urlptr, sizeof(urlptr), "%s://%s/%s",method,host,newpath);
  -                ap_snprintf(buf2, sizeof(buf2), "%s <A HREF=\"%s\">%s</A>\015\012", buf, urlptr, filename);
  -            }
  -            else 
  -            {
  -                ap_snprintf(urlptr, sizeof(urlptr), "%s%s%s",url,(url[strlen(url)-1]=='/' ? "" : "/"), filename);
  +		searchidx = filename - buf;
  +	    }
  +	    else if (searchidx != 0 && buf[searchidx] != 0) {
  +		*(--filename) = ' ';
  +		buf[searchidx - 1] = 0;
  +		filename = &buf[searchidx];
  +	    }
  +
  +	    /* Special handling for '.' and '..' */
  +	    if (!strcmp(filename, ".")) {
  +		ap_snprintf(urlptr, sizeof(urlptr), "%s", url);
  +		ap_snprintf(buf2, sizeof(buf2), "%s <A HREF=\"%s\">%s</A>\015\012", buf, urlptr, filename);
  +	    }
  +	    else if (!strcmp(filename, "..")) {
  +		char temp[200];
  +		char newpath[200];
  +		char *method, *host, *path, *newfile;
  +
  +		strncpy(temp, url, sizeof(temp) - 1);
  +		temp[sizeof(temp) - 1] = '\0';
  +		method = temp;
  +
  +		host = strchr(method, ':');
  +		if (host == NULL)
  +		    host = "";
  +		else
  +		    *(host++) = 0;
  +		host++;
  +		host++;
  +
  +		path = strchr(host, '/');
  +		if (path == NULL)
  +		    path = "";
  +		else
  +		    *(path++) = 0;
  +
  +		strncpy(newpath, path, sizeof(newpath) - 1);
  +		newpath[sizeof(newpath) - 1] = '\0';
  +		newfile = strrchr(newpath, '/');
  +		if (newfile)
  +		    *(newfile) = 0;
  +		else
  +		    newpath[0] = 0;
  +
  +		ap_snprintf(urlptr, sizeof(urlptr), "%s://%s/%s", method, host, newpath);
  +		ap_snprintf(buf2, sizeof(buf2), "%s <A HREF=\"%s\">%s</A>\015\012", buf, urlptr, filename);
  +	    }
  +	    else {
  +		ap_snprintf(urlptr, sizeof(urlptr), "%s%s%s", url, (url[strlen(url) - 1] == '/' ? "" : "/"), filename);
   		newurlptr = encode_space(r, urlptr);
  -                ap_snprintf(buf2, sizeof(buf2), "%s <A HREF=\"%s\">%s</A>\015\012", buf, newurlptr, filename);
  -            }
  -            strncpy(buf, buf2, sizeof(buf));
  -	    buf[sizeof(buf)-1] = '\0';
  -            n=strlen(buf);
  -        }      
  +		ap_snprintf(buf2, sizeof(buf2), "%s <A HREF=\"%s\">%s</A>\015\012", buf, newurlptr, filename);
  +	    }
  +	    strncpy(buf, buf2, sizeof(buf));
  +	    buf[sizeof(buf) - 1] = '\0';
  +	    n = strlen(buf);
  +	}
   
  -        o=0;
  +	o = 0;
   	total_bytes_sent += n;
   
   	if (f2 != NULL)
  -	    if (bwrite(f2, buf, n) != n) f2 = proxy_cache_error(c);
  -	
  -        while(n && !r->connection->aborted) {
  -            w = bwrite(con->client, &buf[o], n);
  +	    if (bwrite(f2, buf, n) != n)
  +		f2 = proxy_cache_error(c);
  +
  +	while (n && !r->connection->aborted) {
  +	    w = bwrite(con->client, &buf[o], n);
   	    if (w <= 0)
   		break;
  -	    reset_timeout(r); /* reset timeout after successfule write */
  -            n-=w;
  -            o+=w;
  -        }
  +	    reset_timeout(r);	/* reset timeout after successfule write */
  +	    n -= w;
  +	    o += w;
  +	}
       }
       ap_snprintf(buf, sizeof(buf), "</PRE><HR><I><A HREF=\"http://www.apache.org\">%s</A></I></BODY></HTML>", SERVER_VERSION);
       bwrite(con->client, buf, strlen(buf));
  -    if (f2 != NULL) bwrite(f2, buf, strlen(buf));
  -    total_bytes_sent+=strlen(buf);
  +    if (f2 != NULL)
  +	bwrite(f2, buf, strlen(buf));
  +    total_bytes_sent += strlen(buf);
       bflush(con->client);
  -    
  +
       return total_bytes_sent;
   }
   
  @@ -388,8 +392,7 @@
    * Troy Morrison <sp...@zoom.com>
    * PASV added by Chuck
    */
  -int
  -proxy_ftp_handler(request_rec *r, struct cache_req *c, char *url)
  +int proxy_ftp_handler(request_rec *r, struct cache_req *c, char *url)
   {
       char *host, *path, *p, *user, *password, *parms;
       const char *err;
  @@ -403,16 +406,16 @@
       array_header *resp_hdrs;
       BUFF *f, *cache;
       BUFF *data = NULL;
  -    pool *pool=r->pool;
  -    int one=1;
  -    const long int zero=0L;
  +    pool *pool = r->pool;
  +    int one = 1;
  +    const long int zero = 0L;
       NET_SIZE_T clen;
   
       void *sconf = r->server->module_config;
       proxy_server_conf *conf =
  -        (proxy_server_conf *)get_module_config(sconf, &proxy_module);
  -    struct noproxy_entry *npent=(struct noproxy_entry *)conf->noproxies->elts;
  -    struct nocache_entry *ncent=(struct nocache_entry *)conf->nocaches->elts;
  +    (proxy_server_conf *) get_module_config(sconf, &proxy_module);
  +    struct noproxy_entry *npent = (struct noproxy_entry *) conf->noproxies->elts;
  +    struct nocache_entry *ncent = (struct nocache_entry *) conf->nocaches->elts;
   
   /* stuff for PASV mode */
       unsigned int presult, h0, h1, h2, h3, p0, p1;
  @@ -422,10 +425,11 @@
       int pasvmode = 0;
       char pasv[64];
       char *pstr;
  - 
  +
   /* we only support GET and HEAD */
   
  -    if (r->method_number != M_GET) return NOT_IMPLEMENTED;
  +    if (r->method_number != M_GET)
  +	return NOT_IMPLEMENTED;
   
   /* We break the URL into host, port, path-search */
   
  @@ -440,23 +444,21 @@
       user = password = NULL;
       nocache = 0;
       p = strchr(host, '@');
  -    if (p != NULL)
  -    {
  +    if (p != NULL) {
   	(*p++) = '\0';
   	user = host;
   	host = p;
   /* find password */
   	p = strchr(user, ':');
  -	if (p != NULL)
  -	{
  +	if (p != NULL) {
   	    *(p++) = '\0';
   	    password = p;
   	    passlen = decodeenc(password);
   	}
   	userlen = decodeenc(user);
  -	nocache = 1; /* don't cache when a username is supplied */
  -    } else
  -    {
  +	nocache = 1;		/* don't cache when a username is supplied */
  +    }
  +    else {
   	user = "anonymous";
   	userlen = 9;
   
  @@ -465,8 +467,7 @@
       }
   
       p = strchr(host, ':');
  -    if (p != NULL)
  -    {
  +    if (p != NULL) {
   	*(p++) = '\0';
   	if (isdigit(*p))
   	    port = atoi(p);
  @@ -474,55 +475,55 @@
   
   /* check if ProxyBlock directive on this host */
       destaddr.s_addr = ap_inet_addr(host);
  -    for (i=0; i < conf->noproxies->nelts; i++)
  -    {
  -        if ((npent[i].name != NULL && strstr(host, npent[i].name) != NULL)
  -          || destaddr.s_addr == npent[i].addr.s_addr || npent[i].name[0] == '*')
  -            return proxyerror(r, "Connect to remote machine blocked");
  +    for (i = 0; i < conf->noproxies->nelts; i++) {
  +	if ((npent[i].name != NULL && strstr(host, npent[i].name) != NULL)
  +	    || destaddr.s_addr == npent[i].addr.s_addr || npent[i].name[0] == '*')
  +	    return proxyerror(r, "Connect to remote machine blocked");
       }
   
  -    Explain2("FTP: connect to %s:%d",host,port);
  +    Explain2("FTP: connect to %s:%d", host, port);
   
       parms = strchr(path, ';');
  -    if (parms != NULL) *(parms++) = '\0';
  +    if (parms != NULL)
  +	*(parms++) = '\0';
   
       memset(&server, 0, sizeof(struct sockaddr_in));
       server.sin_family = AF_INET;
       server.sin_port = htons(port);
       err = proxy_host2addr(host, &server_hp);
  -    if (err != NULL) return proxyerror(r, err); /* give up */
  +    if (err != NULL)
  +	return proxyerror(r, err);	/* give up */
   
       sock = psocket(pool, PF_INET, SOCK_STREAM, IPPROTO_TCP);
  -    if (sock == -1)
  -    {
  +    if (sock == -1) {
   	proxy_log_uerror("socket", NULL, "proxy: error creating socket",
  -	    r->server);
  +			 r->server);
   	return SERVER_ERROR;
       }
   
       if (conf->recv_buffer_size) {
  -      if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
  -		     (const char *) &conf->recv_buffer_size, sizeof(int))
  -	  == -1) {
  -	proxy_log_uerror("setsockopt", "(SO_RCVBUF)",
  -			 "Failed to set RecvBufferSize, using default",
  -			 r->server);
  -      }
  +	if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
  +		       (const char *) &conf->recv_buffer_size, sizeof(int))
  +	    == -1) {
  +	    proxy_log_uerror("setsockopt", "(SO_RCVBUF)",
  +			     "Failed to set RecvBufferSize, using default",
  +			     r->server);
  +	}
       }
   
  -    if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *)&one,
  -		   sizeof(one)) == -1)
  -    {
  +    if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &one,
  +		   sizeof(one)) == -1) {
   	proxy_log_uerror("setsockopt", NULL,
  -	    "proxy: error setting reuseaddr option", r->server);
  +			 "proxy: error setting reuseaddr option", r->server);
   	pclosesocket(pool, sock);
   	return SERVER_ERROR;
       }
   
   #ifdef SINIX_D_RESOLVER_BUG
  -    { struct in_addr *ip_addr = (struct in_addr *) *server_hp.h_addr_list;
  +    {
  +	struct in_addr *ip_addr = (struct in_addr *) *server_hp.h_addr_list;
   
  -	for ( ; ip_addr->s_addr != 0; ++ip_addr) {
  +	for (; ip_addr->s_addr != 0; ++ip_addr) {
   	    memcpy(&server.sin_addr, ip_addr, sizeof(struct in_addr));
   	    i = proxy_doconnect(sock, &server, r);
   	    if (i == 0)
  @@ -532,16 +533,16 @@
   #else
       j = 0;
       while (server_hp.h_addr_list[j] != NULL) {
  -        memcpy(&server.sin_addr, server_hp.h_addr_list[j],
  -            sizeof(struct in_addr));
  -        i = proxy_doconnect(sock, &server, r);
  -        if (i == 0)
  -            break; 
  -        j++;
  -    }   
  +	memcpy(&server.sin_addr, server_hp.h_addr_list[j],
  +	       sizeof(struct in_addr));
  +	i = proxy_doconnect(sock, &server, r);
  +	if (i == 0)
  +	    break;
  +	j++;
  +    }
   #endif
       if (i == -1) {
  -	pclosesocket (pool, sock);
  +	pclosesocket(pool, sock);
   	return proxyerror(r, "Could not connect to remote machine");
       }
   
  @@ -550,7 +551,7 @@
   /* shouldn't we implement telnet control options here? */
   
   /* possible results: 120, 220, 421 */
  -    hard_timeout ("proxy ftp", r);
  +    hard_timeout("proxy ftp", r);
       i = ftp_getrc(f);
       Explain1("FTP: returned status %d", i);
       if (i == -1) {
  @@ -567,13 +568,13 @@
       bputs("USER ", f);
       bwrite(f, user, userlen);
       bputs("\015\012", f);
  -    bflush(f); /* capture any errors */
  -    Explain1("FTP: USER %s",user);
  -    
  +    bflush(f);			/* capture any errors */
  +    Explain1("FTP: USER %s", user);
  +
   /* possible results; 230, 331, 332, 421, 500, 501, 530 */
   /* states: 1 - error, 2 - success; 3 - send password, 4,5 fail */
       i = ftp_getrc(f);
  -    Explain1("FTP: returned status %d",i);
  +    Explain1("FTP: returned status %d", i);
       if (i == -1) {
   	kill_timeout(r);
   	return proxyerror(r, "Error sending to remote server");
  @@ -586,18 +587,18 @@
   	kill_timeout(r);
   	return BAD_GATEWAY;
       }
  -	
  -    if (i == 331) /* send password */
  -    {
  -	if (password == NULL) return FORBIDDEN;
  +
  +    if (i == 331) {		/* send password */
  +	if (password == NULL)
  +	    return FORBIDDEN;
   	bputs("PASS ", f);
   	bwrite(f, password, passlen);
   	bputs("\015\012", f);
   	bflush(f);
  -        Explain1("FTP: PASS %s",password);
  +	Explain1("FTP: PASS %s", password);
   /* possible results 202, 230, 332, 421, 500, 501, 503, 530 */
   	i = ftp_getrc(f);
  -        Explain1("FTP: returned status %d",i);
  +	Explain1("FTP: returned status %d", i);
   	if (i == -1) {
   	    kill_timeout(r);
   	    return proxyerror(r, "Error sending to remote server");
  @@ -614,28 +615,28 @@
   	    kill_timeout(r);
   	    return BAD_GATEWAY;
   	}
  -    }  
  +    }
   
   /* set the directory */
   /* this is what we must do if we don't know the OS type of the remote
    * machine
    */
  -    for (;;)
  -    {
  +    for (;;) {
   	p = strchr(path, '/');
  -	if (p == NULL) break;
  +	if (p == NULL)
  +	    break;
   	*p = '\0';
   
   	len = decodeenc(path);
   	bputs("CWD ", f);
   	bwrite(f, path, len);
   	bputs("\015\012", f);
  -        bflush(f);
  -        Explain1("FTP: CWD %s",path);
  +	bflush(f);
  +	Explain1("FTP: CWD %s", path);
   /* responses: 250, 421, 500, 501, 502, 530, 550 */
   /* 1,3 error, 2 success, 4,5 failure */
   	i = ftp_getrc(f);
  -        Explain1("FTP: returned status %d",i);
  +	Explain1("FTP: returned status %d", i);
   	if (i == -1) {
   	    kill_timeout(r);
   	    return proxyerror(r, "Error sending to remote server");
  @@ -652,27 +653,27 @@
   	path = p + 1;
       }
   
  -    if (parms != NULL && strncmp(parms, "type=", 5) == 0)
  -    {
  +    if (parms != NULL && strncmp(parms, "type=", 5) == 0) {
   	parms += 5;
   	if ((parms[0] != 'd' && parms[0] != 'a' && parms[0] != 'i') ||
  -	    parms[1] != '\0') parms = "";
  +	    parms[1] != '\0')
  +	    parms = "";
       }
  -    else parms = "";
  +    else
  +	parms = "";
   
       /* changed to make binary transfers the default */
   
  -    if (parms[0] != 'a')
  -    {
  +    if (parms[0] != 'a') {
   	/* set type to image */
  -        /* TM - Added \015\012 to the end of TYPE I, otherwise it hangs the
  -           connection */
  +	/* TM - Added \015\012 to the end of TYPE I, otherwise it hangs the
  +	   connection */
   	bputs("TYPE I\015\012", f);
   	bflush(f);
  -        Explain0("FTP: TYPE I");
  +	Explain0("FTP: TYPE I");
   /* responses: 200, 421, 500, 501, 504, 530 */
   	i = ftp_getrc(f);
  -        Explain1("FTP: returned status %d",i);
  +	Explain1("FTP: returned status %d", i);
   	if (i == -1) {
   	    kill_timeout(r);
   	    return proxyerror(r, "Error sending to remote server");
  @@ -688,20 +689,19 @@
   
   /* try to set up PASV data connection first */
       dsock = psocket(pool, PF_INET, SOCK_STREAM, IPPROTO_TCP);
  -    if (dsock == -1)
  -    { 
  +    if (dsock == -1) {
   	proxy_log_uerror("socket", NULL, "proxy: error creating PASV socket",
  -	    r->server);
  +			 r->server);
   	bclose(f);
   	kill_timeout(r);
  -        return SERVER_ERROR;
  +	return SERVER_ERROR;
       }
   
       if (conf->recv_buffer_size) {
  -    	if (setsockopt(dsock, SOL_SOCKET, SO_RCVBUF,
  -		(const char *)&conf->recv_buffer_size, sizeof(int)) == -1) {
  +	if (setsockopt(dsock, SOL_SOCKET, SO_RCVBUF,
  +	       (const char *) &conf->recv_buffer_size, sizeof(int)) == -1) {
   	    proxy_log_uerror("setsockopt", "(SO_RCVBUF)",
  -		"Failed to set RecvBufferSize, using default", r->server);
  +		  "Failed to set RecvBufferSize, using default", r->server);
   	}
       }
   
  @@ -709,22 +709,20 @@
       bflush(f);
       Explain0("FTP: PASV command issued");
   /* possible results: 227, 421, 500, 501, 502, 530 */
  -    i = bgets(pasv, sizeof(pasv), f); 
  +    i = bgets(pasv, sizeof(pasv), f);
   
  -    if (i == -1)
  -    {
  +    if (i == -1) {
   	proxy_log_uerror("command", NULL, "PASV: control connection is toast",
  -	    r->server);
  +			 r->server);
   	pclosesocket(pool, dsock);
   	bclose(f);
   	kill_timeout(r);
   	return SERVER_ERROR;
  -    } else
  -    {
  -	pasv[i-1] = '\0';
  +    }
  +    else {
  +	pasv[i - 1] = '\0';
   	pstr = strtok(pasv, " ");	/* separate result code */
  -	if (pstr != NULL)
  -	{
  +	if (pstr != NULL) {
   	    presult = atoi(pstr);
   	    pstr = strtok(NULL, "(");	/* separate address & port params */
   	    if (pstr != NULL)
  @@ -736,16 +734,15 @@
   	Explain1("FTP: returned status %d", presult);
   
   	if (presult == 227 && pstr != NULL && (sscanf(pstr,
  -	    "%d,%d,%d,%d,%d,%d", &h3, &h2, &h1, &h0, &p1, &p0) == 6))
  -	{
  +		 "%d,%d,%d,%d,%d,%d", &h3, &h2, &h1, &h0, &p1, &p0) == 6)) {
   	    /* pardon the parens, but it makes gcc happy */
  -            paddr = (((((h3 << 8) + h2) << 8) + h1) << 8) + h0;
  -            pport = (p1 << 8) + p0;
  +	    paddr = (((((h3 << 8) + h2) << 8) + h1) << 8) + h0;
  +	    pport = (p1 << 8) + p0;
   	    Explain5("FTP: contacting host %d.%d.%d.%d:%d",
  -		h3, h2, h1, h0, pport);
  -            data_addr.sin_family = AF_INET;
  -            data_addr.sin_addr.s_addr = htonl(paddr);
  -            data_addr.sin_port = htons(pport);
  +		     h3, h2, h1, h0, pport);
  +	    data_addr.sin_family = AF_INET;
  +	    data_addr.sin_addr.s_addr = htonl(paddr);
  +	    data_addr.sin_port = htons(pport);
   	    i = proxy_doconnect(dsock, &data_addr, r);
   
   	    if (i == -1) {
  @@ -753,58 +750,54 @@
   		return proxyerror(r, "Could not connect to remote machine");
   	    }
   	    else {
  -	        pasvmode = 1;
  +		pasvmode = 1;
   	    }
  -	} else
  +	}
  +	else
   	    pclosesocket(pool, dsock);	/* and try the regular way */
       }
   
  -    if (!pasvmode)	/* set up data connection */
  -    {
  -        clen = sizeof(struct sockaddr_in);
  -        if (getsockname(sock, (struct sockaddr *)&server, &clen) < 0)
  -        {
  +    if (!pasvmode) {		/* set up data connection */
  +	clen = sizeof(struct sockaddr_in);
  +	if (getsockname(sock, (struct sockaddr *) &server, &clen) < 0) {
   	    proxy_log_uerror("getsockname", NULL,
  -	        "proxy: error getting socket address", r->server);
  +			  "proxy: error getting socket address", r->server);
   	    bclose(f);
   	    kill_timeout(r);
   	    return SERVER_ERROR;
  -        }
  +	}
   
  -        dsock = psocket(pool, PF_INET, SOCK_STREAM, IPPROTO_TCP);
  -        if (dsock == -1)
  -        {
  +	dsock = psocket(pool, PF_INET, SOCK_STREAM, IPPROTO_TCP);
  +	if (dsock == -1) {
   	    proxy_log_uerror("socket", NULL, "proxy: error creating socket",
  -	        r->server);
  +			     r->server);
   	    bclose(f);
   	    kill_timeout(r);
   	    return SERVER_ERROR;
  -        }
  +	}
   
  -        if (setsockopt(dsock, SOL_SOCKET, SO_REUSEADDR, (void *)&one,
  -		   sizeof(one)) == -1)
  -        {
  +	if (setsockopt(dsock, SOL_SOCKET, SO_REUSEADDR, (void *) &one,
  +		       sizeof(one)) == -1) {
   	    proxy_log_uerror("setsockopt", NULL,
  -	        "proxy: error setting reuseaddr option", r->server);
  +			"proxy: error setting reuseaddr option", r->server);
   	    pclosesocket(pool, dsock);
   	    bclose(f);
   	    kill_timeout(r);
   	    return SERVER_ERROR;
  -        }
  +	}
   
  -        if (bind(dsock, (struct sockaddr *)&server,
  -            sizeof(struct sockaddr_in)) == -1)
  -        {
  +	if (bind(dsock, (struct sockaddr *) &server,
  +		 sizeof(struct sockaddr_in)) == -1) {
   	    char buff[22];
   
   	    ap_snprintf(buff, sizeof(buff), "%s:%d", inet_ntoa(server.sin_addr), server.sin_port);
   	    proxy_log_uerror("bind", buff,
  -	        "proxy: error binding to ftp data socket", r->server);
  -    	    bclose(f);
  -    	    pclosesocket(pool, dsock);
  +		      "proxy: error binding to ftp data socket", r->server);
  +	    bclose(f);
  +	    pclosesocket(pool, dsock);
   	    return SERVER_ERROR;
  -        }
  -        listen(dsock, 2); /* only need a short queue */
  +	}
  +	listen(dsock, 2);	/* only need a short queue */
       }
   
   /* set request */
  @@ -812,58 +805,56 @@
   
       /* TM - if len == 0 then it must be a directory (you can't RETR nothing) */
   
  -    if(len==0)
  -    {
  -	parms="d";
  -    } else
  -    {
  -        bputs("SIZE ", f);
  -        bwrite(f, path, len);
  -        bputs("\015\012", f);
  -        bflush(f);
  -        Explain1("FTP: SIZE %s",path);
  -        i = ftp_getrc(f);
  -        Explain1("FTP: returned status %d", i);
  -        if (i != 500) /* Size command not recognized */
  -        {
  -            if (i==550) /* Not a regular file */
  -            {
  -                Explain0("FTP: SIZE shows this is a directory");
  -                parms="d";
  -                bputs("CWD ", f);
  -                bwrite(f, path, len);
  -                bputs("\015\012", f);
  -                bflush(f);
  -                Explain1("FTP: CWD %s",path);
  -                i = ftp_getrc(f);
  -                Explain1("FTP: returned status %d", i);
  -                if (i == -1) {
  +    if (len == 0) {
  +	parms = "d";
  +    }
  +    else {
  +	bputs("SIZE ", f);
  +	bwrite(f, path, len);
  +	bputs("\015\012", f);
  +	bflush(f);
  +	Explain1("FTP: SIZE %s", path);
  +	i = ftp_getrc(f);
  +	Explain1("FTP: returned status %d", i);
  +	if (i != 500) {		/* Size command not recognized */
  +	    if (i == 550) {	/* Not a regular file */
  +		Explain0("FTP: SIZE shows this is a directory");
  +		parms = "d";
  +		bputs("CWD ", f);
  +		bwrite(f, path, len);
  +		bputs("\015\012", f);
  +		bflush(f);
  +		Explain1("FTP: CWD %s", path);
  +		i = ftp_getrc(f);
  +		Explain1("FTP: returned status %d", i);
  +		if (i == -1) {
   		    kill_timeout(r);
   		    return proxyerror(r, "Error sending to remote server");
  -                }
  -                if (i == 550) {
  +		}
  +		if (i == 550) {
   		    kill_timeout(r);
   		    return NOT_FOUND;
  -                }
  -                if (i != 250) {
  +		}
  +		if (i != 250) {
   		    kill_timeout(r);
   		    return BAD_GATEWAY;
  -                }
  -                path=""; len=0;
  -            }
  -        }
  +		}
  +		path = "";
  +		len = 0;
  +	    }
  +	}
       }
  -            
  -    if (parms[0] == 'd')
  -    {
  -	if (len != 0) bputs("LIST ", f);
  -	else bputs("LIST -lag", f);
  -        Explain1("FTP: LIST %s",(len==0 ? "" : path));
  +
  +    if (parms[0] == 'd') {
  +	if (len != 0)
  +	    bputs("LIST ", f);
  +	else
  +	    bputs("LIST -lag", f);
  +	Explain1("FTP: LIST %s", (len == 0 ? "" : path));
       }
  -    else
  -    {
  -        bputs("RETR ", f);
  -        Explain1("FTP: RETR %s",path);
  +    else {
  +	bputs("RETR ", f);
  +	Explain1("FTP: RETR %s", path);
       }
       bwrite(f, path, len);
       bputs("\015\012", f);
  @@ -871,44 +862,45 @@
   /* RETR: 110, 125, 150, 226, 250, 421, 425, 426, 450, 451, 500, 501, 530, 550
      NLST: 125, 150, 226, 250, 421, 425, 426, 450, 451, 500, 501, 502, 530 */
       rc = ftp_getrc(f);
  -    Explain1("FTP: returned status %d",rc);
  +    Explain1("FTP: returned status %d", rc);
       if (rc == -1) {
   	kill_timeout(r);
   	return proxyerror(r, "Error sending to remote server");
       }
  -    if (rc == 550)
  -    {
  -       Explain0("FTP: RETR failed, trying LIST instead");
  -       parms="d";
  -       bputs("CWD ", f);
  -       bwrite(f, path, len);
  -       bputs("\015\012", f);
  -       bflush(f);
  -       Explain1("FTP: CWD %s", path);
  -       rc = ftp_getrc(f);
  -       Explain1("FTP: returned status %d", rc);
  -       if (rc == -1) {
  -          kill_timeout(r);
  -          return proxyerror(r, "Error sending to remote server");
  -       }
  -       if (rc == 550) {
  -          kill_timeout(r);
  -          return NOT_FOUND;
  -       }
  -       if (rc != 250) {
  -          kill_timeout(r);
  -          return BAD_GATEWAY;
  -       }
  -
  -       bputs("LIST -lag\015\012", f);
  -       bflush(f);
  -       Explain0("FTP: LIST -lag");
  -       rc = ftp_getrc(f);
  -       Explain1("FTP: returned status %d", rc);
  -       if (rc == -1) return proxyerror(r, "Error sending to remote server");
  -    }   
  +    if (rc == 550) {
  +	Explain0("FTP: RETR failed, trying LIST instead");
  +	parms = "d";
  +	bputs("CWD ", f);
  +	bwrite(f, path, len);
  +	bputs("\015\012", f);
  +	bflush(f);
  +	Explain1("FTP: CWD %s", path);
  +	rc = ftp_getrc(f);
  +	Explain1("FTP: returned status %d", rc);
  +	if (rc == -1) {
  +	    kill_timeout(r);
  +	    return proxyerror(r, "Error sending to remote server");
  +	}
  +	if (rc == 550) {
  +	    kill_timeout(r);
  +	    return NOT_FOUND;
  +	}
  +	if (rc != 250) {
  +	    kill_timeout(r);
  +	    return BAD_GATEWAY;
  +	}
  +
  +	bputs("LIST -lag\015\012", f);
  +	bflush(f);
  +	Explain0("FTP: LIST -lag");
  +	rc = ftp_getrc(f);
  +	Explain1("FTP: returned status %d", rc);
  +	if (rc == -1)
  +	    return proxyerror(r, "Error sending to remote server");
  +    }
       kill_timeout(r);
  -    if (rc != 125 && rc != 150 && rc != 226 && rc != 250) return BAD_GATEWAY;
  +    if (rc != 125 && rc != 150 && rc != 226 && rc != 250)
  +	return BAD_GATEWAY;
   
       r->status = 200;
       r->status_line = "200 OK";
  @@ -916,64 +908,60 @@
       resp_hdrs = make_array(pool, 2, sizeof(struct hdr_entry));
       if (parms[0] == 'd')
   	proxy_add_header(resp_hdrs, "Content-Type", "text/html", HDR_REP);
  -    else
  -    {
  -        mime_find_ct(r);
  -        if(r->content_type != NULL)
  -        {
  -            proxy_add_header(resp_hdrs, "Content-Type", r->content_type,
  -		HDR_REP);
  -            Explain1("FTP: Content-Type set to %s",r->content_type);
  -        } else
  -	{
  +    else {
  +	mime_find_ct(r);
  +	if (r->content_type != NULL) {
  +	    proxy_add_header(resp_hdrs, "Content-Type", r->content_type,
  +			     HDR_REP);
  +	    Explain1("FTP: Content-Type set to %s", r->content_type);
  +	}
  +	else {
   	    proxy_add_header(resp_hdrs, "Content-Type", "text/plain", HDR_REP);
   	}
       }
   
  -/* check if NoCache directive on this host */ 
  -    for (i=0; i < conf->nocaches->nelts; i++)
  -    {
  -        if ((ncent[i].name != NULL && strstr(host, ncent[i].name) != NULL)
  -          || destaddr.s_addr == ncent[i].addr.s_addr || ncent[i].name[0] == '*')
  -            nocache = 1;
  +/* check if NoCache directive on this host */
  +    for (i = 0; i < conf->nocaches->nelts; i++) {
  +	if ((ncent[i].name != NULL && strstr(host, ncent[i].name) != NULL)
  +	    || destaddr.s_addr == ncent[i].addr.s_addr || ncent[i].name[0] == '*')
  +	    nocache = 1;
       }
   
       i = proxy_cache_update(c, resp_hdrs, 0, nocache);
   
  -    if (i != DECLINED)
  -    {
  +    if (i != DECLINED) {
   	pclosesocket(pool, dsock);
   	bclose(f);
   	return i;
       }
       cache = c->fp;
   
  -    if (!pasvmode)	/* wait for connection */
  -    {
  -        hard_timeout ("proxy ftp data connect", r);
  -        clen = sizeof(struct sockaddr_in);
  -        do csd = accept(dsock, (struct sockaddr *)&server, &clen);
  -        while (csd == -1 && errno == EINTR);
  -        if (csd == -1)
  -        {
  +    if (!pasvmode) {		/* wait for connection */
  +	hard_timeout("proxy ftp data connect", r);
  +	clen = sizeof(struct sockaddr_in);
  +	do
  +	    csd = accept(dsock, (struct sockaddr *) &server, &clen);
  +	while (csd == -1 && errno == EINTR);
  +	if (csd == -1) {
   	    proxy_log_uerror("accept", NULL,
  -	        "proxy: failed to accept data connection", r->server);
  +		      "proxy: failed to accept data connection", r->server);
   	    pclosesocket(pool, dsock);
   	    bclose(f);
   	    kill_timeout(r);
   	    proxy_cache_error(c);
   	    return BAD_GATEWAY;
  -        }
  -        note_cleanups_for_socket(pool, csd);
  -        data = bcreate(pool, B_RDWR | B_SOCKET);
  -        bpushfd(data, csd, -1);
  +	}
  +	note_cleanups_for_socket(pool, csd);
  +	data = bcreate(pool, B_RDWR | B_SOCKET);
  +	bpushfd(data, csd, -1);
   	kill_timeout(r);
  -    } else {
  -	data = bcreate(pool, B_RDWR | B_SOCKET); 
  +    }
  +    else {
  +	data = bcreate(pool, B_RDWR | B_SOCKET);
   	bpushfd(data, dsock, dsock);
       }
   
  -    hard_timeout ("proxy receive", r);
  +    hard_timeout("proxy receive", r);
   /* send response */
   /* write status line */
       if (!r->assbackwards)
  @@ -985,11 +973,11 @@
   
   /* send headers */
       len = resp_hdrs->nelts;
  -    hdr = (struct hdr_entry *)resp_hdrs->elts;
  -    for (i=0; i < len; i++)
  -    {
  +    hdr = (struct hdr_entry *) resp_hdrs->elts;
  +    for (i = 0; i < len; i++) {
   	if (hdr[i].field == NULL || hdr[i].value == NULL ||
  -	    hdr[i].value[0] == '\0') continue;
  +	    hdr[i].value[0] == '\0')
  +	    continue;
   	if (!r->assbackwards)
   	    rvputs(r, hdr[i].field, ": ", hdr[i].value, "\015\012", NULL);
   	if (cache != NULL)
  @@ -998,32 +986,36 @@
   		cache = proxy_cache_error(c);
       }
   
  -    if (!r->assbackwards) rputs("\015\012", r);
  +    if (!r->assbackwards)
  +	rputs("\015\012", r);
       if (cache != NULL)
  -	if (bputs("\015\012", cache) == -1) cache = proxy_cache_error(c);
  +	if (bputs("\015\012", cache) == -1)
  +	    cache = proxy_cache_error(c);
   
       bsetopt(r->connection->client, BO_BYTECT, &zero);
       r->sent_bodyct = 1;
   /* send body */
  -    if (!r->header_only)
  -    {
  -	if (parms[0] != 'd') proxy_send_fb(data, r, cache, c);
  -        else send_dir(data, r, cache, c, url);
  +    if (!r->header_only) {
  +	if (parms[0] != 'd')
  +	    proxy_send_fb(data, r, cache, c);
  +	else
  +	    send_dir(data, r, cache, c, url);
   
  -	if (rc == 125 || rc == 150) rc = ftp_getrc(f);
  -	if (rc != 226 && rc != 250) proxy_cache_error(c);
  +	if (rc == 125 || rc == 150)
  +	    rc = ftp_getrc(f);
  +	if (rc != 226 && rc != 250)
  +	    proxy_cache_error(c);
       }
  -    else
  -    {
  +    else {
   /* abort the transfer */
   	bputs("ABOR\015\012", f);
   	bflush(f);
   	if (!pasvmode)
  -            bclose(data);
  -        Explain0("FTP: ABOR");
  +	    bclose(data);
  +	Explain0("FTP: ABOR");
   /* responses: 225, 226, 421, 500, 501, 502 */
   	i = ftp_getrc(f);
  -        Explain1("FTP: returned status %d",i);
  +	Explain1("FTP: returned status %d", i);
       }
   
       kill_timeout(r);
  @@ -1033,7 +1025,7 @@
       bputs("QUIT\015\012", f);
       bflush(f);
       Explain0("FTP: QUIT");
  -/* responses: 221, 500 */    
  +/* responses: 221, 500 */
   
       if (pasvmode)
   	bclose(data);
  @@ -1043,4 +1035,3 @@
   
       return OK;
   }
  -
  
  
  
  1.33      +127 -128  apachen/src/modules/proxy/proxy_http.c
  
  Index: proxy_http.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/proxy/proxy_http.c,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- proxy_http.c	1997/09/06 14:16:57	1.32
  +++ proxy_http.c	1997/09/16 00:59:40	1.33
  @@ -63,8 +63,7 @@
    *  url    is the URL starting with the first '/'
    *  def_port is the default port for this scheme.
    */
  -int
  -proxy_http_canon(request_rec *r, char *url, const char *scheme, int def_port)
  +int proxy_http_canon(request_rec *r, char *url, const char *scheme, int def_port)
   {
       char *host, *path, *search, *p, sport[7];
       const char *err;
  @@ -75,55 +74,63 @@
    */
       port = def_port;
       err = proxy_canon_netloc(r->pool, &url, NULL, NULL, &host, &port);
  -    if (err) return BAD_REQUEST;
  +    if (err)
  +	return BAD_REQUEST;
   
   /* now parse path/search args, according to rfc1738 */
   /* N.B. if this isn't a true proxy request, then the URL _path_
    * has already been decoded
    */
  -    if (r->proxyreq)
  -    {
  +    if (r->proxyreq) {
   	p = strchr(url, '?');
  -	if (p != NULL) *(p++) = '\0';
  -    } else
  +	if (p != NULL)
  +	    *(p++) = '\0';
  +    }
  +    else
   	p = r->args;
   
   /* process path */
       path = proxy_canonenc(r->pool, url, strlen(url), enc_path, r->proxyreq);
  -    if (path == NULL) return BAD_REQUEST;
  +    if (path == NULL)
  +	return BAD_REQUEST;
   
   /* process search */
  -    if (p != NULL)
  -    {
  +    if (p != NULL) {
   	search = p;
  -	if (search == NULL) return BAD_REQUEST;
  -    } else
  +	if (search == NULL)
  +	    return BAD_REQUEST;
  +    }
  +    else
   	search = NULL;
   
  -    if (port != def_port) ap_snprintf(sport, sizeof(sport), ":%d", port);
  -    else sport[0] = '\0';
  +    if (port != def_port)
  +	ap_snprintf(sport, sizeof(sport), ":%d", port);
  +    else
  +	sport[0] = '\0';
   
       r->filename = pstrcat(r->pool, "proxy:", scheme, "://", host, sport, "/",
  -	path, (search) ? "?" : "", (search) ? search : "", NULL);
  +		   path, (search) ? "?" : "", (search) ? search : "", NULL);
       return OK;
   }
   
   /* Clear all connection-based headers from the incoming headers table */
  -static void clear_connection (table *headers)
  +static void clear_connection(table *headers)
   {
       char *name;
       char *next = table_get(headers, "Connection");
   
  -    if (!next) return;
  +    if (!next)
  +	return;
   
       while (*next) {
  -        name = next;
  -        while (*next && !isspace(*next) && (*next != ',')) ++next;
  -        while (*next && (isspace(*next) || (*next == ','))) {
  -            *next = '\0';
  -            ++next;
  -        }
  -        table_unset(headers, name);
  +	name = next;
  +	while (*next && !isspace(*next) && (*next != ','))
  +	    ++next;
  +	while (*next && (isspace(*next) || (*next == ','))) {
  +	    *next = '\0';
  +	    ++next;
  +	}
  +	table_unset(headers, name);
       }
       table_unset(headers, "Connection");
   }
  @@ -137,9 +144,8 @@
    * we return DECLINED so that we can try another proxy. (Or the direct
    * route.)
    */
  -int
  -proxy_http_handler(request_rec *r, struct cache_req *c, char *url,
  -	     const char *proxyhost, int proxyport)
  +int proxy_http_handler(request_rec *r, struct cache_req *c, char *url,
  +		       const char *proxyhost, int proxyport)
   {
       char *p;
       const char *err, *desthost;
  @@ -152,17 +158,17 @@
       BUFF *f, *cache;
       struct hdr_entry *hdr;
       char buffer[HUGE_STRING_LEN];
  -    pool *pool=r->pool;
  -    const long int zero=0L;
  +    pool *pool = r->pool;
  +    const long int zero = 0L;
       int destport = 0;
       char *destportstr = NULL;
       char *urlptr = NULL;
   
       void *sconf = r->server->module_config;
       proxy_server_conf *conf =
  -        (proxy_server_conf *)get_module_config(sconf, &proxy_module);
  -    struct noproxy_entry *npent=(struct noproxy_entry *)conf->noproxies->elts;
  -    struct nocache_entry *ncent=(struct nocache_entry *)conf->nocaches->elts;
  +    (proxy_server_conf *) get_module_config(sconf, &proxy_module);
  +    struct noproxy_entry *npent = (struct noproxy_entry *) conf->noproxies->elts;
  +    struct nocache_entry *ncent = (struct nocache_entry *) conf->nocaches->elts;
       int nocache = 0;
   
       memset(&server, '\0', sizeof(server));
  @@ -170,78 +176,76 @@
   
   /* We break the URL into host, port, path-search */
   
  -    urlptr = strstr(url,"://");
  -    if (urlptr == NULL) return BAD_REQUEST;
  +    urlptr = strstr(url, "://");
  +    if (urlptr == NULL)
  +	return BAD_REQUEST;
       urlptr += 3;
       destport = DEFAULT_PORT;
       p = strchr(urlptr, '/');
  -    if (p == NULL)
  -    {
  -        desthost = pstrdup(pool, urlptr);
  -        urlptr = "/";
  -    } else
  -    {
  -        char *q = palloc(pool, p-urlptr+1);
  -        memcpy(q, urlptr, p-urlptr);
  -        q[p-urlptr] = '\0';
  -        urlptr = p;
  -        desthost = q;
  +    if (p == NULL) {
  +	desthost = pstrdup(pool, urlptr);
  +	urlptr = "/";
  +    }
  +    else {
  +	char *q = palloc(pool, p - urlptr + 1);
  +	memcpy(q, urlptr, p - urlptr);
  +	q[p - urlptr] = '\0';
  +	urlptr = p;
  +	desthost = q;
       }
   
       p = strchr(desthost, ':');
  -    if (p != NULL)
  -    {
  -        *(p++) = '\0';
  -	if (isdigit(*p))
  -	{
  -            destport = atoi(p);
  -            destportstr = p;
  +    if (p != NULL) {
  +	*(p++) = '\0';
  +	if (isdigit(*p)) {
  +	    destport = atoi(p);
  +	    destportstr = p;
   	}
       }
   
   /* check if ProxyBlock directive on this host */
       destaddr.s_addr = ap_inet_addr(desthost);
  -    for (i=0; i < conf->noproxies->nelts; i++)
  -    {
  -        if ((npent[i].name != NULL && strstr(desthost, npent[i].name) != NULL)
  -	  || destaddr.s_addr == npent[i].addr.s_addr || npent[i].name[0] == '*')
  +    for (i = 0; i < conf->noproxies->nelts; i++) {
  +	if ((npent[i].name != NULL && strstr(desthost, npent[i].name) != NULL)
  +	    || destaddr.s_addr == npent[i].addr.s_addr || npent[i].name[0] == '*')
   	    return proxyerror(r, "Connect to remote machine blocked");
       }
   
  -    if (proxyhost != NULL)
  -    {
  +    if (proxyhost != NULL) {
   	server.sin_port = htons(proxyport);
   	err = proxy_host2addr(proxyhost, &server_hp);
  -	if (err != NULL) return DECLINED;  /* try another */
  -    } else
  -    {
  +	if (err != NULL)
  +	    return DECLINED;	/* try another */
  +    }
  +    else {
   	server.sin_port = htons(destport);
   	err = proxy_host2addr(desthost, &server_hp);
  -	if (err != NULL) return proxyerror(r, err); /* give up */
  +	if (err != NULL)
  +	    return proxyerror(r, err);	/* give up */
       }
   
       sock = psocket(pool, PF_INET, SOCK_STREAM, IPPROTO_TCP);
  -    if (sock == -1)
  -    {
  +    if (sock == -1) {
   	aplog_error(APLOG_MARK, APLOG_ERR, r->server,
   		    "proxy: error creating socket");
   	return SERVER_ERROR;
       }
  -    
  +
       if (conf->recv_buffer_size) {
  -      if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
  -		     (const char *)&conf->recv_buffer_size, sizeof(int))
  -	  == -1) {
  -	proxy_log_uerror("setsockopt", "(SO_RCVBUF)",
  -			 "Failed to set RecvBufferSize, using default",
  -			 r->server);
  -      }
  +	if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
  +		       (const char *) &conf->recv_buffer_size, sizeof(int))
  +	    == -1) {
  +	    proxy_log_uerror("setsockopt", "(SO_RCVBUF)",
  +			     "Failed to set RecvBufferSize, using default",
  +			     r->server);
  +	}
       }
   
   #ifdef SINIX_D_RESOLVER_BUG
  -    { struct in_addr *ip_addr = (struct in_addr *) *server_hp.h_addr_list;
  +    {
  +	struct in_addr *ip_addr = (struct in_addr *) *server_hp.h_addr_list;
   
  -	for ( ; ip_addr->s_addr != 0; ++ip_addr) {
  +	for (; ip_addr->s_addr != 0; ++ip_addr) {
   	    memcpy(&server.sin_addr, ip_addr, sizeof(struct in_addr));
   	    i = proxy_doconnect(sock, &server, r);
   	    if (i == 0)
  @@ -252,17 +256,18 @@
       j = 0;
       while (server_hp.h_addr_list[j] != NULL) {
   	memcpy(&server.sin_addr, server_hp.h_addr_list[j],
  -	    sizeof(struct in_addr));
  -        i = proxy_doconnect(sock, &server, r);
  +	       sizeof(struct in_addr));
  +	i = proxy_doconnect(sock, &server, r);
   	if (i == 0)
   	    break;
   	j++;
       }
   #endif
  -    if (i == -1)
  -    {
  -	if (proxyhost != NULL) return DECLINED; /* try again another way */
  -	else return proxyerror(r, "Could not connect to remote machine");
  +    if (i == -1) {
  +	if (proxyhost != NULL)
  +	    return DECLINED;	/* try again another way */
  +	else
  +	    return proxyerror(r, "Could not connect to remote machine");
       }
   
       clear_connection(r->headers_in);	/* Strip connection-based headers */
  @@ -270,23 +275,22 @@
       f = bcreate(pool, B_RDWR | B_SOCKET);
       bpushfd(f, sock, sock);
   
  -    hard_timeout ("proxy send", r);
  +    hard_timeout("proxy send", r);
       bvputs(f, r->method, " ", proxyhost ? url : urlptr, " HTTP/1.0\015\012",
  -           NULL);
  +	   NULL);
       bvputs(f, "Host: ", desthost, NULL);
       if (destportstr != NULL && destport != DEFAULT_PORT)
   	bvputs(f, ":", destportstr, "\015\012", NULL);
       else
   	bputs("\015\012", f);
   
  -    reqhdrs_arr = table_elts (r->headers_in);
  -    reqhdrs = (table_entry *)reqhdrs_arr->elts;
  -    for (i=0; i < reqhdrs_arr->nelts; i++)
  -    {
  +    reqhdrs_arr = table_elts(r->headers_in);
  +    reqhdrs = (table_entry *) reqhdrs_arr->elts;
  +    for (i = 0; i < reqhdrs_arr->nelts; i++) {
   	if (reqhdrs[i].key == NULL || reqhdrs[i].val == NULL
  -	    /* Clear out headers not to send */
  -	  || !strcasecmp(reqhdrs[i].key, "Host") /* Already sent */
  -	  || !strcasecmp(reqhdrs[i].key, "Proxy-Authorization"))
  +	/* Clear out headers not to send */
  +	    || !strcasecmp(reqhdrs[i].key, "Host")	/* Already sent */
  +	    ||!strcasecmp(reqhdrs[i].key, "Proxy-Authorization"))
   	    continue;
   	bvputs(f, reqhdrs[i].key, ": ", reqhdrs[i].val, "\015\012", NULL);
       }
  @@ -294,30 +298,26 @@
       bputs("\015\012", f);
   /* send the request data, if any. N.B. should we trap SIGPIPE ? */
   
  -    if (should_client_block(r))
  -    {
  +    if (should_client_block(r)) {
   	while ((i = get_client_block(r, buffer, HUGE_STRING_LEN)) > 0)
  -            bwrite(f, buffer, i);
  +	    bwrite(f, buffer, i);
       }
       bflush(f);
       kill_timeout(r);
   
  -    hard_timeout ("proxy receive", r);
  -    
  -    len = bgets(buffer, HUGE_STRING_LEN-1, f);
  -    if (len == -1 || len == 0)
  -    {
  +    hard_timeout("proxy receive", r);
  +
  +    len = bgets(buffer, HUGE_STRING_LEN - 1, f);
  +    if (len == -1 || len == 0) {
   	bclose(f);
   	kill_timeout(r);
   	return proxyerror(r, "Error reading from remote server");
       }
   
   /* Is it an HTTP/1 response?  This is buggy if we ever see an HTTP/1.10 */
  -    if (checkmask(buffer,  "HTTP/#.# ###*"))
  -    {
  +    if (checkmask(buffer, "HTTP/#.# ###*")) {
   /* If not an HTTP/1 messsage or if the status line was > 8192 bytes */
  -	if (buffer[5] != '1' || buffer[len-1] != '\n')
  -	{
  +	if (buffer[5] != '1' || buffer[len - 1] != '\n') {
   	    bclose(f);
   	    kill_timeout(r);
   	    return BAD_GATEWAY;
  @@ -336,10 +336,9 @@
   
   	resp_hdrs = proxy_read_headers(pool, buffer, HUGE_STRING_LEN, f);
   
  -	clear_connection((table *)resp_hdrs);  /* Strip Connection hdrs */
  +	clear_connection((table *) resp_hdrs);	/* Strip Connection hdrs */
       }
  -    else
  -    {
  +    else {
   /* an http/0.9 response */
   	backasswards = 1;
   	r->status = 200;
  @@ -355,11 +354,11 @@
    * HTTP/1.0 requires us to accept 3 types of dates, but only generate
    * one type
    */
  -    
  -    hdr = (struct hdr_entry *)resp_hdrs->elts;
  -    for (i=0; i < resp_hdrs->nelts; i++)
  -    {
  -	if (hdr[i].value[0] == '\0') continue;
  +
  +    hdr = (struct hdr_entry *) resp_hdrs->elts;
  +    for (i = 0; i < resp_hdrs->nelts; i++) {
  +	if (hdr[i].value[0] == '\0')
  +	    continue;
   	p = hdr[i].field;
   	if (strcasecmp(p, "Date") == 0 ||
   	    strcasecmp(p, "Last-Modified") == 0 ||
  @@ -368,36 +367,34 @@
       }
   
   /* check if NoCache directive on this host */
  -    for (i=0; i < conf->nocaches->nelts; i++)
  -    {
  -        if ((ncent[i].name != NULL && strstr(desthost, ncent[i].name) != NULL)
  -	  || destaddr.s_addr == ncent[i].addr.s_addr || ncent[i].name[0] == '*')
  -	    nocache = 1; 
  +    for (i = 0; i < conf->nocaches->nelts; i++) {
  +	if ((ncent[i].name != NULL && strstr(desthost, ncent[i].name) != NULL)
  +	    || destaddr.s_addr == ncent[i].addr.s_addr || ncent[i].name[0] == '*')
  +	    nocache = 1;
       }
   
       i = proxy_cache_update(c, resp_hdrs, !backasswards, nocache);
  -    if (i != DECLINED)
  -    {
  +    if (i != DECLINED) {
   	bclose(f);
   	return i;
       }
   
       cache = c->fp;
   
  -    hard_timeout ("proxy receive", r);
  +    hard_timeout("proxy receive", r);
   
   /* write status line */
       if (!r->assbackwards)
  -        rvputs(r, "HTTP/1.0 ", r->status_line, "\015\012", NULL);
  +	rvputs(r, "HTTP/1.0 ", r->status_line, "\015\012", NULL);
       if (cache != NULL)
   	if (bvputs(cache, "HTTP/1.0 ", r->status_line, "\015\012", NULL) == -1)
   	    cache = proxy_cache_error(c);
   
   /* send headers */
  -    for (i=0; i < resp_hdrs->nelts; i++)
  -    {
  +    for (i = 0; i < resp_hdrs->nelts; i++) {
   	if (hdr[i].field == NULL || hdr[i].value == NULL ||
  -	    hdr[i].value[0] == '\0') continue;
  +	    hdr[i].value[0] == '\0')
  +	    continue;
   	if (!r->assbackwards) {
   	    rvputs(r, hdr[i].field, ": ", hdr[i].value, "\015\012", NULL);
   	    table_set(r->headers_out, hdr[i].field, hdr[i].value);
  @@ -408,25 +405,28 @@
   		cache = proxy_cache_error(c);
       }
   
  -    if (!r->assbackwards) rputs("\015\012", r);
  +    if (!r->assbackwards)
  +	rputs("\015\012", r);
       if (cache != NULL)
  -	if (bputs("\015\012", cache) == -1) cache = proxy_cache_error(c);
  +	if (bputs("\015\012", cache) == -1)
  +	    cache = proxy_cache_error(c);
   
       bsetopt(r->connection->client, BO_BYTECT, &zero);
       r->sent_bodyct = 1;
   /* Is it an HTTP/0.9 respose? If so, send the extra data */
  -    if (backasswards)
  -    {
  +    if (backasswards) {
   	bwrite(r->connection->client, buffer, len);
   	if (cache != NULL)
  -	    if (bwrite(f, buffer, len) != len) cache = proxy_cache_error(c);
  +	    if (bwrite(f, buffer, len) != len)
  +		cache = proxy_cache_error(c);
       }
       kill_timeout(r);
   
   /* send body */
   /* if header only, then cache will be NULL */
   /* HTTP/1.0 tells us to read to EOF, rather than content-length bytes */
  -    if (!r->header_only) proxy_send_fb(f, r, cache, c);
  +    if (!r->header_only)
  +	proxy_send_fb(f, r, cache, c);
   
       proxy_cache_tidy(c);
   
  @@ -435,4 +435,3 @@
       proxy_garbage_coll(r);
       return OK;
   }
  -
  
  
  
  1.31      +369 -377  apachen/src/modules/proxy/proxy_util.c
  
  Index: proxy_util.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/proxy/proxy_util.c,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- proxy_util.c	1997/09/14 07:34:38	1.30
  +++ proxy_util.c	1997/09/16 00:59:41	1.31
  @@ -64,37 +64,45 @@
   static int proxy_match_word(struct dirconn_entry *This, request_rec *r);
   
   /* already called in the knowledge that the characters are hex digits */
  -int
  -proxy_hex2c(const char *x)
  +int proxy_hex2c(const char *x)
   {
       int i, ch;
   
       ch = x[0];
  -    if (isdigit(ch)) i = ch - '0';
  -    else if (isupper(ch)) i = ch - ('A' - 10);
  -    else i = ch - ('a' - 10);
  +    if (isdigit(ch))
  +	i = ch - '0';
  +    else if (isupper(ch))
  +	i = ch - ('A' - 10);
  +    else
  +	i = ch - ('a' - 10);
       i <<= 4;
   
       ch = x[1];
  -    if (isdigit(ch)) i += ch - '0';
  -    else if (isupper(ch)) i += ch - ('A' - 10);
  -    else i += ch - ('a' - 10);
  +    if (isdigit(ch))
  +	i += ch - '0';
  +    else if (isupper(ch))
  +	i += ch - ('A' - 10);
  +    else
  +	i += ch - ('a' - 10);
       return i;
   }
   
  -void
  -proxy_c2hex(int ch, char *x)
  +void proxy_c2hex(int ch, char *x)
   {
       int i;
   
       x[0] = '%';
       i = (ch & 0xF0) >> 4;
  -    if (i >= 10) x[1] = ('A' - 10) + i;
  -    else x[1] = '0' + i;
  +    if (i >= 10)
  +	x[1] = ('A' - 10) + i;
  +    else
  +	x[1] = '0' + i;
   
       i = ch & 0x0F;
  -    if (i >= 10) x[2] = ('A' - 10) + i;
  -    else x[2] = '0' + i;
  +    if (i >= 10)
  +	x[2] = ('A' - 10) + i;
  +    else
  +	x[2] = '0' + i;
   }
   
   /*
  @@ -108,12 +116,12 @@
    * those which must not be touched.
    */
   char *
  -proxy_canonenc(pool *p, const char *x, int len, enum enctype t, int isenc)
  +     proxy_canonenc(pool *p, const char *x, int len, enum enctype t, int isenc)
   {
       int i, j, ch;
       char *y;
  -    const char *allowed;  /* characters which should not be encoded */
  -    const char *reserved;  /* characters which much not be en/de-coded */
  +    const char *allowed;	/* characters which should not be encoded */
  +    const char *reserved;	/* characters which much not be en/de-coded */
   
   /* N.B. in addition to :@&=, this allows ';' in an http path
    * and '?' in an ftp path -- this may be revised
  @@ -122,47 +130,52 @@
    * it may be form-encoded. (Although RFC 1738 doesn't allow this -
    * it only permits ; / ? : @ = & as reserved chars.)
    */
  -    if (t == enc_path) allowed = "$-_.+!*'(),;:@&=";
  -    else if (t == enc_search) allowed = "$-_.!*'(),;:@&=";
  -    else if (t == enc_user) allowed = "$-_.+!*'(),;@&=";
  -    else if (t == enc_fpath) allowed = "$-_.+!*'(),?:@&=";
  -    else /* if (t == enc_parm) */ allowed = "$-_.+!*'(),?/:@&=";
  -
  -    if (t == enc_path) reserved = "/";
  -    else if (t == enc_search) reserved = "+";
  -    else reserved = "";
  +    if (t == enc_path)
  +	allowed = "$-_.+!*'(),;:@&=";
  +    else if (t == enc_search)
  +	allowed = "$-_.!*'(),;:@&=";
  +    else if (t == enc_user)
  +	allowed = "$-_.+!*'(),;@&=";
  +    else if (t == enc_fpath)
  +	allowed = "$-_.+!*'(),?:@&=";
  +    else			/* if (t == enc_parm) */
  +	allowed = "$-_.+!*'(),?/:@&=";
  +
  +    if (t == enc_path)
  +	reserved = "/";
  +    else if (t == enc_search)
  +	reserved = "+";
  +    else
  +	reserved = "";
   
  -    y = palloc(p, 3*len+1);
  +    y = palloc(p, 3 * len + 1);
   
  -    for (i=0, j=0; i < len; i++, j++)
  -    {
  +    for (i = 0, j = 0; i < len; i++, j++) {
   /* always handle '/' first */
   	ch = x[i];
  -	if (ind(reserved, ch) != -1)
  -	{
  +	if (ind(reserved, ch) != -1) {
   	    y[j] = ch;
   	    continue;
   	}
   /* decode it if not already done */
  -	if (isenc && ch == '%')
  -	{
  -	    if (!isxdigit(x[i+1]) || !isxdigit(x[i+2]))
  +	if (isenc && ch == '%') {
  +	    if (!isxdigit(x[i + 1]) || !isxdigit(x[i + 2]))
   		return NULL;
  -	    ch = proxy_hex2c(&x[i+1]);
  +	    ch = proxy_hex2c(&x[i + 1]);
   	    i += 2;
  -	    if (ch != 0 && ind(reserved, ch) != -1)
  -	    {  /* keep it encoded */
  +	    if (ch != 0 && ind(reserved, ch) != -1) {	/* keep it encoded */
   		proxy_c2hex(ch, &y[j]);
   		j += 2;
   		continue;
   	    }
   	}
   /* recode it, if necessary */
  -	if (!isalnum(ch) && ind(allowed, ch) == -1)
  -	{
  +	if (!isalnum(ch) && ind(allowed, ch) == -1) {
   	    proxy_c2hex(ch, &y[j]);
   	    j += 2;
  -	} else y[j] = ch;
  +	}
  +	else
  +	    y[j] = ch;
       }
       y[j] = '\0';
       return y;
  @@ -179,91 +192,92 @@
    * Returns an error string.
    */
   char *
  -proxy_canon_netloc(pool *pool, char **const urlp, char **userp,
  -    char **passwordp, char **hostp, int *port)
  +     proxy_canon_netloc(pool *pool, char **const urlp, char **userp,
  +			char **passwordp, char **hostp, int *port)
   {
       int i;
  -    char *p, *host, *url=*urlp;
  +    char *p, *host, *url = *urlp;
   
  -    if (url[0] != '/' || url[1] != '/') return "Malformed URL";
  +    if (url[0] != '/' || url[1] != '/')
  +	return "Malformed URL";
       host = url + 2;
       url = strchr(host, '/');
       if (url == NULL)
   	url = "";
       else
  -	*(url++) = '\0';  /* skip seperating '/' */
  +	*(url++) = '\0';	/* skip seperating '/' */
   
  -    if (userp != NULL)
  -    {
  -	char *user=NULL, *password = NULL;
  +    if (userp != NULL) {
  +	char *user = NULL, *password = NULL;
   	p = strchr(host, '@');
   
  -	if (p != NULL)
  -	{
  +	if (p != NULL) {
   	    *p = '\0';
   	    user = host;
   	    host = p + 1;
   
   /* find password */
   	    p = strchr(user, ':');
  -	    if (p != NULL)
  -	    {
  +	    if (p != NULL) {
   		*p = '\0';
  -		password = proxy_canonenc(pool, p+1, strlen(p+1), enc_user, 1);
  +		password = proxy_canonenc(pool, p + 1, strlen(p + 1), enc_user, 1);
   		if (password == NULL)
   		    return "Bad %-escape in URL (password)";
   	    }
   
   	    user = proxy_canonenc(pool, user, strlen(user), enc_user, 1);
  -	    if (user == NULL) return "Bad %-escape in URL (username)";
  +	    if (user == NULL)
  +		return "Bad %-escape in URL (username)";
   	}
   	*userp = user;
   	*passwordp = password;
       }
   
       p = strchr(host, ':');
  -    if (p != NULL)
  -    {
  +    if (p != NULL) {
   	*(p++) = '\0';
  -	
  -	for (i=0; p[i] != '\0'; i++)
  -	    if (!isdigit(p[i])) break;
  +
  +	for (i = 0; p[i] != '\0'; i++)
  +	    if (!isdigit(p[i]))
  +		break;
   
   	if (i == 0 || p[i] != '\0')
   	    return "Bad port number in URL";
   	*port = atoi(p);
  -	if (*port > 65535) return "Port number in URL > 65535";
  +	if (*port > 65535)
  +	    return "Port number in URL > 65535";
       }
  -    str_tolower(host); /* DNS names are case-insensitive */
  -    if (*host == '\0') return "Missing host in URL";
  +    str_tolower(host);		/* DNS names are case-insensitive */
  +    if (*host == '\0')
  +	return "Missing host in URL";
   /* check hostname syntax */
  -    for (i=0; host[i] != '\0'; i++)
  +    for (i = 0; host[i] != '\0'; i++)
   	if (!isdigit(host[i]) && host[i] != '.')
   	    break;
  - /* must be an IP address */
  +    /* must be an IP address */
   #ifdef WIN32
       if (host[i] == '\0' && (inet_addr(host) == -1))
   #else
       if (host[i] == '\0' && (ap_inet_addr(host) == -1 || inet_network(host) == -1))
   #endif
       {
  -	    return "Bad IP address in URL";
  +	return "Bad IP address in URL";
       }
   
   /*    if (strchr(host,'.') == NULL && domain != NULL)
  -	host = pstrcat(pool, host, domain, NULL);
  -*/
  +   host = pstrcat(pool, host, domain, NULL);
  + */
       *urlp = url;
       *hostp = host;
   
       return NULL;
   }
   
  -static const char *lwday[7]=
  +static const char *lwday[7] =
   {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
  -static const char *wday[7]=
  +static const char *wday[7] =
   {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
  -static const char *months[12]=
  +static const char *months[12] =
   {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
    "Dec"};
   
  @@ -275,45 +289,58 @@
    * formatted, then it exits very quickly.
    */
   char *
  -proxy_date_canon(pool *p, char *x)
  +     proxy_date_canon(pool *p, char *x)
   {
       int wk, mday, year, hour, min, sec, mon;
       char *q, month[4], zone[4], week[4];
  -    
  +
       q = strchr(x, ',');
       /* check for RFC 850 date */
  -    if (q != NULL && q - x > 3 && q[1] == ' ')
  -    {
  +    if (q != NULL && q - x > 3 && q[1] == ' ') {
   	*q = '\0';
  -	for (wk=0; wk < 7; wk++)
  -	    if (strcmp(x, lwday[wk]) == 0) break;
  +	for (wk = 0; wk < 7; wk++)
  +	    if (strcmp(x, lwday[wk]) == 0)
  +		break;
   	*q = ',';
  -	if (wk == 7) return x;  /* not a valid date */
  +	if (wk == 7)
  +	    return x;		/* not a valid date */
   	if (q[4] != '-' || q[8] != '-' || q[11] != ' ' || q[14] != ':' ||
  -	    q[17] != ':' || strcmp(&q[20], " GMT") != 0) return x;
  -	if (sscanf(q+2, "%u-%3s-%u %u:%u:%u %3s", &mday, month, &year,
  -		   &hour, &min, &sec, zone) != 7) return x;
  -	if (year < 70) year += 2000;
  -	else year += 1900;
  -    } else
  -    {
  +	    q[17] != ':' || strcmp(&q[20], " GMT") != 0)
  +	    return x;
  +	if (sscanf(q + 2, "%u-%3s-%u %u:%u:%u %3s", &mday, month, &year,
  +		   &hour, &min, &sec, zone) != 7)
  +	    return x;
  +	if (year < 70)
  +	    year += 2000;
  +	else
  +	    year += 1900;
  +    }
  +    else {
   /* check for acstime() date */
   	if (x[3] != ' ' || x[7] != ' ' || x[10] != ' ' || x[13] != ':' ||
  -	    x[16] != ':' || x[19] != ' ' || x[24] != '\0') return x;
  +	    x[16] != ':' || x[19] != ' ' || x[24] != '\0')
  +	    return x;
   	if (sscanf(x, "%3s %3s %u %u:%u:%u %u", week, month, &mday, &hour,
  -		   &min, &sec, &year) != 7) return x;
  -	for (wk=0; wk < 7; wk++)
  -	    if (strcmp(week, wday[wk]) == 0) break;
  -	if (wk == 7) return x;
  +		   &min, &sec, &year) != 7)
  +	    return x;
  +	for (wk = 0; wk < 7; wk++)
  +	    if (strcmp(week, wday[wk]) == 0)
  +		break;
  +	if (wk == 7)
  +	    return x;
       }
   
   /* check date */
  -    for (mon=0; mon < 12; mon++) if (strcmp(month, months[mon]) == 0) break;
  -    if (mon == 12) return x;
  +    for (mon = 0; mon < 12; mon++)
  +	if (strcmp(month, months[mon]) == 0)
  +	    break;
  +    if (mon == 12)
  +	return x;
   
  -    if (strlen(x) < 31) x = palloc(p, 31);
  -    ap_snprintf(x, strlen(x)+1, "%s, %.2d %s %d %.2d:%.2d:%.2d GMT", wday[wk], mday,
  -	    months[mon], year, hour, min, sec);
  +    if (strlen(x) < 31)
  +	x = palloc(p, 31);
  +    ap_snprintf(x, strlen(x) + 1, "%s, %.2d %s %d %.2d:%.2d:%.2d GMT", wday[wk], mday,
  +		months[mon], year, hour, min, sec);
       return x;
   }
   
  @@ -322,7 +349,7 @@
    * Returns NULL on file error
    */
   array_header *
  -proxy_read_headers(pool *pool, char *buffer, int size, BUFF *f)
  +             proxy_read_headers(pool *pool, char *buffer, int size, BUFF *f)
   {
       int gotcr, len, i, j;
       array_header *resp_hdrs;
  @@ -333,45 +360,43 @@
       hdr = NULL;
   
       gotcr = 1;
  -    for (;;)
  -    {
  +    for (;;) {
   	len = bgets(buffer, size, f);
  -	if (len == -1) return NULL;
  -	if (len == 0) break;
  -	if (buffer[len-1] == '\n')
  -	{
  +	if (len == -1)
  +	    return NULL;
  +	if (len == 0)
  +	    break;
  +	if (buffer[len - 1] == '\n') {
   	    buffer[--len] = '\0';
   	    i = 1;
  -	} else
  +	}
  +	else
   	    i = 0;
   
  -	if (!gotcr || buffer[0] == ' ' || buffer[0] == '\t')
  -	{
  +	if (!gotcr || buffer[0] == ' ' || buffer[0] == '\t') {
   	    /* a continuation header */
  -	    if (hdr == NULL)
  -	    {
  +	    if (hdr == NULL) {
   		/* error!! */
  -		if (!i)
  -		{
  +		if (!i) {
   		    i = bskiplf(f);
  -		    if (i == -1) return NULL;
  +		    if (i == -1)
  +			return NULL;
   		}
   		gotcr = 1;
   		continue;
   	    }
   	    hdr->value = pstrcat(pool, hdr->value, buffer, NULL);
   	}
  -	else if (gotcr && len == 0) break;
  -	else
  -	{
  +	else if (gotcr && len == 0)
  +	    break;
  +	else {
   	    p = strchr(buffer, ':');
  -	    if (p == NULL)
  -	    {
  +	    if (p == NULL) {
   		/* error!! */
  -		if (!gotcr)
  -		{
  +		if (!gotcr) {
   		    i = bskiplf(f);
  -		    if (i == -1) return NULL;
  +		    if (i == -1)
  +			return NULL;
   		}
   		gotcr = 1;
   		hdr = NULL;
  @@ -380,32 +405,32 @@
   	    hdr = push_array(resp_hdrs);
   	    *(p++) = '\0';
   	    hdr->field = pstrdup(pool, buffer);
  -	    while (*p == ' ' || *p == '\t') p++;
  +	    while (*p == ' ' || *p == '\t')
  +		p++;
   	    hdr->value = pstrdup(pool, p);
   	    gotcr = i;
   	}
       }
   
  -    hdr = (struct hdr_entry *)resp_hdrs->elts;
  -    for (i=0; i < resp_hdrs->nelts; i++)
  -    {
  +    hdr = (struct hdr_entry *) resp_hdrs->elts;
  +    for (i = 0; i < resp_hdrs->nelts; i++) {
   	p = hdr[i].value;
   	j = strlen(p);
  -	while (j > 0 && (p[j-1] == ' ' || p[j-1] == '\t')) j--;
  +	while (j > 0 && (p[j - 1] == ' ' || p[j - 1] == '\t'))
  +	    j--;
   	p[j] = '\0';
       }
   
       return resp_hdrs;
   }
   
  -long int
  -proxy_send_fb(BUFF *f, request_rec *r, BUFF *f2, struct cache_req *c)
  +long int proxy_send_fb(BUFF *f, request_rec *r, BUFF *f2, struct cache_req *c)
   {
       char buf[IOBUFSIZE];
       long total_bytes_sent;
  -    register int n,o,w;
  +    register int n, o, w;
       conn_rec *con = r->connection;
  -    
  +
       total_bytes_sent = 0;
   
       /* Since we are reading from one buffer and writing to another,
  @@ -416,38 +441,40 @@
   
       while (!con->aborted && f != NULL) {
   	n = bread(f, buf, IOBUFSIZE);
  -	if (n == -1) /* input error */
  -	{
  -	    if (f2 != NULL) f2 = proxy_cache_error(c);
  +	if (n == -1) {		/* input error */
  +	    if (f2 != NULL)
  +		f2 = proxy_cache_error(c);
   	    break;
   	}
  -	if (n == 0) break; /* EOF */
  -        o=0;
  +	if (n == 0)
  +	    break;		/* EOF */
  +	o = 0;
   	total_bytes_sent += n;
   
   	if (f2 != NULL)
  -	    if (bwrite(f2, buf, n) != n) f2 = proxy_cache_error(c);
  -	
  -        while(n && !con->aborted) {
  -            w = bwrite(con->client, &buf[o], n);
  -            if (w <= 0) {
  -                if (f2 != NULL) {
  -                    pclosef(c->req->pool, c->fp->fd);
  -                    c->fp = NULL; 
  -                    f2 = NULL;
  -                    con->aborted = 1;
  -                    unlink(c->tempfile);
  -                }
  -                break;
  -            }
  -	    reset_timeout(r); /* reset timeout after successful write */
  -            n-=w;
  -            o+=w;
  -        }
  +	    if (bwrite(f2, buf, n) != n)
  +		f2 = proxy_cache_error(c);
  +
  +	while (n && !con->aborted) {
  +	    w = bwrite(con->client, &buf[o], n);
  +	    if (w <= 0) {
  +		if (f2 != NULL) {
  +		    pclosef(c->req->pool, c->fp->fd);
  +		    c->fp = NULL;
  +		    f2 = NULL;
  +		    con->aborted = 1;
  +		    unlink(c->tempfile);
  +		}
  +		break;
  +	    }
  +	    reset_timeout(r);	/* reset timeout after successful write */
  +	    n -= w;
  +	    o += w;
  +	}
       }
       if (!con->aborted)
  -        bflush(con->client);
  -    
  +	bflush(con->client);
  +
       kill_timeout(r);
       return total_bytes_sent;
   }
  @@ -456,14 +483,14 @@
    * Read a header from the array, returning the first entry
    */
   struct hdr_entry *
  -proxy_get_header(array_header *hdrs_arr, const char *name)
  +          proxy_get_header(array_header *hdrs_arr, const char *name)
   {
       struct hdr_entry *hdrs;
       int i;
   
  -    hdrs = (struct hdr_entry *)hdrs_arr->elts;
  +    hdrs = (struct hdr_entry *) hdrs_arr->elts;
       for (i = 0; i < hdrs_arr->nelts; i++)
  -        if (hdrs[i].field != NULL && strcasecmp(name, hdrs[i].field) == 0)
  +	if (hdrs[i].field != NULL && strcasecmp(name, hdrs[i].field) == 0)
   	    return &hdrs[i];
   
       return NULL;
  @@ -475,21 +502,20 @@
    * is not subsequently overwritten
    */
   struct hdr_entry *
  -proxy_add_header(array_header *hdrs_arr, char *field, char *value,
  -	   int rep)
  +          proxy_add_header(array_header *hdrs_arr, char *field, char *value,
  +			   int rep)
   {
       int i;
       struct hdr_entry *hdrs;
   
  -    hdrs = (struct hdr_entry *)hdrs_arr->elts;
  +    hdrs = (struct hdr_entry *) hdrs_arr->elts;
       if (rep)
   	for (i = 0; i < hdrs_arr->nelts; i++)
  -	    if (hdrs[i].field != NULL && strcasecmp(field, hdrs[i].field) == 0)
  -	    {
  +	    if (hdrs[i].field != NULL && strcasecmp(field, hdrs[i].field) == 0) {
   		hdrs[i].value = value;
   		return hdrs;
   	    }
  -	
  +
       hdrs = push_array(hdrs_arr);
       hdrs->field = field;
       hdrs->value = value;
  @@ -497,13 +523,12 @@
       return hdrs;
   }
   
  -void
  -proxy_del_header(array_header *hdrs_arr, const char *field)
  +void proxy_del_header(array_header *hdrs_arr, const char *field)
   {
       int i;
       struct hdr_entry *hdrs;
   
  -    hdrs = (struct hdr_entry *)hdrs_arr->elts;
  +    hdrs = (struct hdr_entry *) hdrs_arr->elts;
   
       for (i = 0; i < hdrs_arr->nelts; i++)
   	if (hdrs[i].field != NULL && strcasecmp(field, hdrs[i].field) == 0)
  @@ -517,20 +542,19 @@
    * 
    * A timeout should be set before calling this routine.
    */
  -void
  -proxy_send_headers(request_rec *r, const char *respline, array_header *hdrs_arr)
  +void proxy_send_headers(request_rec *r, const char *respline, array_header *hdrs_arr)
   {
       struct hdr_entry *hdrs;
       int i;
       BUFF *fp = r->connection->client;
   
  -    hdrs = (struct hdr_entry *)hdrs_arr->elts;
  +    hdrs = (struct hdr_entry *) hdrs_arr->elts;
   
       bputs(respline, fp);
       bputs("\015\012", fp);
  -    for (i = 0; i < hdrs_arr->nelts; i++)
  -    {
  -        if (hdrs[i].field == NULL) continue;
  +    for (i = 0; i < hdrs_arr->nelts; i++) {
  +	if (hdrs[i].field == NULL)
  +	    continue;
   	bvputs(fp, hdrs[i].field, ": ", hdrs[i].value, "\015\012", NULL);
   	table_set(r->headers_out, hdrs[i].field, hdrs[i].value);
       }
  @@ -545,27 +569,28 @@
    * The return returns 1 if the token val is found in the list, or 0
    * otherwise.
    */
  -int
  -proxy_liststr(const char *list, const char *val)
  +int proxy_liststr(const char *list, const char *val)
   {
       int len, i;
       const char *p;
   
       len = strlen(val);
   
  -    while (list != NULL)
  -    {
  +    while (list != NULL) {
   	p = strchr(list, ',');
  -	if (p != NULL)
  -	{
  +	if (p != NULL) {
   	    i = p - list;
  -	    do p++; while (isspace(*p));
  -	} 
  +	    do
  +		p++;
  +	    while (isspace(*p));
  +	}
   	else
   	    i = strlen(list);
   
  -	while (i > 0 && isspace(list[i-1])) i--;
  -	if (i == len && strncasecmp(list, val, len) == 0) return 1;
  +	while (i > 0 && isspace(list[i - 1]))
  +	    i--;
  +	if (i == len && strncasecmp(list, val, len) == 0)
  +	    return 1;
   	list = p;
       }
       return 0;
  @@ -577,78 +602,73 @@
    * On NT, the file system is NOT case sensitive. So, a == A
    * need to map to smaller set of characters
    */
  -void
  -proxy_hash(const char *it, char *val,int ndepth,int nlength)
  +void proxy_hash(const char *it, char *val, int ndepth, int nlength)
   {
       AP_MD5_CTX context;
       unsigned char digest[16];
       char tmp[26];
       int i, k, d;
       unsigned int x;
  -    static const char table[32]= "abcdefghijklmnopqrstuvwxyz012345";
  +    static const char table[32] = "abcdefghijklmnopqrstuvwxyz012345";
   
       MD5Init(&context);
  -    MD5Update(&context, (const unsigned char *)it, strlen(it));
  +    MD5Update(&context, (const unsigned char *) it, strlen(it));
       MD5Final(digest, &context);
   
   /* encode 128 bits as 26 characters, using a modified uuencoding */
   /* the encoding is 5 bytes -> 8 characters
    * i.e. 128 bits is 3 x 5 bytes + 1 byte -> 3 * 8 characters + 2 characters
    */
  -    for (i=0, k=0; i < 15; i += 5)
  -    {
  -	x = (digest[i] << 24) | (digest[i+1] << 16) | (digest[i+2] << 8) | digest[i+3];
  +    for (i = 0, k = 0; i < 15; i += 5) {
  +	x = (digest[i] << 24) | (digest[i + 1] << 16) | (digest[i + 2] << 8) | digest[i + 3];
   	tmp[k++] = table[x >> 27];
   	tmp[k++] = table[(x >> 22) & 0x1f];
   	tmp[k++] = table[(x >> 17) & 0x1f];
  -        tmp[k++] = table[(x >> 12) & 0x1f];
  -        tmp[k++] = table[(x >> 7) & 0x1f];
  -        tmp[k++] = table[(x >> 2) & 0x1f];
  -        x = ((x & 0x3) << 8) | digest[i+4];
  -        tmp[k++] = table[x >> 5];
  +	tmp[k++] = table[(x >> 12) & 0x1f];
  +	tmp[k++] = table[(x >> 7) & 0x1f];
  +	tmp[k++] = table[(x >> 2) & 0x1f];
  +	x = ((x & 0x3) << 8) | digest[i + 4];
  +	tmp[k++] = table[x >> 5];
   	tmp[k++] = table[x & 0x1f];
       }
   /* one byte left */
       x = digest[15];
  -    tmp[k++] = table[x >> 3];  /* use up 5 bits */
  +    tmp[k++] = table[x >> 3];	/* use up 5 bits */
       tmp[k++] = table[x & 0x7];
       /* now split into directory levels */
   
  -    for(i=k=d=0 ; d < ndepth ; ++d)
  -	{
  -	strncpy(&val[i],&tmp[k],nlength);
  -	k+=nlength;
  -	val[i+nlength]='/';
  -	i+=nlength+1;
  -	}
  -    memcpy(&val[i],&tmp[k],22-k);
  -    val[i+22-k]='\0';
  +    for (i = k = d = 0; d < ndepth; ++d) {
  +	strncpy(&val[i], &tmp[k], nlength);
  +	k += nlength;
  +	val[i + nlength] = '/';
  +	i += nlength + 1;
  +    }
  +    memcpy(&val[i], &tmp[k], 22 - k);
  +    val[i + 22 - k] = '\0';
   }
   
   #else
   
  -void
  -proxy_hash(const char *it, char *val,int ndepth,int nlength)
  +void proxy_hash(const char *it, char *val, int ndepth, int nlength)
   {
       AP_MD5_CTX context;
       unsigned char digest[16];
       char tmp[22];
       int i, k, d;
       unsigned int x;
  -    static const char table[64]=
  -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_@";
  +    static const char table[64] =
  +    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_@";
   
       MD5Init(&context);
  -    MD5Update(&context, (const unsigned char *)it, strlen(it));
  +    MD5Update(&context, (const unsigned char *) it, strlen(it));
       MD5Final(digest, &context);
   
   /* encode 128 bits as 22 characters, using a modified uuencoding */
   /* the encoding is 3 bytes -> 4 characters
    * i.e. 128 bits is 5 x 3 bytes + 1 byte -> 5 * 4 characters + 2 characters
    */
  -    for (i=0, k=0; i < 15; i += 3)
  -    {
  -	x = (digest[i] << 16) | (digest[i+1] << 8) | digest[i+2];
  +    for (i = 0, k = 0; i < 15; i += 3) {
  +	x = (digest[i] << 16) | (digest[i + 1] << 8) | digest[i + 2];
   	tmp[k++] = table[x >> 18];
   	tmp[k++] = table[(x >> 12) & 0x3f];
   	tmp[k++] = table[(x >> 6) & 0x3f];
  @@ -656,19 +676,18 @@
       }
   /* one byte left */
       x = digest[15];
  -    tmp[k++] = table[x >> 2];  /* use up 6 bits */
  +    tmp[k++] = table[x >> 2];	/* use up 6 bits */
       tmp[k++] = table[(x << 4) & 0x3f];
       /* now split into directory levels */
   
  -    for(i=k=d=0 ; d < ndepth ; ++d)
  -	{
  -	strncpy(&val[i],&tmp[k],nlength);
  -	k+=nlength;
  -	val[i+nlength]='/';
  -	i+=nlength+1;
  -	}
  -    memcpy(&val[i],&tmp[k],22-k);
  -    val[i+22-k]='\0';
  +    for (i = k = d = 0; d < ndepth; ++d) {
  +	strncpy(&val[i], &tmp[k], nlength);
  +	k += nlength;
  +	val[i + nlength] = '/';
  +	i += nlength + 1;
  +    }
  +    memcpy(&val[i], &tmp[k], 22 - k);
  +    val[i + 22 - k] = '\0';
   }
   
   #endif /* WIN32 */
  @@ -676,61 +695,62 @@
   /*
    * Converts 8 hex digits to a time integer
    */
  -int
  -proxy_hex2sec(const char *x)
  +int proxy_hex2sec(const char *x)
   {
       int i, ch;
       unsigned int j;
   
  -    for (i=0, j=0; i < 8; i++)
  -    {
  +    for (i = 0, j = 0; i < 8; i++) {
   	ch = x[i];
   	j <<= 4;
  -	if (isdigit(ch)) j |= ch - '0';
  -	else if (isupper(ch)) j |= ch - ('A' - 10);
  -	else j |= ch - ('a' - 10);
  +	if (isdigit(ch))
  +	    j |= ch - '0';
  +	else if (isupper(ch))
  +	    j |= ch - ('A' - 10);
  +	else
  +	    j |= ch - ('a' - 10);
       }
  -    if (j == 0xffffffff) return -1;  /* so that it works with 8-byte ints */
  -    else return j;
  +    if (j == 0xffffffff)
  +	return -1;		/* so that it works with 8-byte ints */
  +    else
  +	return j;
   }
   
   /*
    * Converts a time integer to 8 hex digits
    */
  -void
  -proxy_sec2hex(int t, char *y)
  +void proxy_sec2hex(int t, char *y)
   {
       int i, ch;
  -    unsigned int j=t;
  +    unsigned int j = t;
   
  -    for (i=7; i >= 0; i--)
  -    {
  +    for (i = 7; i >= 0; i--) {
   	ch = j & 0xF;
   	j >>= 4;
  -	if (ch >= 10) y[i] = ch + ('A' - 10);
  -	else y[i] = ch + '0';
  +	if (ch >= 10)
  +	    y[i] = ch + ('A' - 10);
  +	else
  +	    y[i] = ch + '0';
       }
       y[8] = '\0';
   }
   
  -void
  -proxy_log_uerror(const char *routine, const char *file, const char *err,
  -	   server_rec *s)
  +void proxy_log_uerror(const char *routine, const char *file, const char *err,
  +		      server_rec *s)
   {
       char *p, *q;
   
       q = get_time();
       p = strerror(errno);
   
  -    if (err != NULL)
  -    {
  +    if (err != NULL) {
   	fprintf(s->error_log, "[%s] %s\n", q, err);
   	if (file != NULL)
   	    fprintf(s->error_log, "- %s: %s: %s\n", routine, file, p);
   	else
   	    fprintf(s->error_log, "- %s: %s\n", routine, p);
  -    } else
  -    {
  +    }
  +    else {
   	if (file != NULL)
   	    fprintf(s->error_log, "[%s] %s: %s: %s\n", q, routine, file, p);
   	else
  @@ -741,18 +761,17 @@
   }
   
   BUFF *
  -proxy_cache_error(struct cache_req *c)
  +     proxy_cache_error(struct cache_req *c)
   {
       proxy_log_uerror("write", c->tempfile, "proxy: error writing to cache file",
  -        c->req->server);
  +		     c->req->server);
       pclosef(c->req->pool, c->fp->fd);
  -    c->fp = NULL; 
  +    c->fp = NULL;
       unlink(c->tempfile);
       return NULL;
   }
   
  -int
  -proxyerror(request_rec *r, const char *message)
  +int proxyerror(request_rec *r, const char *message)
   {
       r->status = SERVER_ERROR;
       r->status_line = "500 Proxy Error";
  @@ -775,34 +794,33 @@
    * This routine returns its own error message
    */
   const char *
  -proxy_host2addr(const char *host, struct hostent *reqhp)
  +     proxy_host2addr(const char *host, struct hostent *reqhp)
   {
       int i;
       struct hostent *hp;
       static APACHE_TLS struct hostent hpbuf;
       static APACHE_TLS u_long ipaddr;
  -    static APACHE_TLS char* charpbuf[2];
  +    static APACHE_TLS char *charpbuf[2];
   
  -    for (i=0; host[i] != '\0'; i++)
  +    for (i = 0; host[i] != '\0'; i++)
   	if (!isdigit(host[i]) && host[i] != '.')
   	    break;
   
  -    if (host[i] != '\0')
  -    {
  +    if (host[i] != '\0') {
   	hp = gethostbyname(host);
   	if (hp == NULL)
   	    return "Host not found";
  -    } else
  -    {
  +    }
  +    else {
   	ipaddr = ap_inet_addr(host);
  -	hp = gethostbyaddr((char *)&ipaddr, sizeof(u_long), AF_INET);
  +	hp = gethostbyaddr((char *) &ipaddr, sizeof(u_long), AF_INET);
   	if (hp == NULL) {
   	    memset(&hpbuf, 0, sizeof(hpbuf));
   	    hpbuf.h_name = 0;
   	    hpbuf.h_addrtype = AF_INET;
   	    hpbuf.h_length = sizeof(u_long);
   	    hpbuf.h_addr_list = charpbuf;
  -	    hpbuf.h_addr_list[0] = (char*)&ipaddr;
  +	    hpbuf.h_addr_list[0] = (char *) &ipaddr;
   	    hpbuf.h_addr_list[1] = 0;
   	    hp = &hpbuf;
   	}
  @@ -812,7 +830,7 @@
   }
   
   static char *
  -proxy_get_host_of_request(request_rec *r)
  +     proxy_get_host_of_request(request_rec *r)
   {
       char *url, *user = NULL, *password = NULL, *err, *host;
       int port = -1;
  @@ -821,11 +839,11 @@
   	return r->hostname;
   
       /* Set url to the first char after "scheme://" */
  -    if ((url = strchr(r->uri,':')) == NULL
  +    if ((url = strchr(r->uri, ':')) == NULL
   	|| url[1] != '/' || url[2] != '/')
   	return NULL;
   
  -    url = pstrdup(r->pool, &url[1]); /* make it point to "//", which is what proxy_canon_netloc expects */
  +    url = pstrdup(r->pool, &url[1]);	/* make it point to "//", which is what proxy_canon_netloc expects */
   
       err = proxy_canon_netloc(r->pool, &url, &user, &password, &host, &port);
   
  @@ -834,16 +852,15 @@
   
       r->hostname = host;
   
  -    return host;        /* ought to return the port, too */
  +    return host;		/* ought to return the port, too */
   }
   
  -/* Return TRUE if addr represents an IP address (or an IP network address)*/
  -int
  -proxy_is_ipaddr(struct dirconn_entry *This)
  +/* Return TRUE if addr represents an IP address (or an IP network address) */
  +int proxy_is_ipaddr(struct dirconn_entry *This)
   {
       const char *addr = This->name;
       unsigned long ip_addr[4];
  -    int i,quads;
  +    int i, quads;
       unsigned long bits;
   
       /* if the address is given with an explicit netmask, use that */
  @@ -851,68 +868,65 @@
       /* "partial" addresses (with less than 4 quads) correctly, i.e.  */
       /* 192.168.123 is parsed as 192.168.0.123, which is not what I want. */
       /* I therefore have to parse the IP address manually: */
  -    /*if (proxy_readmask(This->name, &This->addr.s_addr, &This->mask.s_addr) == 0)*/
  -	/* addr and mask were set by proxy_readmask() */
  -	/*return 1;*/
  +    /*if (proxy_readmask(This->name, &This->addr.s_addr, &This->mask.s_addr) == 0) */
  +    /* addr and mask were set by proxy_readmask() */
  +    /*return 1; */
   
       /* Parse IP addr manually, optionally allowing */
       /* abbreviated net addresses like 192.168. */
   
   /*    quads = sscanf(what, "%d.%d.%d.%d", &ip_addr[0], &ip_addr[1],
  -				  &ip_addr[2], &ip_addr[3]);
  -    commented out: use of strtok() allows arbitrary base, like in:
  -    139.25.113.10 == 0x8b.0x19.0x71.0x0a
  -    (yes, inet_addr() can parse that, too!)
  +   &ip_addr[2], &ip_addr[3]);
  +   commented out: use of strtok() allows arbitrary base, like in:
  +   139.25.113.10 == 0x8b.0x19.0x71.0x0a
  +   (yes, inet_addr() can parse that, too!)
    */
   
       /* Iterate over up to 4 (dotted) quads. */
  -    for (quads=0; quads<4 && *addr != '\0'; ++quads)
  -    {
  +    for (quads = 0; quads < 4 && *addr != '\0'; ++quads) {
   	char *tmp;
   
  -	if (*addr == '/' && quads > 0)  /* netmask starts here. */
  +	if (*addr == '/' && quads > 0)	/* netmask starts here. */
   	    break;
   
   	if (!isdigit(*addr))
  -	    return 0;       /* no digit at start of quad */
  +	    return 0;		/* no digit at start of quad */
   
   	ip_addr[quads] = strtoul(addr, &tmp, 0);
   
  -	if (tmp == addr)    /* expected a digit, found something else */
  +	if (tmp == addr)	/* expected a digit, found something else */
   	    return 0;
   
   	addr = tmp;
   
   	if (*addr == '.' && quads != 3)
  -	    ++addr;            /* after the 4th quad, a dot would be illegal */
  +	    ++addr;		/* after the 4th quad, a dot would be illegal */
       }
   
  -    for (This->addr.s_addr = 0, i=0; i<quads; ++i)
  -	This->addr.s_addr |= htonl(ip_addr[i] << (24 - 8*i));
  +    for (This->addr.s_addr = 0, i = 0; i < quads; ++i)
  +	This->addr.s_addr |= htonl(ip_addr[i] << (24 - 8 * i));
   
  -    if (addr[0] == '/' && isdigit(addr[1]))    /* net mask follows: */
  -    {
  +    if (addr[0] == '/' && isdigit(addr[1])) {	/* net mask follows: */
   	char *tmp;
   
   	++addr;
   
   	bits = strtoul(addr, &tmp, 0);
   
  -	if (tmp == addr)    /* expected a digit, found something else */
  +	if (tmp == addr)	/* expected a digit, found something else */
   	    return 0;
   
   	addr = tmp;
   
  -	if (bits > 32)    /* netmask must be between 0 and 32 */
  +	if (bits > 32)		/* netmask must be between 0 and 32 */
   	    return 0;
   
       }
  -    else
  -    {
  +    else {
   	/* Determine (i.e., "guess") netmask by counting the */
   	/* number of trailing .0's; reduce #quads appropriately */
   	/* (so that 192.168.0.0 is equivalent to 192.168.)        */
  -	while (quads > 0 && ip_addr[quads-1] == 0)
  +	while (quads > 0 && ip_addr[quads - 1] == 0)
   	    --quads;
   
   	/* "IP Address should be given in dotted-quad form, optionally followed by a netmask (e.g., 192.168.111.0/24)"; */
  @@ -920,36 +934,33 @@
   	    return 0;
   
   	/* every zero-byte counts as 8 zero-bits */
  -	bits = 8*quads;
  +	bits = 8 * quads;
   
  -	if (bits != 32)  /* no warning for fully qualified IP address */
  -	    fprintf(stderr,"Warning: NetMask not supplied with IP-Addr; guessing: %s/%ld\n",
  -			   inet_ntoa(This->addr), bits);
  +	if (bits != 32)		/* no warning for fully qualified IP address */
  +	    fprintf(stderr, "Warning: NetMask not supplied with IP-Addr; guessing: %s/%ld\n",
  +		    inet_ntoa(This->addr), bits);
       }
   
       This->mask.s_addr = htonl(INADDR_NONE << (32 - bits));
   
  -    if (*addr == '\0' && (This->addr.s_addr & ~This->mask.s_addr) != 0)
  -    {
  -	fprintf(stderr,"Warning: NetMask and IP-Addr disagree in %s/%ld\n",
  -		       inet_ntoa(This->addr), bits);
  +    if (*addr == '\0' && (This->addr.s_addr & ~This->mask.s_addr) != 0) {
  +	fprintf(stderr, "Warning: NetMask and IP-Addr disagree in %s/%ld\n",
  +		inet_ntoa(This->addr), bits);
   	This->addr.s_addr &= This->mask.s_addr;
  -	fprintf(stderr,"         Set to %s/%ld\n",
  -		       inet_ntoa(This->addr), bits);
  +	fprintf(stderr, "         Set to %s/%ld\n",
  +		inet_ntoa(This->addr), bits);
       }
   
  -    if (*addr == '\0')
  -    {
  +    if (*addr == '\0') {
   	This->matcher = proxy_match_ipaddr;
   	return 1;
       }
       else
  -    return (*addr == '\0');   /* okay iff we've parsed the whole string */
  +	return (*addr == '\0');	/* okay iff we've parsed the whole string */
   }
   
  -/* Return TRUE if addr represents an IP address (or an IP network address)*/
  -static int
  -proxy_match_ipaddr(struct dirconn_entry *This, request_rec *r)
  +/* Return TRUE if addr represents an IP address (or an IP network address) */
  +static int proxy_match_ipaddr(struct dirconn_entry *This, request_rec *r)
   {
       int i;
       int ip_addr[4];
  @@ -959,43 +970,38 @@
       const char *found;
       const char *host = proxy_get_host_of_request(r);
   
  -    memset (&addr, '\0', sizeof addr);
  -    memset (ip_addr, '\0', sizeof ip_addr);
  +    memset(&addr, '\0', sizeof addr);
  +    memset(ip_addr, '\0', sizeof ip_addr);
   
  -    if ( 4 == sscanf(host, "%d.%d.%d.%d", &ip_addr[0], &ip_addr[1], &ip_addr[2], &ip_addr[3]))
  -    {
  -	for (addr.s_addr = 0, i=0; i<4; ++i)
  -	    addr.s_addr |= htonl(ip_addr[i] << (24 - 8*i));
  +    if (4 == sscanf(host, "%d.%d.%d.%d", &ip_addr[0], &ip_addr[1], &ip_addr[2], &ip_addr[3])) {
  +	for (addr.s_addr = 0, i = 0; i < 4; ++i)
  +	    addr.s_addr |= htonl(ip_addr[i] << (24 - 8 * i));
   
  -	if (This->addr.s_addr == (addr.s_addr & This->mask.s_addr))
  -	{
  +	if (This->addr.s_addr == (addr.s_addr & This->mask.s_addr)) {
   #if DEBUGGING
  -	    fprintf(stderr,"1)IP-Match: %s[%s] <-> ", host, inet_ntoa(addr));
  -	    fprintf(stderr,"%s/", inet_ntoa(This->addr));
  -	    fprintf(stderr,"%s\n", inet_ntoa(This->mask));
  +	    fprintf(stderr, "1)IP-Match: %s[%s] <-> ", host, inet_ntoa(addr));
  +	    fprintf(stderr, "%s/", inet_ntoa(This->addr));
  +	    fprintf(stderr, "%s\n", inet_ntoa(This->mask));
   #endif
   	    return 1;
   	}
   #if DEBUGGING
  -	else
  -	{
  -	    fprintf(stderr,"1)IP-NoMatch: %s[%s] <-> ", host, inet_ntoa(addr));
  -	    fprintf(stderr,"%s/", inet_ntoa(This->addr));
  -	    fprintf(stderr,"%s\n", inet_ntoa(This->mask));
  +	else {
  +	    fprintf(stderr, "1)IP-NoMatch: %s[%s] <-> ", host, inet_ntoa(addr));
  +	    fprintf(stderr, "%s/", inet_ntoa(This->addr));
  +	    fprintf(stderr, "%s\n", inet_ntoa(This->mask));
   	}
   #endif
       }
  -    else
  -    {
  +    else {
   	struct hostent the_host;
   
  -	memset (&the_host, '\0', sizeof the_host);
  +	memset(&the_host, '\0', sizeof the_host);
   	found = proxy_host2addr(host, &the_host);
   
  -	if ( found != NULL )
  -	{
  +	if (found != NULL) {
   #if DEBUGGING
  -	    fprintf(stderr,"2)IP-NoMatch: hostname=%s msg=%s\n", host, found);
  +	    fprintf(stderr, "2)IP-NoMatch: hostname=%s msg=%s\n", host, found);
   #endif
   	    return 0;
   	}
  @@ -1006,37 +1012,33 @@
   	    found = host;
   
   	/* Try to deal with multiple IP addr's for a host */
  -	for (ip_listptr=the_host.h_addr_list; *ip_listptr; ++ip_listptr)
  -	{
  +	for (ip_listptr = the_host.h_addr_list; *ip_listptr; ++ip_listptr) {
   	    ip_list = (struct in_addr *) *ip_listptr;
  -	    if (This->addr.s_addr == (ip_list->s_addr & This->mask.s_addr))
  -	    {
  +	    if (This->addr.s_addr == (ip_list->s_addr & This->mask.s_addr)) {
   #if DEBUGGING
  -		fprintf(stderr,"3)IP-Match: %s[%s] <-> ", found, inet_ntoa(*ip_list));
  -		fprintf(stderr,"%s/", inet_ntoa(This->addr));
  -		fprintf(stderr,"%s\n", inet_ntoa(This->mask));
  +		fprintf(stderr, "3)IP-Match: %s[%s] <-> ", found, inet_ntoa(*ip_list));
  +		fprintf(stderr, "%s/", inet_ntoa(This->addr));
  +		fprintf(stderr, "%s\n", inet_ntoa(This->mask));
   #endif
   		return 1;
   	    }
   #if DEBUGGING
  -	    else
  -	    {
  -		fprintf(stderr,"3)IP-NoMatch: %s[%s] <-> ", found, inet_ntoa(*ip_list));
  -		fprintf(stderr,"%s/", inet_ntoa(This->addr));
  -		fprintf(stderr,"%s\n", inet_ntoa(This->mask));
  +	    else {
  +		fprintf(stderr, "3)IP-NoMatch: %s[%s] <-> ", found, inet_ntoa(*ip_list));
  +		fprintf(stderr, "%s/", inet_ntoa(This->addr));
  +		fprintf(stderr, "%s\n", inet_ntoa(This->mask));
   	    }
   #endif
   	}
       }
   
       /* Use net math to determine if a host lies in a subnet */
  -    /*return This->addr.s_addr == (r->connection->remote_addr.sin_addr.s_addr & This->mask.s_addr);*/
  +    /*return This->addr.s_addr == (r->connection->remote_addr.sin_addr.s_addr & This->mask.s_addr); */
       return 0;
   }
   
   /* Return TRUE if addr represents a domain name */
  -int
  -proxy_is_domainname(struct dirconn_entry *This)
  +int proxy_is_domainname(struct dirconn_entry *This)
   {
       char *addr = This->name;
       int i;
  @@ -1046,12 +1048,10 @@
   	return 0;
   
       /* rfc1035 says DNS names must consist of "[-a-zA-Z0-9]" and '.' */
  -    for (i=0; isalnum(addr[i]) || addr[i]=='-' || addr[i]=='.'; ++i)
  -	;
  +    for (i = 0; isalnum(addr[i]) || addr[i] == '-' || addr[i] == '.'; ++i);
   
  -    if (addr[i] == ':')
  -    {
  -	fprintf(stderr,"@@@@ handle optional port in proxy_is_domainname()\n");
  +    if (addr[i] == ':') {
  +	fprintf(stderr, "@@@@ handle optional port in proxy_is_domainname()\n");
   	/* @@@@ handle optional port */
       }
   
  @@ -1059,7 +1059,7 @@
   	return 0;
   
       /* Strip trailing dots */
  -    for (i=strlen(addr)-1; i>0 && addr[i] == '.'; --i)
  +    for (i = strlen(addr) - 1; i > 0 && addr[i] == '.'; --i)
   	addr[i] = '\0';
   
       This->matcher = proxy_match_domainname;
  @@ -1067,30 +1067,28 @@
   }
   
   /* Return TRUE if host "host" is in domain "domain" */
  -static int
  -proxy_match_domainname(struct dirconn_entry *This, request_rec *r)
  +static int proxy_match_domainname(struct dirconn_entry *This, request_rec *r)
   {
       const char *host = proxy_get_host_of_request(r);
  -    int d_len=strlen(This->name), h_len;
  +    int d_len = strlen(This->name), h_len;
   
  -    if (host == NULL)   /* some error was logged already */
  +    if (host == NULL)		/* some error was logged already */
   	return 0;
   
       h_len = strlen(host);
   
       /* @@@ do this within the setup? */
       /* Ignore trailing dots in domain comparison: */
  -    while (d_len > 0 && This->name[d_len-1] == '.')
  +    while (d_len > 0 && This->name[d_len - 1] == '.')
   	--d_len;
  -    while (h_len > 0 && host[h_len-1] == '.')
  +    while (h_len > 0 && host[h_len - 1] == '.')
   	--h_len;
       return h_len > d_len
  -	&& strncasecmp(&host[h_len-d_len], This->name, d_len) == 0;
  +	&& strncasecmp(&host[h_len - d_len], This->name, d_len) == 0;
   }
   
   /* Return TRUE if addr represents a host name */
  -int
  -proxy_is_hostname(struct dirconn_entry *This)
  +int proxy_is_hostname(struct dirconn_entry *This)
   {
       char *addr = This->name;
       int i;
  @@ -1100,12 +1098,10 @@
   	return 0;
   
       /* rfc1035 says DNS names must consist of "[-a-zA-Z0-9]" and '.' */
  -    for (i=0; isalnum(addr[i]) || addr[i]=='-' || addr[i]=='.'; ++i)
  -	;
  +    for (i = 0; isalnum(addr[i]) || addr[i] == '-' || addr[i] == '.'; ++i);
   
  -    if (addr[i] == ':')
  -    {
  -	fprintf(stderr,"@@@@ handle optional port in proxy_is_hostname()\n");
  +    if (addr[i] == ':') {
  +	fprintf(stderr, "@@@@ handle optional port in proxy_is_hostname()\n");
   	/* @@@@ handle optional port */
       }
   
  @@ -1113,7 +1109,7 @@
   	return 0;
   
       /* Strip trailing dots */
  -    for (i=strlen(addr)-1; i>0 && addr[i] == '.'; --i)
  +    for (i = strlen(addr) - 1; i > 0 && addr[i] == '.'; --i)
   	addr[i] = '\0';
   
       This->matcher = proxy_match_hostname;
  @@ -1121,59 +1117,55 @@
   }
   
   /* Return TRUE if host "host" is equal to host2 "host2" */
  -static int
  -proxy_match_hostname(struct dirconn_entry *This, request_rec *r)
  +static int proxy_match_hostname(struct dirconn_entry *This, request_rec *r)
   {
       char *host = This->name;
       char *host2 = proxy_get_host_of_request(r);
  -    int h2_len=strlen(host2);
  -    int h1_len=strlen(host);
  +    int h2_len = strlen(host2);
  +    int h1_len = strlen(host);
   
   #if 0
       unsigned long *ip_list;
   
       /* Try to deal with multiple IP addr's for a host */
       for (ip_list = *This->hostlist.h_addr_list; *ip_list != 0UL; ++ip_list)
  -	if (*ip_list == ?????????????)
  +	if (*ip_list == ? ? ? ? ? ? ? ? ? ? ? ? ?)
   	    return 1;
   #endif
   
       /* Ignore trailing dots in host2 comparison: */
  -    while (h2_len > 0 && host2[h2_len-1] == '.')
  +    while (h2_len > 0 && host2[h2_len - 1] == '.')
   	--h2_len;
  -    while (h1_len > 0 && host[h1_len-1] == '.')
  +    while (h1_len > 0 && host[h1_len - 1] == '.')
   	--h1_len;
       return h1_len == h2_len
   	&& strncasecmp(host, host2, h1_len) == 0;
   }
   
   /* Return TRUE if addr is to be matched as a word */
  -int
  -proxy_is_word(struct dirconn_entry *This)
  +int proxy_is_word(struct dirconn_entry *This)
   {
       This->matcher = proxy_match_word;
       return 1;
   }
   
   /* Return TRUE if string "str2" occurs literally in "str1" */
  -static int
  -proxy_match_word(struct dirconn_entry *This, request_rec *r)
  +static int proxy_match_word(struct dirconn_entry *This, request_rec *r)
   {
       char *host = proxy_get_host_of_request(r);
  -    return host != NULL  &&  strstr(host, This->name) != NULL;
  +    return host != NULL && strstr(host, This->name) != NULL;
   }
   
  -int
  -proxy_doconnect(int sock, struct sockaddr_in *addr, request_rec *r)
  +int proxy_doconnect(int sock, struct sockaddr_in *addr, request_rec *r)
   {
       int i;
   
       hard_timeout("proxy connect", r);
       do {
  -	i = connect(sock, (struct sockaddr *)addr, sizeof(struct sockaddr_in));
  +	i = connect(sock, (struct sockaddr *) addr, sizeof(struct sockaddr_in));
   #ifdef WIN32
  -        if(i == SOCKET_ERROR)
  -            errno = WSAGetLastError() - WSABASEERR;
  +	if (i == SOCKET_ERROR)
  +	    errno = WSAGetLastError() - WSABASEERR;
   #endif /* WIN32 */
       } while (i == -1 && errno == EINTR);
       if (i == -1) {
  
  
  
  1.1                  apachen/src/modules/proxy/.indent.pro
  
  Index: .indent.pro
  ===================================================================
  -i4 -npsl -di0 -br -nce -d0 -cli0 -npcs -nfc1
  -TBUFF
  -TFILE
  -TTRANS
  -TUINT4
  -T_trans
  -Tallow_options_t
  -Tapache_sfio
  -Tarray_header
  -Tbool_int
  -Tbuf_area
  -Tbuff_struct
  -Tbuffy
  -Tcmd_how
  -Tcmd_parms
  -Tcommand_rec
  -Tcommand_struct
  -Tconn_rec
  -Tcore_dir_config
  -Tcore_server_config
  -Tdir_maker_func
  -Tevent
  -Tglobals_s
  -Thandler_func
  -Thandler_rec
  -Tjoblist_s
  -Tlisten_rec
  -Tmerger_func
  -Tmode_t
  -Tmodule
  -Tmodule_struct
  -Tmutex
  -Tn_long
  -Tother_child_rec
  -Toverrides_t
  -Tparent_score
  -Tpid_t
  -Tpiped_log
  -Tpool
  -Trequest_rec
  -Trequire_line
  -Trlim_t
  -Tscoreboard
  -Tsemaphore
  -Tserver_addr_rec
  -Tserver_rec
  -Tserver_rec_chain
  -Tshort_score
  -Ttable
  -Ttable_entry
  -Tthread
  -Tu_wide_int
  -Tvtime_t
  -Twide_int
  -Tproxy_server_conf