]> git.pld-linux.org Git - packages/apache.git/commitdiff
This commit was manufactured by cvs2git to create branch 'APACHE_2_FOR_RA'.
authorcvs2git <feedback@pld-linux.org>
Sat, 24 Jan 2004 01:42:26 +0000 (01:42 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Sprout from master 2004-01-24 01:42:26 UTC ankry <ankry@pld-linux.org> '107a88e194cd9226f5b45fbe31556c06  apache-gcc2.patch'
Delete:
    apache-access.conf
    apache-apxs.patch
    apache-db.patch
    apache-rewrite.patch
    apache-srm.conf
    apache1.init
    mod_proxy-khk_1.3.26-patch.diff
    proxy_http1.1_chunking.patch

apache-access.conf [deleted file]
apache-apxs.patch [deleted file]
apache-db.patch [deleted file]
apache-rewrite.patch [deleted file]
apache-srm.conf [deleted file]
apache1.init [deleted file]
mod_proxy-khk_1.3.26-patch.diff [deleted file]
proxy_http1.1_chunking.patch [deleted file]

diff --git a/apache-access.conf b/apache-access.conf
deleted file mode 100644 (file)
index d036bab..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-##
-## access.conf -- Apache HTTP server configuration file
-##
-
-# access.conf: Global access configuration
-# Online docs at http://www.apache.org/
-
-# This file defines server settings which affect which types of services
-# are allowed, and in what circumstances. 
-
-# Each directory to which Apache has access, can be configured with respect
-# to which services and features are allowed and/or disabled in that
-# directory (and its subdirectories). 
-
-# Originally by Rob McCool
-
-# First, we configure the "default" to be a very restrictive set of 
-# permissions.  
-
-<Directory />
-Options FollowSymLinks
-AllowOverride None
-</Directory>
-
-# User directories
-<Directory /home>
-Options Indexes IncludesNoExec
-AllowOverride None
-</Directory>
-
-# Note that from this point forward you must specifically allow
-# particular features to be enabled - so if something's not working as
-# you might expect, make sure that you have specifically enabled it
-# below.
-
-# This should be changed to whatever you set DocumentRoot to.
-
-<Directory "/home/httpd/html">
-
-# This may also be "None", "All", or any combination of "Indexes",
-# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
-
-# Note that "MultiViews" must be named *explicitly* --- "Options All"
-# doesn't give it to you.
-
-Options Indexes Includes FollowSymLinks
-
-# This controls which options the .htaccess files in directories can
-# override. Can also be "All", or any combination of "Options", "FileInfo", 
-# "AuthConfig", and "Limit"
-
-AllowOverride None
-
-# Controls who can get stuff from this server.
-
-order allow,deny
-allow from all
-
-</Directory>
-
-# /home/httpd/cgi-bin should be changed to whatever your ScriptAliased
-# CGI directory exists, if you have that configured.
-
-<Directory "/home/httpd/cgi-bin">
-AllowOverride None
-Options ExecCGI
-</Directory>
-
-# Allow remote server configuration reports, with the URL of
-#  http://servername/server-info (requires that mod_info.c be loaded).
-# Change the ".your_domain.com" to match your domain to enable.
-
-<Location /server-info>
-SetHandler server-info
-
-order deny,allow
-deny from all
-allow from 127.0.0.1
-</Location>
-
-# There have been reports of people trying to abuse an old bug from pre-1.1
-# days.  This bug involved a CGI script distributed as a part of Apache.
-# By uncommenting these lines you can redirect these attacks to a logging 
-# script on phf.apache.org.  Or, you can record them yourself, using the script
-# support/phf_abuse_log.cgi.
-
-<Location /cgi-bin/phf*>
-deny from all
-ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
-</Location>
-
-# You may place any other directories or locations you wish to have
-# access information for after this one.
-
diff --git a/apache-apxs.patch b/apache-apxs.patch
deleted file mode 100644 (file)
index f4bed19..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
---- httpd-2.0.46/support/apxs.in.orig  Wed May 21 13:39:52 2003
-+++ httpd-2.0.46/support/apxs.in       Thu May 29 07:27:40 2003
-@@ -64,11 +64,11 @@
- my %config_vars = ();
- my $installbuilddir = "@exp_installbuilddir@";
--get_config_vars("$installbuilddir/config_vars.mk",\%config_vars);
-+get_config_vars("/usr/lib/apache/build/config_vars.mk",\%config_vars);
- # read the configuration variables once
--my $prefix         = get_vars("prefix");
-+my $prefix         = "/usr/lib/apache";
- my $CFG_PREFIX     = $prefix;
- my $exec_prefix    = get_vars("exec_prefix");
- my $datadir        = get_vars("datadir");
-@@ -228,9 +228,7 @@
- my $httpd = get_vars("sbindir") . "/" . get_vars("progname");
- $httpd = eval qq("$httpd");
- $httpd = eval qq("$httpd");
--my $envvars = get_vars("sbindir") . "/envvars";
--$envvars = eval qq("$envvars");
--$envvars = eval qq("$envvars");
-+my $envvars = "";
- #allow apxs to be run from the source tree, before installation
- if ($0 =~ m:support/apxs$:) {
-@@ -376,9 +374,9 @@
-     exit(1);
- }
--my $libtool = `$apr_bindir/apr-config --installbuilddir`;
--chomp($libtool);
--$libtool = "$libtool/libtool";
-+#my $libtool = `$apr_bindir/apr-config --installbuilddir`;
-+#chomp($libtool);
-+$libtool = "/usr/bin/libtool";
- my $apr_includedir = `$apr_bindir/apr-config --includes`;
- chomp($apr_includedir);
diff --git a/apache-db.patch b/apache-db.patch
deleted file mode 100644 (file)
index a9597e2..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- httpd-2.0.43/srclib/apr-util/dbm/apr_dbm_berkeleydb.c~     Wed Mar 13 20:40:47 2002
-+++ httpd-2.0.43/srclib/apr-util/dbm/apr_dbm_berkeleydb.c      Sun Oct 27 14:19:45 2002
-@@ -195,7 +195,7 @@
- #if DB_VER == 3
-         if ((dberr = db_create(&file.bdb, NULL, 0)) == 0) {
--            if ((dberr = (*file.bdb->open)(file.bdb, pathname, NULL, 
-+            if ((dberr = (*file.bdb->open)(file.bdb, 0,  pathname, NULL, 
-                                            DB_HASH, dbmode, 
-                                            apr_posix_perms2mode(perm))) != 0) {
-                 /* close the DB handler */
diff --git a/apache-rewrite.patch b/apache-rewrite.patch
deleted file mode 100644 (file)
index c913d7c..0000000
+++ /dev/null
@@ -1,491 +0,0 @@
-diff -uNr apache_1.3.11.orig/src/modules/standard/mod_rewrite.c apache_1.3.11/src/modules/standard/mod_rewrite.c
---- apache_1.3.11.orig/src/modules/standard/mod_rewrite.c      Sun Jan 16 19:06:30 2000
-+++ apache_1.3.11/src/modules/standard/mod_rewrite.c   Thu Oct  5 14:50:43 2000
-@@ -1745,7 +1745,6 @@
-     char *output;
-     const char *vary;
-     char newuri[MAX_STRING_LEN];
--    char env[MAX_STRING_LEN];
-     regex_t *regexp;
-     regmatch_t regmatch[MAX_NMATCH];
-     backrefinfo *briRR = NULL;
-@@ -1913,20 +1912,7 @@
-      *  (`RewriteRule <pat> - [E=...]')
-      */
-     if (strcmp(output, "-") == 0) {
--        for (i = 0; p->env[i] != NULL; i++) {
--            /*  1. take the string  */
--            ap_cpystrn(env, p->env[i], sizeof(env));
--            /*  2. expand $N (i.e. backrefs to RewriteRule pattern)  */
--            expand_backref_inbuffer(r->pool, env, sizeof(env), briRR, '$');
--            /*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  */
--            expand_backref_inbuffer(r->pool, env, sizeof(env), briRC, '%');
--            /*  4. expand %{...} (i.e. variables) */
--            expand_variables_inbuffer(r, env, sizeof(env));
--            /*  5. expand ${...} (RewriteMap lookups)  */
--            expand_map_lookups(r, env, sizeof(env));
--            /*  and add the variable to Apache's structures  */
--            add_env_variable(r, env);
--        }
-+      do_expand_env(r, p->env, briRR, briRC);
-         if (p->forced_mimetype != NULL) {
-             if (perdir == NULL) {
-                 /* In the per-server context we can force the MIME-type
-@@ -1961,17 +1947,7 @@
-      *  that there is something to replace, so we create the
-      *  substitution URL string in `newuri'.
-      */
--    /*  1. take the output string  */
--    ap_cpystrn(newuri, output, sizeof(newuri));
--    /*  2. expand $N (i.e. backrefs to RewriteRule pattern)  */
--    expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRR, '$');
--    /*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  */
--    expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRC, '%');
--    /*  4. expand %{...} (i.e. variables) */
--    expand_variables_inbuffer(r, newuri, sizeof(newuri));
--    /*  5. expand ${...} (RewriteMap lookups)  */
--    expand_map_lookups(r, newuri, sizeof(newuri));
--    /*  and log the result... */
-+    do_expand(r, output, newuri, sizeof(newuri), briRR, briRC);
-     if (perdir == NULL) {
-         rewritelog(r, 2, "rewrite %s -> %s", uri, newuri);
-     }
-@@ -1983,20 +1959,7 @@
-      *  Additionally do expansion for the environment variable
-      *  strings (`RewriteRule .. .. [E=<string>]').
-      */
--    for (i = 0; p->env[i] != NULL; i++) {
--        /*  1. take the string  */
--        ap_cpystrn(env, p->env[i], sizeof(env));
--        /*  2. expand $N (i.e. backrefs to RewriteRule pattern)  */
--        expand_backref_inbuffer(r->pool, env, sizeof(env), briRR, '$');
--        /*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  */
--        expand_backref_inbuffer(r->pool, env, sizeof(env), briRC, '%');
--        /*  4. expand %{...} (i.e. variables) */
--        expand_variables_inbuffer(r, env, sizeof(env));
--        /*  5. expand ${...} (RewriteMap lookups)  */
--        expand_map_lookups(r, env, sizeof(env));
--        /*  and add the variable to Apache's structures  */
--        add_env_variable(r, env);
--    }
-+    do_expand_env(r, p->env, briRR, briRC);
-     /*
-      *  Now replace API's knowledge of the current URI:
-@@ -2163,16 +2126,7 @@
-      *   Construct the string we match against
-      */
--    /*  1. take the string  */
--    ap_cpystrn(input, p->input, sizeof(input));
--    /*  2. expand $N (i.e. backrefs to RewriteRule pattern)  */
--    expand_backref_inbuffer(r->pool, input, sizeof(input), briRR, '$');
--    /*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  */
--    expand_backref_inbuffer(r->pool, input, sizeof(input), briRC, '%');
--    /*  4. expand %{...} (i.e. variables) */
--    expand_variables_inbuffer(r, input, sizeof(input));
--    /*  5. expand ${...} (RewriteMap lookups)  */
--    expand_map_lookups(r, input, sizeof(input));
-+    do_expand(r, p->input, input, sizeof(input), briRR, briRC);
-     /*
-      *   Apply the patterns
-@@ -2314,6 +2268,139 @@
- ** +-------------------------------------------------------+
- */
-+
-+/*
-+**
-+**  perform all the expansions on the input string
-+**  leaving the result in the supplied buffer
-+**
-+*/
-+
-+static void do_expand(request_rec *r, char *input, char *buffer, int nbuf,
-+                     backrefinfo *briRR, backrefinfo *briRC)
-+{
-+    char *inp, *outp;
-+    size_t span, space;
-+
-+    /*
-+     * for security reasons this expansion must be perfomed in a
-+     * single pass, otherwise an attacker can arrange for the result
-+     * of an earlier expansion to include expansion specifiers that
-+     * are interpreted by a later expansion, producing results that
-+     * were not intended by the administrator.
-+     */
-+
-+    inp = input;
-+    outp = buffer;
-+    space = nbuf - 1; /* room for '\0' */
-+
-+    for (;;) {
-+      span = strcspn(inp, "$%");
-+      if (span > space) {
-+          span = space;
-+      }
-+      memcpy(outp, inp, span);
-+      inp += span;
-+      outp += span;
-+      space -= span;
-+      if (space == 0 || *inp == '\0') {
-+          break;
-+      }
-+      /* now we have a '$' or a '%' */
-+      if (inp[1] == '{') {
-+          char *endp;
-+          endp = strchr(inp, '}');
-+          if (endp == NULL) {
-+              goto skip;
-+          }
-+          *endp = '\0';
-+          if (inp[0] == '$') {
-+              /* ${...} map lookup expansion */
-+              char *key, *dflt, *result;
-+              key = strchr(inp, ':');
-+              if (key == NULL) {
-+                  goto skip;
-+              }
-+              *key++ = '\0';
-+              dflt = strchr(key, '|');
-+              if (dflt) {
-+                  *dflt++ = '\0';
-+              }
-+              result = lookup_map(r, inp+2, key);
-+              if (result == NULL) {
-+                  result = dflt ? dflt : "";
-+              }
-+              span = ap_cpystrn(outp, result, space) - outp;
-+              key[-1] = ':';
-+              if (dflt) {
-+                  dflt[-1] = '|';
-+              }
-+          }
-+          else if (inp[0] == '%') {
-+              /* %{...} variable lookup expansion */
-+              span = ap_cpystrn(outp, lookup_variable(r, inp+2), space) - outp;
-+          }
-+          else {
-+              span = 0;
-+          }
-+          *endp = '}';
-+          inp = endp+1;
-+          outp += span;
-+          space -= span;
-+          continue;
-+      }
-+      else if (ap_isdigit(inp[1])) {
-+          int n = inp[1] - '0';
-+          backrefinfo *bri = NULL;
-+          if (inp[0] == '$') {
-+              /* $N RewriteRule regexp backref expansion */
-+              bri = briRR;
-+          }
-+          else if (inp[0] == '%') {
-+              /* %N RewriteCond regexp backref expansion */
-+              bri = briRC;
-+          }
-+          /* see ap_pregsub() in src/main/util.c */
-+            if (bri && n <= bri->nsub &&
-+              bri->regmatch[n].rm_eo > bri->regmatch[n].rm_so) {
-+              span = bri->regmatch[n].rm_eo - bri->regmatch[n].rm_so;
-+              if (span > space) {
-+                  span = space;
-+              }
-+              memcpy(outp, bri->source + bri->regmatch[n].rm_so, span);
-+              outp += span;
-+              space -= span;
-+          }
-+          inp += 2;
-+          continue;
-+      }
-+    skip:
-+      *outp++ = *inp++;
-+      space--;
-+    }
-+    *outp++ = '\0';
-+}
-+
-+
-+/*
-+**
-+**  perform all the expansions on the environment variables
-+**
-+*/
-+
-+static void do_expand_env(request_rec *r, char *env[],
-+                        backrefinfo *briRR, backrefinfo *briRC)
-+{
-+    int i;
-+    char buf[MAX_STRING_LEN];
-+
-+    for (i = 0; env[i] != NULL; i++) {
-+      do_expand(r, env[i], buf, sizeof(buf), briRR, briRC);
-+      add_env_variable(r, buf);
-+    }
-+}
-+
-+
- /*
- **
- **  split out a QUERY_STRING part from
-@@ -2484,51 +2571,6 @@
- /*
- **
--**  Expand the %0-%9 or $0-$9 regex backreferences
--**
--*/
--
--static void expand_backref_inbuffer(pool *p, char *buf, int nbuf,
--                                    backrefinfo *bri, char c)
--{
--    register int i;
--
--    /* protect existing $N and & backrefs and replace <c>N with $N backrefs */
--    for (i = 0; buf[i] != '\0' && i < nbuf; i++) {
--        if (buf[i] == '\\' && (buf[i+1] != '\0' && i < (nbuf-1))) {
--            i++; /* protect next */
--        }
--        else if (buf[i] == '&') {
--            buf[i] = '\001';
--        }
--        else if (c != '$' && buf[i] == '$' && (buf[i+1] >= '0' && buf[i+1] <= '9')) {
--            buf[i] = '\002';
--            i++; /* speedup */
--        }
--        else if (buf[i] == c && (buf[i+1] >= '0' && buf[i+1] <= '9')) {
--            buf[i] = '$';
--            i++; /* speedup */
--        }
--    }
--
--    /* now apply the standard regex substitution function */
--    ap_cpystrn(buf, ap_pregsub(p, buf, bri->source,
--                               bri->nsub+1, bri->regmatch), nbuf);
--
--    /* restore the original $N and & backrefs */
--    for (i = 0; buf[i] != '\0' && i < nbuf; i++) {
--        if (buf[i] == '\001') {
--            buf[i] = '&';
--        }
--        else if (buf[i] == '\002') {
--            buf[i] = '$';
--        }
--    }
--}
--
--
--/*
--**
- **  Expand tilde-paths (/~user) through
- **  Unix /etc/passwd database information
- **
-@@ -2571,120 +2613,6 @@
- }
- #endif
--/*
--**
--**  mapfile expansion support
--**  i.e. expansion of MAP lookup directives
--**  ${<mapname>:<key>} in RewriteRule rhs
--**
--*/
--
--#define limit_length(n) (n > LONG_STRING_LEN-1 ? LONG_STRING_LEN-1 : n)
--
--static void expand_map_lookups(request_rec *r, char *uri, int uri_len)
--{
--    char newuri[MAX_STRING_LEN];
--    char *cpI;
--    char *cpIE;
--    char *cpO;
--    char *cpT;
--    char *cpT2;
--    char mapname[LONG_STRING_LEN];
--    char mapkey[LONG_STRING_LEN];
--    char defaultvalue[LONG_STRING_LEN];
--    int n;
--
--    cpI = uri;
--    cpIE = cpI+strlen(cpI);
--    cpO = newuri;
--    while (cpI < cpIE) {
--        if (cpI+6 < cpIE && strncmp(cpI, "${", 2) == 0) {
--            /* missing delimiter -> take it as plain text */
--            if (   strchr(cpI+2, ':') == NULL
--                || strchr(cpI+2, '}') == NULL) {
--                memcpy(cpO, cpI, 2);
--                cpO += 2;
--                cpI += 2;
--                continue;
--            }
--            cpI += 2;
--
--            cpT = strchr(cpI, ':');
--            n = cpT-cpI;
--            memcpy(mapname, cpI, limit_length(n));
--            mapname[limit_length(n)] = '\0';
--            cpI += n+1;
--
--            cpT2 = strchr(cpI, '|');
--            cpT = strchr(cpI, '}');
--            if (cpT2 != NULL && cpT2 < cpT) {
--                n = cpT2-cpI;
--                memcpy(mapkey, cpI, limit_length(n));
--                mapkey[limit_length(n)] = '\0';
--                cpI += n+1;
--
--                n = cpT-cpI;
--                memcpy(defaultvalue, cpI, limit_length(n));
--                defaultvalue[limit_length(n)] = '\0';
--                cpI += n+1;
--            }
--            else {
--                n = cpT-cpI;
--                memcpy(mapkey, cpI, limit_length(n));
--                mapkey[limit_length(n)] = '\0';
--                cpI += n+1;
--
--                defaultvalue[0] = '\0';
--            }
--
--            cpT = lookup_map(r, mapname, mapkey);
--            if (cpT != NULL) {
--                n = strlen(cpT);
--                if (cpO + n >= newuri + sizeof(newuri)) {
--                    ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR,
--                                 r, "insufficient space in "
--                                 "expand_map_lookups, aborting");
--                    return;
--                }
--                memcpy(cpO, cpT, n);
--                cpO += n;
--            }
--            else {
--                n = strlen(defaultvalue);
--                if (cpO + n >= newuri + sizeof(newuri)) {
--                    ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 
--                                 r, "insufficient space in "
--                                 "expand_map_lookups, aborting");
--                    return;
--                }
--                memcpy(cpO, defaultvalue, n);
--                cpO += n;
--            }
--        }
--        else {
--            cpT = strstr(cpI, "${");
--            if (cpT == NULL)
--                cpT = cpI+strlen(cpI);
--            n = cpT-cpI;
--            if (cpO + n >= newuri + sizeof(newuri)) {
--                ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 
--                             r, "insufficient space in "
--                             "expand_map_lookups, aborting");
--                return;
--            }
--            memcpy(cpO, cpI, n);
--            cpO += n;
--            cpI += n;
--        }
--    }
--    *cpO = '\0';
--    ap_cpystrn(uri, newuri, uri_len);
--    return;
--}
--
--#undef limit_length
--
--
- /*
- ** +-------------------------------------------------------+
-@@ -3483,53 +3411,6 @@
- */
--static void expand_variables_inbuffer(request_rec *r, char *buf, int buf_len)
--{
--    char *newbuf;
--    newbuf = expand_variables(r, buf);
--    if (strcmp(newbuf, buf) != 0) {
--        ap_cpystrn(buf, newbuf, buf_len);
--    }
--    return;
--}
--
--static char *expand_variables(request_rec *r, char *str)
--{
--    char output[MAX_STRING_LEN];
--    char input[MAX_STRING_LEN];
--    char *cp;
--    char *cp2;
--    char *cp3;
--    int expanded;
--    char *outp;
--    char *endp;
--
--    ap_cpystrn(input, str, sizeof(input));
--    output[0] = '\0';
--    outp = output;
--    endp = output + sizeof(output);
--    expanded = 0;
--    for (cp = input; cp < input+MAX_STRING_LEN; ) {
--        if ((cp2 = strstr(cp, "%{")) != NULL) {
--            if ((cp3 = strstr(cp2, "}")) != NULL) {
--                *cp2 = '\0';
--                outp = ap_cpystrn(outp, cp, endp - outp);
--
--                cp2 += 2;
--                *cp3 = '\0';
--                outp = ap_cpystrn(outp, lookup_variable(r, cp2), endp - outp);
--
--                cp = cp3+1;
--                expanded = 1;
--                continue;
--            }
--        }
--        outp = ap_cpystrn(outp, cp, endp - outp);
--        break;
--    }
--    return expanded ? ap_pstrdup(r->pool, output) : str;
--}
--
- static char *lookup_variable(request_rec *r, char *var)
- {
-     const char *result;
-diff -uNr apache_1.3.11.orig/src/modules/standard/mod_rewrite.h apache_1.3.11/src/modules/standard/mod_rewrite.h
---- apache_1.3.11.orig/src/modules/standard/mod_rewrite.h      Thu Oct 21 22:45:38 1999
-+++ apache_1.3.11/src/modules/standard/mod_rewrite.h   Thu Oct  5 14:48:43 2000
-@@ -420,14 +420,16 @@
-                               char *perdir, backrefinfo *briRR,
-                               backrefinfo *briRC);
-+static void do_expand(request_rec *r, char *input, char *buffer, int nbuf,
-+                     backrefinfo *briRR, backrefinfo *briRC);
-+static void do_expand_env(request_rec *r, char *env[],
-+                        backrefinfo *briRR, backrefinfo *briRC);
-+
-     /* URI transformation function */
- static void  splitout_queryargs(request_rec *r, int qsappend);
- static void  fully_qualify_uri(request_rec *r);
- static void  reduce_uri(request_rec *r);
--static void  expand_backref_inbuffer(pool *p, char *buf, int nbuf,
--                                     backrefinfo *bri, char c);
- static char *expand_tildepaths(request_rec *r, char *uri);
--static void  expand_map_lookups(request_rec *r, char *uri, int uri_len);
-     /* rewrite map support functions */
- static char *lookup_map(request_rec *r, char *name, char *key);
-@@ -466,8 +468,6 @@
- static int   rewritemap_program_child(void *cmd, child_info *pinfo);
-     /* env variable support */
--static void  expand_variables_inbuffer(request_rec *r, char *buf, int buf_len);
--static char *expand_variables(request_rec *r, char *str);
- static char *lookup_variable(request_rec *r, char *var);
- static char *lookup_header(request_rec *r, const char *name);
diff --git a/apache-srm.conf b/apache-srm.conf
deleted file mode 100644 (file)
index 71d81d2..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-##
-## srm.conf -- Apache HTTP server configuration file
-##
-
-# With this document, you define the name space that users see of your http
-# server.  This file also defines server settings which affect how requests are
-# serviced, and how results should be formatted. 
-
-# See the tutorials at http://www.apache.org/ for
-# more information.
-
-# Originally by Rob McCool; Adapted for Apache
-
-
-# DocumentRoot: The directory out of which you will serve your
-# documents. By default, all requests are taken from this directory, but
-# symbolic links and aliases may be used to point to other locations.
-
-DocumentRoot "/home/httpd/html"
-
-# UserDir: The name of the directory which is appended onto a user's home
-# directory if a ~user request is recieved.
-
-UserDir public_html
-
-# DirectoryIndex: Name of the file or files to use as a pre-written HTML
-# directory index.  Separate multiple entries with spaces.
-
-DirectoryIndex index.html index.htm index.shtml index.cgi
-
-# The IndexOptions directive specifies the behavior of directory listing
-
-IndexOptions FancyIndexing IconHeight IconWidth
-
-# AddIcon tells the server which icon to show for different files or filename
-# extensions
-
-AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
-
-AddIconByType (TXT,/icons/text.gif) text/*
-AddIconByType (IMG,/icons/image2.gif) image/*
-AddIconByType (SND,/icons/sound2.gif) audio/*
-AddIconByType (VID,/icons/movie.gif) video/*
-
-AddIcon /icons/binary.gif .bin .exe
-AddIcon /icons/binhex.gif .hqx
-AddIcon /icons/tar.gif .tar
-AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
-AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
-AddIcon /icons/a.gif .ps .ai .eps
-AddIcon /icons/layout.gif .html .shtml .htm .pdf
-AddIcon /icons/text.gif .txt
-AddIcon /icons/c.gif .c
-AddIcon /icons/p.gif .pl .py
-AddIcon /icons/f.gif .for
-AddIcon /icons/dvi.gif .dvi
-AddIcon /icons/uuencoded.gif .uu
-AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
-AddIcon /icons/tex.gif .tex
-AddIcon /icons/bomb.gif core
-
-AddIcon /icons/back.gif ..
-AddIcon /icons/hand.right.gif README
-AddIcon /icons/folder.gif ^^DIRECTORY^^
-AddIcon /icons/blank.gif ^^BLANKICON^^
-
-# DefaultIcon is which icon to show for files which do not have an icon
-# explicitly set.
-
-DefaultIcon /icons/unknown.gif
-
-# AddDescription allows you to place a short description after a file in
-# server-generated indexes.
-# Format: AddDescription "description" filename
-
-# ReadmeName is the name of the README file the server will look for by
-# default. Format: ReadmeName name
-#
-# The server will first look for name.html, include it if found, and it will
-# then look for name and include it as plaintext if found.
-#
-# HeaderName is the name of a file which should be prepended to
-# directory indexes. 
-
-ReadmeName README
-HeaderName HEADER
-
-# IndexIgnore is a set of filenames which directory indexing should ignore
-# Format: IndexIgnore name1 name2...
-
-IndexIgnore .??* *~ *# HEADER* README* RCS
-
-# AccessFileName: The name of the file to look for in each directory
-# for access control information.
-
-AccessFileName .htaccess
-
-# The following lines prevent .htaccess files from being viewed by
-# Web clients.  Since .htaccess files often contain authorization
-# information, access is disallowed for security reasons.  Comment
-# these lines out if you want Web visitors to see the contents of
-# .htaccess files.  If you change the AccessFileName directive above,
-# be sure to make the corresponding changes here.
-
-<Files .htaccess>
-order allow,deny
-deny from all
-</Files>
-
-# TypesConfig describes where the mime.types file (or equivalent) is
-# to be found.
-
-TypesConfig /etc/mime.types
-
-# DefaultType is the default MIME type for documents which the server
-# cannot find the type of from filename extensions.
-
-DefaultType text/plain
-
-# AddEncoding allows you to have certain browsers (Mosaic/X 2.1+) uncompress
-# information on the fly. Note: Not all browsers support this.
-
-AddEncoding x-compress Z
-AddEncoding x-gzip gz
-
-# AddLanguage allows you to specify the language of a document. You can
-# then use content negotiation to give a browser a file in a language
-# it can understand.  Note that the suffix does not have to be the same
-# as the language keyword --- those with documents in Polish (whose
-# net-standard language code is pl) may wish to use "AddLanguage pl .po" 
-# to avoid the ambiguity with the common suffix for perl scripts.
-
-AddLanguage en .en
-AddLanguage fr .fr
-AddLanguage de .de
-AddLanguage da .da
-AddLanguage el .el
-AddLanguage it .it
-AddLanguage pl .po
-
-# LanguagePriority allows you to give precedence to some languages
-# in case of a tie during content negotiation.
-# Just list the languages in decreasing order of preference.
-
-LanguagePriority en pl fr de
-
-# Redirect allows you to tell clients about documents which used to exist in
-# your server's namespace, but do not anymore. This allows you to tell the
-# clients where to look for the relocated document.
-# Format: Redirect fakename url
-
-
-# Aliases: Add here as many aliases as you need (with no limit). The format is 
-# Alias fakename realname
-
-# Note that if you include a trailing / on fakename then the server will
-# require it to be present in the URL.  So "/icons" isn't aliased in this
-# example.
-
-Alias /icons/ "/home/httpd/icons/"
-
-# ScriptAlias: This controls which directories contain server scripts.
-# Format: ScriptAlias fakename realname
-
-ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"
-
-# If you want to use server side includes, or CGI outside
-# ScriptAliased directories, uncomment the following lines.
-
-# AddType allows you to tweak mime.types without actually editing it, or to
-# make certain files to be certain types.
-# Format: AddType type/subtype ext1
-
-# For example, the PHP3 module (not part of the Apache distribution)
-# will typically use:
-#AddType application/x-httpd-php3 .phtml
-#AddType application/x-httpd-php3-source .phps
-
-# AddHandler allows you to map certain file extensions to "handlers",
-# actions unrelated to filetype. These can be either built into the server
-# or added with the Action command (see below)
-# Format: AddHandler action-name ext1
-
-# To use CGI scripts:
-AddHandler cgi-script .cgi
-
-# To use server-parsed HTML files
-AddType text/html .shtml
-AddHandler server-parsed .shtml
-
-# Uncomment the following line to enable Apache's send-asis HTTP file
-# feature
-AddHandler send-as-is asis
-
-# If you wish to use server-parsed imagemap files, use
-AddHandler imap-file map
-
-# To enable type maps, you might want to use
-#AddHandler type-map var
-
-# Action lets you define media types that will execute a script whenever
-# a matching file is called. This eliminates the need for repeated URL
-# pathnames for oft-used CGI file processors.
-# Format: Action media/type /cgi-script/location
-# Format: Action handler-name /cgi-script/location
-
-# MetaDir: specifies the name of the directory in which Apache can find
-# meta information files. These files contain additional HTTP headers
-# to include when sending the document
-
-#MetaDir .web
-
-# MetaSuffix: specifies the file name suffix for the file containing the
-# meta information.
-
-#MetaSuffix .meta
-
-# The following directives disable keepalives and HTTP header flushes.
-# The first directive disables it for Netscape 2.x and browsers which
-# spoof it. There are known problems with these.
-# The second directive is for Microsoft Internet Explorer 4.0b2
-# which has a broken HTTP/1.1 implementation and does not properly
-# support keepalive when it is used on 301 or 302 (redirect) responses.
-
-BrowserMatch "Mozilla/2" nokeepalive
-BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
-
-# The following directive disables HTTP/1.1 responses to browsers which
-# are in violation of the HTTP/1.0 spec by not being able to grok a
-# basic 1.1 response.
-
-BrowserMatch "RealPlayer 4\.0" force-response-1.0
-BrowserMatch "Java/1\.0" force-response-1.0
-BrowserMatch "JDK/1\.0" force-response-1.0
diff --git a/apache1.init b/apache1.init
deleted file mode 100644 (file)
index 929ffa3..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh
-#
-# apache       Apache Web Server
-#
-# chkconfig:   345 85 15
-# description: Apache is a World Wide Web server.  It is used to serve \
-#              HTML files and CGI.
-# processname: httpd
-# pidfile:     /var/run/httpd.pid
-# config:      /etc/httpd/httpd.conf
-
-
-# Source function library
-. /etc/rc.d/init.d/functions
-
-# Get network config
-. /etc/sysconfig/network
-
-# Get service config
-[ -f /etc/sysconfig/apache ] && . /etc/sysconfig/apache
-
-# Check that networking is up.
-if is_yes "${NETWORKING}"; then
-       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
-               # nls "ERROR: Networking is down. %s can't be run." <service>
-               msg_network_down httpd
-               exit 1
-       fi
-else
-       exit 0
-fi
-
-if is_no "${IPV6_NETWORKING}"; then
-       HTTPD_OPTS="$HTTPD_OPTS -4"
-fi
-
-RETVAL=0
-# See how we were called.
-case "$1" in
-  start)
-       # Check if the service is already running?
-       if [ ! -f /var/lock/subsys/httpd ]; then
-               msg_starting httpd
-               daemon httpd $HTTPD_OPTS
-               RETVAL=$?
-               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/httpd
-       else
-               msg_already_running httpd
-       fi
-       ;;
-  stop)
-       # Stop daemons.
-       if [ -f /var/lock/subsys/httpd ]; then
-               msg_stopping httpd
-               killproc httpd
-               rm -f /var/lock/subsys/httpd /var/run/httpd.pid /var/run/httpd.loc* >/dev/null 2>&1
-       else
-               msg_not_running httpd
-       fi
-       ;;
-  status)
-       status httpd
-       RETVAL=$?
-       /usr/sbin/httpd -S
-       ;;
-  restart)
-       $0 stop
-       $0 start
-       exit $?
-       ;;
-  reload|force-reload)
-       if [ -f /var/lock/subsys/httpd ]; then
-               msg_reloading httpd
-               killproc httpd -HUP
-               RETVAL=$?
-       else
-               msg_not_running httpd >&2
-               RETVAL=7
-       fi
-       ;;
-  *)
-       msg_usage "$0 {start|stop|restart|reload|force-reload|status}"
-       exit 3
-       ;;
-esac
-
-exit $RETVAL
diff --git a/mod_proxy-khk_1.3.26-patch.diff b/mod_proxy-khk_1.3.26-patch.diff
deleted file mode 100644 (file)
index d78b996..0000000
+++ /dev/null
@@ -1,569 +0,0 @@
-diff -u apache_1.3.26/src/modules/proxy/mod_proxy.c apache_1.3.26-patched/src/modules/proxy/mod_proxy.c
---- apache_1.3.26/src/modules/proxy/mod_proxy.c        Mon Jun 17 20:59:59 2002
-+++ apache_1.3.26-patched/src/modules/proxy/mod_proxy.c        Sun Jun 23 19:25:57 2002
-@@ -218,6 +218,9 @@
- static int proxy_fixup(request_rec *r)
- {
-     char *url, *p;
-+#ifdef EAPI
-+    int rc;
-+#endif /* EAPI */
-     if (r->proxyreq == NOT_PROXY || strncmp(r->filename, "proxy:", 6) != 0)
-         return DECLINED;
-@@ -225,6 +228,14 @@
-     url = &r->filename[6];
- /* canonicalise each specific scheme */
-+#ifdef EAPI
-+    if (ap_hook_use("ap::mod_proxy::canon",
-+                    AP_HOOK_SIG3(int,ptr,ptr),
-+                    AP_HOOK_DECLINE(DECLINED),
-+                    &rc, r, url) && rc != DECLINED)
-+        return rc;  
-+    else
-+#endif /* EAPI */
-     if (strncasecmp(url, "http:", 5) == 0)
-         return ap_proxy_http_canon(r, url + 5, "http", DEFAULT_HTTP_PORT);
-     else if (strncasecmp(url, "ftp:", 4) == 0)
-@@ -240,9 +251,44 @@
- static void proxy_init(server_rec *r, pool *p)
- {
-     ap_proxy_garbage_init(r, p);
-+#ifdef EAPI
-+    ap_hook_use("ap::mod_proxy::init", 
-+                AP_HOOK_SIG3(void,ptr,ptr), AP_HOOK_ALL, r, p);
-+#endif
- }
--
-+#ifdef EAPI
-+static void proxy_addmod(module *m)
-+{
-+    /* export: ap_proxy_http_canon() as `ap::mod_proxy::http::canon' */
-+    ap_hook_configure("ap::mod_proxy::http::canon", 
-+                      AP_HOOK_SIG5(int,ptr,ptr,ptr,int), AP_HOOK_TOPMOST);
-+    ap_hook_register("ap::mod_proxy::http::canon", 
-+                     ap_proxy_http_canon, AP_HOOK_NOCTX);
-+
-+    /* export: ap_proxy_http_handler() as `ap::mod_proxy::http::handler' */
-+    ap_hook_configure("ap::mod_proxy::http::handler", 
-+                      AP_HOOK_SIG6(int,ptr,ptr,ptr,ptr,int), AP_HOOK_TOPMOST);
-+    ap_hook_register("ap::mod_proxy::http::handler", 
-+                     ap_proxy_http_handler, AP_HOOK_NOCTX);
-+
-+    /* export: ap_proxyerror() as `ap::mod_proxy::error' */
-+    ap_hook_configure("ap::mod_proxy::error", 
-+                      AP_HOOK_SIG3(int,ptr,ptr), AP_HOOK_TOPMOST);
-+    ap_hook_register("ap::mod_proxy::error", 
-+                     ap_proxyerror, AP_HOOK_NOCTX);
-+    return;
-+}
-+
-+static void proxy_remmod(module *m)
-+{
-+      /* remove the hook references */
-+    ap_hook_unregister("ap::mod_proxy::http::canon", ap_proxy_http_canon);
-+    ap_hook_unregister("ap::mod_proxy::http::handler", ap_proxy_http_handler);
-+    ap_hook_unregister("ap::mod_proxy::error", ap_proxyerror);
-+    return;
-+}
-+#endif /* EAPI */
- /* Send a redirection if the request contains a hostname which is not */
- /* fully qualified, i.e. doesn't have a domain name appended. Some proxy */
-@@ -374,6 +420,14 @@
-                  * CONNECT is a special method that bypasses the normal proxy
-                  * code.
-                  */
-+#ifdef EAPI
-+              if (!ap_hook_use("ap::mod_proxy::handler",
-+                               AP_HOOK_SIG7(int,ptr,ptr,ptr,ptr,int,ptr),
-+                               AP_HOOK_DECLINE(DECLINED),
-+                               &rc, r, cr, url, 
-+                               ents[i].hostname, ents[i].port, 
-+                               ents[i].protocol) || rc == DECLINED) {
-+#endif /* EAPI */
-                 if (r->method_number == M_CONNECT)
-                     rc = ap_proxy_connect_handler(r, cr, url, ents[i].hostname,
-                                                   ents[i].port);
-@@ -383,6 +437,9 @@
-                                                ents[i].port);
-                 else
-                     rc = DECLINED;
-+#ifdef EAPI
-+              }
-+#endif /* EAPI */
-                 /* an error or success */
-                 if (rc != DECLINED && rc != HTTP_BAD_GATEWAY)
-@@ -397,6 +454,14 @@
-      */
-     /* handle the scheme */
-+#ifdef EAPI
-+    if (ap_hook_use("ap::mod_proxy::handler",
-+                  AP_HOOK_SIG7(int,ptr,ptr,ptr,ptr,int,ptr),
-+                  AP_HOOK_DECLINE(DECLINED),
-+                  &rc, r, cr, url, 
-+                    NULL, 0, scheme) && rc != DECLINED)
-+        return rc;
-+#endif /* EAPI */
-     if (r->method_number == M_CONNECT) {
-         return ap_proxy_connect_handler(r, cr, url, NULL, 0);
-     }
-@@ -460,6 +525,11 @@
-     ps->cache.dirlength_set = 0;
-     ps->cache.cache_completion = (float)DEFAULT_CACHE_COMPLETION;
-     ps->cache.cache_completion_set = 0;
-+    /* header manipulation */
-+    ps->freshen_date = ap_make_array(p, 10, sizeof(hdr_actions_entry));
-+    ps->resp_exp_vector = ap_make_array(p, 10, sizeof(resp_exp_vector_entry));
-+    ps->req_headers = ap_make_array(p, 10, sizeof(hdr_actions_entry));
-+    ps->resp_headers = ap_make_array(p, 10, sizeof(hdr_actions_entry));
-     return ps;
- }
-@@ -496,6 +566,18 @@
-     ps->cache.dirlevels = (overrides->cache.dirlevels_set == 0) ? base->cache.dirlevels : overrides->cache.dirlevels;
-     ps->cache.dirlength = (overrides->cache.dirlength_set == 0) ? base->cache.dirlength : overrides->cache.dirlength;
-     ps->cache.cache_completion = (overrides->cache.cache_completion_set == 0) ? base->cache.cache_completion : overrides->cache.cache_completion;
-+    /* put freshen_date and resp_exp_vector from the overriding config
-+       in front of the base config arrays, the semantics being that
-+       virtual server configs should be checked first */
-+    ps->freshen_date = ap_append_arrays(p,overrides->freshen_date,base->freshen_date);
-+    ps->resp_exp_vector = ap_append_arrays(p,overrides->resp_exp_vector,base->resp_exp_vector);
-+    /* add req_ and resp_headers from the overriding config after
-+       those from the base config arrays, the semantics being that the
-+       directives are applied in declaration order, with those
-+       specific to a virtual server coming after and therefore
-+       overriding those from the root config */
-+    ps->req_headers = ap_append_arrays(p,base->req_headers,overrides->req_headers);
-+    ps->resp_headers = ap_append_arrays(p,base->resp_headers,overrides->resp_headers);
-     return ps;
- }
-@@ -920,6 +1002,120 @@
-     return NULL;
- }
-+static const char* 
-+    set_freshen_date(cmd_parms *parms, void *mconfig, char *one, char *two) 
-+{
-+    proxy_server_conf *psf =
-+      ap_get_module_config(parms->server->module_config, &proxy_module);
-+    hdr_actions_entry *f = 
-+      (hdr_actions_entry *)ap_push_array(psf->freshen_date);
-+    /* set action */
-+    if (strcasecmp(one, "Off") == 0)
-+      f->action = hdr_off;
-+    else if (strcasecmp(one, "On") == 0)
-+      f->action = hdr_on;
-+    else 
-+      return "CacheFreshenDate must be either On or Off";
-+    /* set pattern (null is okay, will be dealt with at match time) */
-+    if (two) {
-+      f->pattern = ap_pregcomp(parms->pool,two,REG_EXTENDED|REG_NOSUB);
-+      if (f->pattern == NULL)
-+        return ap_psprintf
-+          (parms->pool,"Regular expression could not be compiled: %s", two);
-+    } else {
-+      f->pattern = NULL;
-+    }
-+    return NULL;
-+}
-+
-+static const char* 
-+    set_resp_exp_vector(cmd_parms *parms, void *mconfig, char *one, char *two) 
-+{
-+    proxy_server_conf *psf =
-+      ap_get_module_config(parms->server->module_config, &proxy_module);
-+    resp_exp_vector_entry *rev = 
-+      (resp_exp_vector_entry *)ap_push_array(psf->resp_exp_vector);
-+    int i = atoi(one);
-+    /* set seconds number */
-+    if (i < -1)
-+      return "ProxyResponseExpiresVector must be a number of seconds (0 for \"immediately), or -1 to explicitly disable\"";
-+    rev->vector = i;
-+    /* set pattern (again, null is okay) */
-+    if (two) {
-+      rev->pattern = ap_pregcomp(parms->pool,two,REG_EXTENDED|REG_NOSUB);
-+      if (rev->pattern == NULL)
-+        return ap_psprintf
-+          (parms->pool,"Regular expression could not be compiled: %s", two);
-+    } else {
-+      rev->pattern = NULL;
-+    }
-+    return NULL;
-+}
-+
-+static const char*
-+    set_header_directive(cmd_parms *parms, void *mconfig, const char *args)
-+{
-+  char *one = ap_getword_conf(parms->pool,&args); 
-+  char *two = ap_getword_conf(parms->pool,&args); 
-+  char *three = ap_getword_conf(parms->pool,&args); 
-+  char *four = ap_getword_conf(parms->pool,&args); 
-+  proxy_server_conf *psf =
-+    ap_get_module_config(parms->server->module_config, &proxy_module);
-+  hdr_actions_entry *h;
-+  /* push onto the correct array */
-+  if (strcmp("ProxyRequestHeader",(char*)parms->info) == 0)
-+    h = (hdr_actions_entry *)ap_push_array(psf->req_headers);
-+  else
-+    h = (hdr_actions_entry *)ap_push_array(psf->resp_headers);
-+  /* set action */
-+  if (strcasecmp(one,"set") == 0)
-+    h->action = hdr_set;
-+  else if (strcasecmp(one,"unset") == 0)
-+    h->action = hdr_unset;
-+  else if (strcasecmp(one,"add") == 0)
-+    h->action = hdr_add;
-+  else if (strcasecmp(one,"append") == 0)
-+    h->action = hdr_append;
-+  else 
-+    return ap_psprintf
-+      (parms->pool, "Argument to %s must be one of set | unset | add | append",
-+       (char*)parms->info);
-+  /* set which header */
-+  h->header = ap_pstrdup(parms->pool,two);
-+  /* unset only takes 2/3 arguments -- so set its pattern and return */
-+  if (h->action == hdr_unset) {
-+    if (strcmp(three,"")!=0) {
-+        h->pattern = ap_pregcomp(parms->pool,three,REG_EXTENDED|REG_NOSUB);
-+        if (h->pattern == NULL)
-+          return ap_psprintf
-+            (parms->pool,"Regular expression could not be compiled: %s", three);
-+    } else {
-+      h->pattern = NULL;
-+    }
-+    if (!strcmp(four,"")==0)
-+      return ap_psprintf
-+        (parms->pool,"%s 'unset' only takes two or three arguments", 
-+         (char*)parms->info);
-+    return NULL;
-+  }
-+  /* set value string */
-+  if (strcmp(three,"")==0)
-+    return ap_psprintf
-+      (parms->pool,"%s requires at least three arguments", (char*)parms->info);
-+  h->value = ap_pstrdup(parms->pool,three);
-+  /* set pattern */
-+  if (strcmp(four,"")!=0) {
-+    h->pattern = ap_pregcomp(parms->pool,four,REG_EXTENDED|REG_NOSUB);
-+    if (h->pattern == NULL)
-+      return ap_psprintf
-+        (parms->pool,"Regular expression could not be compiled: %s", four);
-+  } else {
-+    h->pattern = NULL;
-+  }
-+
-+  return NULL;
-+}
-+
- static const handler_rec proxy_handlers[] =
- {
-     {"proxy-server", proxy_handler},
-@@ -970,6 +1166,16 @@
-     "Force a http cache completion after this percentage is loaded"},
-     {"ProxyVia", set_via_opt, NULL, RSRC_CONF, TAKE1,
-     "Configure Via: proxy header header to one of: on | off | block | full"},
-+    {"CacheFreshenDate", set_freshen_date, NULL, RSRC_CONF, TAKE12,
-+     "Whether to update the Date header when returning cached proxy responses"},
-+    {"ProxyResponseExpiresVector", set_resp_exp_vector, NULL, RSRC_CONF, TAKE12,
-+     "A constant to add to current time for expires headers on proxy response"},
-+    {"ProxyRequestHeader", set_header_directive, (void*)"ProxyRequestHeader", 
-+     RSRC_CONF,RAW_ARGS, 
-+     "A directive for headers to be sent with proxy requests"},
-+    {"ProxyResponseHeader", set_header_directive, (void*)"ProxyResponseHeader", 
-+     RSRC_CONF,RAW_ARGS, 
-+     "A directive for headers that are returned with responses"},
-     {NULL}
- };
-@@ -994,4 +1200,10 @@
-     NULL,                       /* child_init */
-     NULL,                       /* child_exit */
-     proxy_detect                /* post read-request */
-+#ifdef EAPI
-+   ,proxy_addmod,             /* EAPI: add_module */
-+    proxy_remmod,             /* EAPI: remove_module */
-+    NULL,                     /* EAPI: rewrite_command */
-+    NULL                      /* EAPI: new_connection  */
-+#endif
- };
-diff -u apache_1.3.26/src/modules/proxy/mod_proxy.h apache_1.3.26-patched/src/modules/proxy/mod_proxy.h
---- apache_1.3.26/src/modules/proxy/mod_proxy.h        Sun Apr 21 07:35:07 2002
-+++ apache_1.3.26-patched/src/modules/proxy/mod_proxy.h        Sun Jun 23 18:36:11 2002
-@@ -145,6 +145,23 @@
-     struct in_addr addr;
- };
-+/* for configurable headers */
-+typedef enum { 
-+  hdr_on, hdr_off, hdr_set, hdr_unset, hdr_add, hdr_append 
-+} hdr_actions;
-+
-+typedef struct {
-+  hdr_actions action;
-+  char       *header;
-+  char       *value;
-+  regex_t    *pattern;
-+} hdr_actions_entry;
-+
-+typedef struct {
-+  int         vector;
-+  regex_t    *pattern;
-+} resp_exp_vector_entry;
-+
- #define DEFAULT_CACHE_SPACE 5
- #define DEFAULT_CACHE_MAXEXPIRE SEC_ONE_DAY
- #define DEFAULT_CACHE_EXPIRE    SEC_ONE_HR
-@@ -203,6 +220,10 @@
-     char recv_buffer_size_set;
-     size_t io_buffer_size;
-     char io_buffer_size_set;
-+    array_header *freshen_date;
-+    array_header *resp_exp_vector;
-+    array_header *req_headers;
-+    array_header *resp_headers;
- } proxy_server_conf;
- struct hdr_entry {
-@@ -299,6 +320,10 @@
- table *ap_proxy_read_headers(request_rec *r, char *buffer, int size, BUFF *f);
- long int ap_proxy_send_fb(BUFF *f, request_rec *r, cache_req *c, off_t len, int nowrite, int chunked, size_t recv_buffer_size);
- void ap_proxy_write_headers(cache_req *c, const char *respline, table *t);
-+void ap_proxy_freshen_date(request_rec *r, proxy_server_conf *psf, table* t);
-+void ap_proxy_vectored_exp(request_rec *r, proxy_server_conf *psf, table* t);
-+void ap_proxy_header_fixup(request_rec *r, proxy_server_conf *psf, table* t,
-+                           array_header *directives);
- int ap_proxy_liststr(const char *list, const char *key, char **val);
- void ap_proxy_hash(const char *it, char *val, int ndepth, int nlength);
- int ap_proxy_hex2sec(const char *x);
-diff -u apache_1.3.26/src/modules/proxy/proxy_cache.c apache_1.3.26-patched/src/modules/proxy/proxy_cache.c
---- apache_1.3.26/src/modules/proxy/proxy_cache.c      Mon Jun  3 08:28:27 2002
-+++ apache_1.3.26-patched/src/modules/proxy/proxy_cache.c      Sun Jun 23 19:59:20 2002
-@@ -747,6 +747,8 @@
- int ap_proxy_cache_conditional(request_rec *r, cache_req *c, BUFF *cachefp)
- {
-     const char *etag, *wetag = NULL;
-+    proxy_server_conf *psf = (proxy_server_conf *)
-+      ap_get_module_config(r->server->module_config,&proxy_module);
-     /* get etag */
-     if ((etag = ap_table_get(c->hdrs, "Etag"))) {
-@@ -905,6 +907,11 @@
-     /* content type is already set in the headers */
-     r->content_type = ap_table_get(r->headers_out, "Content-Type");
-+    /* handle the cases where we need to modify the date and expires
-+       outgoing headers */
-+    ap_proxy_freshen_date(r,psf,r->headers_out);
-+    ap_proxy_vectored_exp(r,psf,r->headers_out);
-+
-     ap_send_http_header(r);
-     /* are we rewriting the cache file? */
-diff -u apache_1.3.26/src/modules/proxy/proxy_http.c apache_1.3.26-patched/src/modules/proxy/proxy_http.c
---- apache_1.3.26/src/modules/proxy/proxy_http.c       Mon Jun 17 20:59:59 2002
-+++ apache_1.3.26-patched/src/modules/proxy/proxy_http.c       Sun Jun 23 20:14:14 2002
-@@ -170,6 +170,9 @@
-     const char *datestr, *urlstr;
-     int result, major, minor;
-     const char *content_length;
-+#ifdef EAPI
-+    char *peer;
-+#endif
-     void *sconf = r->server->module_config;
-     proxy_server_conf *conf =
-@@ -191,6 +194,12 @@
-         return HTTP_BAD_REQUEST;
-     urlptr += 3;
-     destport = DEFAULT_HTTP_PORT;
-+#ifdef EAPI
-+    ap_hook_use("ap::mod_proxy::http::handler::set_destport", 
-+                AP_HOOK_SIG2(int,ptr), 
-+                AP_HOOK_TOPMOST,
-+                &destport, r);
-+#endif /* EAPI */
-     strp = strchr(urlptr, '/');
-     if (strp == NULL) {
-         desthost = ap_pstrdup(p, urlptr);
-@@ -228,12 +237,18 @@
-         err = ap_proxy_host2addr(proxyhost, &server_hp);
-         if (err != NULL)
-             return DECLINED;    /* try another */
-+#ifdef EAPI
-+      peer = ap_psprintf(p, "%s:%u", proxyhost, proxyport);  
-+#endif
-     }
-     else {
-         server.sin_port = htons((unsigned short)destport);
-         err = ap_proxy_host2addr(desthost, &server_hp);
-         if (err != NULL)
-             return ap_proxyerror(r, HTTP_INTERNAL_SERVER_ERROR, err);
-+#ifdef EAPI
-+      peer =  ap_psprintf(p, "%s:%u", desthost, destport);  
-+#endif
-     }
-@@ -308,14 +323,45 @@
-     f = ap_bcreate(p, B_RDWR | B_SOCKET);
-     ap_bpushfd(f, sock, sock);
-+#ifdef EAPI
-+    {
-+        char *errmsg = NULL;
-+        ap_hook_use("ap::mod_proxy::http::handler::new_connection", 
-+                    AP_HOOK_SIG4(ptr,ptr,ptr,ptr), 
-+                    AP_HOOK_DECLINE(NULL),
-+                    &errmsg, r, f, peer);
-+        if (errmsg != NULL)
-+            return ap_proxyerror(r, HTTP_BAD_GATEWAY, errmsg);
-+    }
-+#endif /* EAPI */
-+
-     ap_hard_timeout("proxy send", r);
-     ap_bvputs(f, r->method, " ", proxyhost ? url : urlptr, " HTTP/1.1" CRLF,
-               NULL);
-+#ifdef EAPI
-+    {
-+      int rc = DECLINED;
-+      ap_hook_use("ap::mod_proxy::http::handler::write_host_header", 
-+                  AP_HOOK_SIG6(int,ptr,ptr,ptr,int,ptr), 
-+                  AP_HOOK_DECLINE(DECLINED),
-+                  &rc, r, f, desthost, destport, destportstr);
-+        if (rc == DECLINED) {
-+          if (destportstr != NULL && destport != DEFAULT_HTTP_PORT)
-+              ap_bvputs(f, "Host: ", desthost, ":", destportstr, CRLF, NULL);
-+          else
-+              ap_bvputs(f, "Host: ", desthost, CRLF, NULL);
-+        }
-+    }
-+#else /* EAPI */
-     /* Send Host: now, adding it to req_hdrs wouldn't be much better */
-     if (destportstr != NULL && destport != DEFAULT_HTTP_PORT)
-         ap_bvputs(f, "Host: ", desthost, ":", destportstr, CRLF, NULL);
-     else
-         ap_bvputs(f, "Host: ", desthost, CRLF, NULL);
-+#endif /* EAPI */
-+
-+    /* run fixup for the request header directives */
-+    ap_proxy_header_fixup(r,conf,req_hdrs,conf->req_headers);
-     if (conf->viaopt == via_block) {
-         /* Block all outgoing Via: headers */
-diff -u apache_1.3.26/src/modules/proxy/proxy_util.c apache_1.3.26-patched/src/modules/proxy/proxy_util.c
---- apache_1.3.26/src/modules/proxy/proxy_util.c       Mon Jun 17 20:59:59 2002
-+++ apache_1.3.26-patched/src/modules/proxy/proxy_util.c       Sun Jun 23 20:03:54 2002
-@@ -712,7 +712,10 @@
-  */
- void ap_proxy_write_headers(cache_req *c, const char *respline, table *t)
- {
--    /* write status line */
-+    proxy_server_conf *psf = (proxy_server_conf *)
-+      ap_get_module_config(c->req->server->module_config,&proxy_module);
-+
-+   /* write status line */
-     if (respline && c->fp != NULL &&
-         ap_bvputs(c->fp, respline, CRLF, NULL) == -1) {
-         ap_log_rerror(APLOG_MARK, APLOG_ERR, c->req,
-@@ -721,6 +724,17 @@
-         return;
-     }
-+    /* Set extra response headers. We can set whatever we want here
-+     *  (including Expires and family) because we've already written
-+     *  the hex header line for the cache file. But the rest of the
-+     *  cache file, including the HTTP headers, will include whatever
-+     *  we adjust here. This is good, in general, but it does mean we
-+     *  have to adjust any running-vector Expires headers in the
-+     *  ap_proxy_send_headers, so even cached files get nice clean
-+     *  headers with times set correctly in the future. */
-+    ap_proxy_vectored_exp(c->req,psf,t);
-+    ap_proxy_header_fixup(c->req,psf,t,psf->resp_headers);
-+
-     /* write response headers to the cache file */
-     ap_table_do(ap_proxy_send_hdr_line, c, t, NULL);
-@@ -732,6 +746,77 @@
-     }
- }
-+void ap_proxy_freshen_date(request_rec *r, proxy_server_conf *psf, table* t)
-+{
-+  int i;
-+  hdr_actions_entry *list = (hdr_actions_entry*)psf->freshen_date->elts;
-+  for(i=0; i < psf->freshen_date->nelts; i++) {
-+    if(((list+i)->pattern == NULL) || 
-+       (regexec((list+i)->pattern,r->uri,0,NULL,0) != REG_NOMATCH)) {
-+      if ((list+i)->action == hdr_on) {
-+        ap_table_set(t, "Date", 
-+                     ap_ht_time(r->pool, time(NULL), "%a %d %b %Y %T %Z", 1));
-+      }
-+      return;
-+    }
-+  }
-+}
-+
-+/* see whether there are ProxyVectoredExpire directives to apply to
-+   this request. (Don't do anything unless there is already an Expires
-+   header here.) */
-+void ap_proxy_vectored_exp(request_rec *r, proxy_server_conf *psf, table* t)
-+{
-+  int i;
-+  resp_exp_vector_entry *list;
-+  /* don't do anything to a doc that doesn't *already* have an Expires */
-+  if (! ap_table_get(t,"Expires")) return;
-+  /* okay, loop through directives */
-+  list = (resp_exp_vector_entry*)psf->resp_exp_vector->elts;
-+  for(i=0; i < psf->resp_exp_vector->nelts; i++) {
-+    if(((list+i)->pattern == NULL) ||
-+       (regexec((list+i)->pattern,r->uri,0,NULL,0) != REG_NOMATCH)) {
-+      if ((list+i)->vector == -1) {
-+      } else if ((list+i)->vector == 0) {
-+        ap_table_setn(t, "Expires", "0");
-+        ap_table_setn(t, "Cache-Control", "max-age=0");
-+      } else {
-+        ap_table_set(t, "Expires", 
-+                     ap_ht_time(r->pool, time(NULL)+(list+i)->vector, 
-+                                "%a %d %b %Y %T %Z", 1));
-+        ap_table_set(t, "Cache-Control", 
-+                     ap_psprintf(r->pool,"max-age=%d",(list+i)->vector)); 
-+      }
-+      return;
-+    }
-+  }
-+}
-+
-+void ap_proxy_header_fixup(request_rec *r, proxy_server_conf *psf,
-+                           table *t, array_header *directives)
-+{
-+  int i;
-+  hdr_actions_entry *list = (hdr_actions_entry *)directives->elts;
-+  for (i=0; i < directives->nelts; i++) {
-+    if(((list+i)->pattern == NULL) ||
-+       (regexec((list+i)->pattern,r->uri,0,NULL,0) != REG_NOMATCH)) {
-+      switch ((list+i)->action) {
-+      case hdr_set:
-+        ap_table_setn(t,(list+i)->header,(list+i)->value);
-+        break;
-+      case hdr_unset:
-+        ap_table_unset(t,(list+i)->header);
-+        break;
-+      case hdr_add:
-+        ap_table_addn(t,(list+i)->header,(list+i)->value);
-+        break;
-+      case hdr_append:
-+        ap_table_mergen(t,(list+i)->header,(list+i)->value);
-+        break;
-+      }
-+    }
-+  }
-+}
- /*
-  * list is a comma-separated list of case-insensitive tokens, with
diff --git a/proxy_http1.1_chunking.patch b/proxy_http1.1_chunking.patch
deleted file mode 100644 (file)
index 83b6ea6..0000000
+++ /dev/null
@@ -1,3739 +0,0 @@
-* Updated * (the first version I added here was incomplete, sorry)
-
-This patch works around a couple of problems in the stock 1.3.24 apache
-mod_proxy. The 1.3.24 version would fail to de-chunk a chunked http/1.1
-response for an http/1.0-client, resulting in mysterious hex digits
-spread all over the returned document. Especially in a chain of proxies,
-that would lead to serious problems in the interaction between upstream
-proxies and apache, and the connections would often hang.
-
-The patch is a snapshot of the current development version 1.3.25-dev
-(as of 18-Apr-2002), and contains a lot of whitespace reformatting.
-Sorry for that, but the layout was standardized using indent, so as
-to ease future maintenance.
-
-It has been tested in an intranet environment, both using direct
-connections and ProxyRemote connections, and with both http and
-https.
-
-The patch should apply cleanly against version apache-1.3.24
-
-If you have questions, please contact martin at apache dot org, who
-supplied this patch file. Thank you.
-
-   Martin
-
-
-How-to-apply:
-
-$ gzip -dc apache_1.3.24.tar.gz  | tar xvf - 
-$ cd apache_1.3.24/src
-$ patch -p0 </tmp/proxy_http1.1_chunking.patch
-
-
-Index: main/http_protocol.c
-===================================================================
-RCS file: /home/cvs/apache-1.3/src/main/http_protocol.c,v
-retrieving revision 1.312
-retrieving revision 1.314
-diff -u -b -u -r1.312 -r1.314
---- main/http_protocol.c       21 Mar 2002 14:49:46 -0000      1.312
-+++ main/http_protocol.c       6 Apr 2002 14:31:05 -0000       1.314
-@@ -857,13 +857,13 @@
-  *       then the actual input line exceeded the buffer length,
-  *       and it would be a good idea for the caller to puke 400 or 414.
-  */
--static int getline(char *s, int n, BUFF *in, int fold)
-+API_EXPORT(int) ap_getline(char *s, int n, BUFF *in, int fold)
- {
-     char *pos, next;
-     int retval;
-     int total = 0;
- #ifdef CHARSET_EBCDIC
--    /* When getline() is called, the HTTP protocol is in a state
-+    /* When ap_getline() is called, the HTTP protocol is in a state
-      * where we MUST be reading "plain text" protocol stuff,
-      * (Request line, MIME headers, Chunk sizes) regardless of
-      * the MIME type and conversion setting of the document itself.
-@@ -978,7 +978,7 @@
- static int read_request_line(request_rec *r)
- {
--    char l[DEFAULT_LIMIT_REQUEST_LINE + 2]; /* getline's two extra for \n\0 */
-+    char l[DEFAULT_LIMIT_REQUEST_LINE + 2]; /* ap_getline's two extra for \n\0 */
-     const char *ll = l;
-     const char *uri;
-     conn_rec *conn = r->connection;
-@@ -1000,7 +1000,7 @@
-      * have to block during a read.
-      */
-     ap_bsetflag(conn->client, B_SAFEREAD, 1);
--    while ((len = getline(l, sizeof(l), conn->client, 0)) <= 0) {
-+    while ((len = ap_getline(l, sizeof(l), conn->client, 0)) <= 0) {
-         if ((len < 0) || ap_bgetflag(conn->client, B_EOF)) {
-             ap_bsetflag(conn->client, B_SAFEREAD, 0);
-           /* this is a hack to make sure that request time is set,
-@@ -1031,7 +1031,7 @@
-     ap_parse_uri(r, uri);
--    /* getline returns (size of max buffer - 1) if it fills up the
-+    /* ap_getline returns (size of max buffer - 1) if it fills up the
-      * buffer before finding the end-of-line.  This is only going to
-      * happen if it exceeds the configured limit for a request-line.
-      */
-@@ -1056,7 +1056,7 @@
- static void get_mime_headers(request_rec *r)
- {
--    char field[DEFAULT_LIMIT_REQUEST_FIELDSIZE + 2]; /* getline's two extra */
-+    char field[DEFAULT_LIMIT_REQUEST_FIELDSIZE + 2]; /* ap_getline's two extra */
-     conn_rec *c = r->connection;
-     char *value;
-     char *copy;
-@@ -1071,7 +1071,7 @@
-      * Read header lines until we get the empty separator line, a read error,
-      * the connection closes (EOF), reach the server limit, or we timeout.
-      */
--    while ((len = getline(field, sizeof(field), c->client, 1)) > 0) {
-+    while ((len = ap_getline(field, sizeof(field), c->client, 1)) > 0) {
-         if (r->server->limit_req_fields &&
-             (++fields_read > r->server->limit_req_fields)) {
-@@ -1081,7 +1081,7 @@
-                           "this server's limit.<P>\n");
-             return;
-         }
--        /* getline returns (size of max buffer - 1) if it fills up the
-+        /* ap_getline returns (size of max buffer - 1) if it fills up the
-          * buffer before finding the end-of-line.  This is only going to
-          * happen if it exceeds the configured limit for a field size.
-          */
-@@ -1513,7 +1513,6 @@
- API_EXPORT(void) ap_basic_http_header(request_rec *r)
- {
-     char *protocol;
--    const char *server;
-     if (r->assbackwards)
-         return;
-@@ -1542,11 +1541,14 @@
-     /* output the date header */
-     ap_send_header_field(r, "Date", ap_gm_timestr_822(r->pool, r->request_time));
--    /* keep a previously set server header (possible from proxy), otherwise
-+    /* keep the set-by-proxy server header, otherwise
-      * generate a new server header */
--    if (server = ap_table_get(r->headers_out, "Server")) {
-+    if (r->proxyreq) {
-+        const char *server = ap_table_get(r->headers_out, "Server");
-+        if (server) {
-         ap_send_header_field(r, "Server", server);
-     }
-+    }
-     else {
-         ap_send_header_field(r, "Server", ap_get_server_version());
-     }
-@@ -2016,7 +2018,7 @@
-     return 1;
- }
--static long get_chunk_size(char *b)
-+API_EXPORT(long) ap_get_chunk_size(char *b)
- {
-     long chunksize = 0;
-@@ -2098,14 +2100,14 @@
-     if (r->remaining == 0) {    /* Start of new chunk */
--        chunk_start = getline(buffer, bufsiz, r->connection->client, 0);
-+        chunk_start = ap_getline(buffer, bufsiz, r->connection->client, 0);
-         if ((chunk_start <= 0) || (chunk_start >= (bufsiz - 1))
-             || !ap_isxdigit(*buffer)) {
-             r->connection->keepalive = -1;
-             return -1;
-         }
--        len_to_read = get_chunk_size(buffer);
-+        len_to_read = ap_get_chunk_size(buffer);
-         if (len_to_read == 0) { /* Last chunk indicated, get footers */
-             if (r->read_body == REQUEST_CHUNKED_DECHUNK) {
-@@ -2139,7 +2141,7 @@
-         len_read = chunk_start;
-         while ((bufsiz > 1) && ((len_read =
--                  getline(buffer, bufsiz, r->connection->client, 1)) > 0)) {
-+                  ap_getline(buffer, bufsiz, r->connection->client, 1)) > 0)) {
-             if (len_read != (bufsiz - 1)) {
-                 buffer[len_read++] = CR;        /* Restore footer line end  */
-Index: modules/proxy/mod_proxy.c
-===================================================================
-RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
-retrieving revision 1.80
-retrieving revision 1.81
-diff -u -b -u -r1.80 -r1.81
---- modules/proxy/mod_proxy.c  13 Mar 2002 21:05:32 -0000      1.80
-+++ modules/proxy/mod_proxy.c  25 Mar 2002 09:21:58 -0000      1.81
-@@ -99,8 +99,9 @@
-     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...
-+            /*
-+             * any number of '/' in the alias matches any number in the
-+             * supplied URI, but there must be at least one...
-              */
-             if (*urip != '/')
-                 return 0;
-@@ -122,9 +123,9 @@
-     if (aliasp[-1] != '/' && *urip != '\0' && *urip != '/')
-         return 0;
--    /* Return number of characters from URI which matched (may be
--     * greater than length of alias, since we may have matched
--     * doubled slashes)
-+    /*
-+     * Return number of characters from URI which matched (may be greater
-+     * than length of alias, since we may have matched doubled slashes)
-      */
-     return urip - uri;
-@@ -146,7 +147,7 @@
-     void *sconf = r->server->module_config;
-     proxy_server_conf *conf;
--    conf = (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    conf = (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module);
-     if (conf->req && r->parsed_uri.scheme) {
-         /* but it might be something vhosted */
-@@ -176,20 +177,22 @@
- {
-     void *sconf = r->server->module_config;
-     proxy_server_conf *conf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module);
-     int i, len;
--    struct proxy_alias *ent = (struct proxy_alias *) conf->aliases->elts;
-+    struct proxy_alias *ent = (struct proxy_alias *)conf->aliases->elts;
-     if (r->proxyreq != NOT_PROXY) {
--        /* someone has already set up the proxy, it was possibly ourselves
--         * in proxy_detect
-+        /*
-+         * someone has already set up the proxy, it was possibly ourselves in
-+         * proxy_detect
-          */
-         return OK;
-     }
--    /* XXX: since r->uri has been manipulated already we're not really
--     * compliant with RFC1945 at this point.  But this probably isn't
--     * an issue because this is a hybrid proxy/origin server.
-+    /*
-+     * XXX: since r->uri has been manipulated already we're not really
-+     * compliant with RFC1945 at this point.  But this probably isn't an
-+     * issue because this is a hybrid proxy/origin server.
-      */
-     for (i = 0; i < conf->aliases->nelts; i++) {
-@@ -272,7 +275,7 @@
-                                   UNP_REVEALPASSWORD);
-     ap_table_set(r->headers_out, "Location", nuri);
--    ap_log_rerror(APLOG_MARK, APLOG_INFO|APLOG_NOERRNO, r,
-+    ap_log_rerror(APLOG_MARK, APLOG_INFO | APLOG_NOERRNO, r,
-                 "Domain missing: %s sent to %s%s%s", r->uri,
-                 ap_unparse_uri_components(r->pool, &r->parsed_uri,
-                       UNP_OMITUSERINFO),
-@@ -289,7 +292,7 @@
-     char *url, *scheme, *p;
-     void *sconf = r->server->module_config;
-     proxy_server_conf *conf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module);
-     array_header *proxies = conf->proxies;
-     struct proxy_remote *ents = (struct proxy_remote *) proxies->elts;
-     int i, rc;
-@@ -313,7 +316,7 @@
-             return OK;
-         }
-         ap_table_setn(r->headers_in, "Max-Forwards", 
--                      ap_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd-1 : 0));
-+                ap_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd - 1 : 0));
-     }
-     if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)))
-@@ -343,16 +346,16 @@
-     /* 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 (strcasecmp(scheme, "http") == 0) */
-+    /* if (strcasecmp(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;
-         for (direct_connect = ii = 0; ii < conf->dirconn->nelts && !direct_connect; ii++) {
-             direct_connect = list[ii].matcher(&list[ii], r);
-         }
- #if DEBUGGING
--        ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r,
-+        ap_log_rerror(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r,
-                      (direct_connect) ? "NoProxy for %s" : "UseProxy for %s",
-                      r->uri);
- #endif
-@@ -367,8 +370,9 @@
-                 (p == NULL && strcasecmp(scheme, ents[i].scheme) == 0) ||
-                 (p != NULL &&
-                strncasecmp(url, ents[i].scheme, strlen(ents[i].scheme)) == 0)) {
--                /* CONNECT is a special method that bypasses the normal
--                 * proxy code.
-+                /*
-+                 * CONNECT is a special method that bypasses the normal proxy
-+                 * code.
-                  */
-                 if (r->method_number == M_CONNECT)
-                     rc = ap_proxy_connect_handler(r, cr, url, ents[i].hostname,
-@@ -422,7 +426,8 @@
-     ps->viaopt_set = 0; /* 0 means default */
-     ps->req = 0;
-     ps->req_set = 0;
--    ps->recv_buffer_size = 0; /* this default was left unset for some reason */
-+    ps->recv_buffer_size = 0;   /* this default was left unset for some
-+                                 * reason */
-     ps->recv_buffer_size_set = 0;
-     ps->io_buffer_size = IOBUFSIZE;
-     ps->io_buffer_size_set = 0;
-@@ -454,8 +459,8 @@
-                         void *overridesv)
- {
-     proxy_server_conf *ps = ap_pcalloc(p, sizeof(proxy_server_conf));
--    proxy_server_conf *base = (proxy_server_conf *) basev;
--    proxy_server_conf *overrides = (proxy_server_conf *) overridesv;
-+    proxy_server_conf *base = (proxy_server_conf *)basev;
-+    proxy_server_conf *overrides = (proxy_server_conf *)overridesv;
-     ps->proxies = ap_append_arrays(p, base->proxies, overrides->proxies);
-     ps->aliases = ap_append_arrays(p, base->aliases, overrides->aliases);
-@@ -490,7 +495,7 @@
- {
-     server_rec *s = cmd->server;
-     proxy_server_conf *conf =
--    (proxy_server_conf *) ap_get_module_config(s->module_config, &proxy_module);
-+    (proxy_server_conf *)ap_get_module_config(s->module_config, &proxy_module);
-     struct proxy_remote *new;
-     char *p, *q;
-     int port;
-@@ -532,7 +537,7 @@
- {
-     server_rec *s = cmd->server;
-     proxy_server_conf *conf =
--    (proxy_server_conf *) ap_get_module_config(s->module_config, &proxy_module);
-+    (proxy_server_conf *)ap_get_module_config(s->module_config, &proxy_module);
-     struct proxy_alias *new;
-     new = ap_push_array(conf->aliases);
-@@ -579,7 +584,10 @@
-         new->name = arg;
-         /* Don't do name lookups on things that aren't dotted */
-         if (strchr(arg, '.') != NULL && ap_proxy_host2addr(new->name, &hp) == NULL)
--            /*@@@FIXME: This copies only the first of (possibly many) IP addrs */
-+            /*
-+             * @@@FIXME: This copies only the first of (possibly many) IP
-+             * addrs
-+             */
-             memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr));
-         else
-             new->addr.s_addr = 0;
-@@ -616,7 +624,7 @@
-     proxy_server_conf *conf =
-     ap_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;
-@@ -733,7 +741,7 @@
-     if (sscanf(arg, "%lg", &val) != 1)
-         return "CacheMaxExpire value must be a float";
--    psf->cache.maxexpire = (int) (val * (double) SEC_ONE_HR);
-+    psf->cache.maxexpire = (int)(val * (double)SEC_ONE_HR);
-     psf->cache.maxexpire_set = 1;
-     return NULL;
- }
-@@ -747,7 +755,7 @@
-     if (sscanf(arg, "%lg", &val) != 1)
-         return "CacheDefaultExpire value must be a float";
--    psf->cache.defaultexpire = (int) (val * (double) SEC_ONE_HR);
-+    psf->cache.defaultexpire = (int)(val * (double)SEC_ONE_HR);
-     psf->cache.defaultexpire_set = 1;
-     return NULL;
- }
-@@ -761,7 +769,7 @@
-     if (sscanf(arg, "%lg", &val) != 1)
-         return "CacheGcInterval value must be a float";
--    psf->cache.gcinterval = (int) (val * (double) SEC_ONE_HR);
-+    psf->cache.gcinterval = (int)(val * (double)SEC_ONE_HR);
-     psf->cache.gcinterval_set = 1;
-     return NULL;
- }
-@@ -823,7 +831,10 @@
-         new->name = arg;
-         /* Don't do name lookups on things that aren't dotted */
-         if (strchr(arg, '.') != NULL && ap_proxy_host2addr(new->name, &hp) == NULL)
--            /*@@@FIXME: This copies only the first of (possibly many) IP addrs */
-+            /*
-+             * @@@FIXME: This copies only the first of (possibly many) IP
-+             * addrs
-+             */
-             memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr));
-         else
-             new->addr.s_addr = 0;
-@@ -858,7 +869,7 @@
-     return NULL;
- }
--static const char*
-+static const char *
-     set_cache_completion(cmd_parms *parms, void *dummy, char *arg)
- {
-     proxy_server_conf *psf =
-@@ -876,7 +887,7 @@
-     return NULL;    
- }
--static const char*
-+static const char *
-     set_via_opt(cmd_parms *parms, void *dummy, char *arg)
- {
-     proxy_server_conf *psf =
-@@ -974,5 +985,3 @@
-     NULL,                       /* child_exit */
-     proxy_detect                /* post read-request */
- };
--
--
-Index: modules/proxy/mod_proxy.h
-===================================================================
-RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.h,v
-retrieving revision 1.57
-retrieving revision 1.58
-diff -u -b -u -r1.57 -r1.58
---- modules/proxy/mod_proxy.h  13 Mar 2002 21:05:32 -0000      1.57
-+++ modules/proxy/mod_proxy.h  7 Apr 2002 18:57:36 -0000       1.58
-@@ -297,7 +297,7 @@
-                          char **passwordp, char **hostp, int *port);
- const char *ap_proxy_date_canon(pool *p, const char *x);
- table *ap_proxy_read_headers(request_rec *r, char *buffer, int size, BUFF *f);
--long int ap_proxy_send_fb(BUFF *f, request_rec *r, cache_req *c, off_t len, int nowrite, size_t recv_buffer_size);
-+long int ap_proxy_send_fb(BUFF *f, request_rec *r, cache_req *c, off_t len, int nowrite, int chunked, size_t recv_buffer_size);
- void ap_proxy_write_headers(cache_req *c, const char *respline, table *t);
- int ap_proxy_liststr(const char *list, const char *key, char **val);
- void ap_proxy_hash(const char *it, char *val, int ndepth, int nlength);
-Index: modules/proxy/proxy_cache.c
-===================================================================
-RCS file: /home/cvs/apache-1.3/src/modules/proxy/proxy_cache.c,v
-retrieving revision 1.81
-retrieving revision 1.86
-diff -u -b -u -r1.81 -r1.86
---- modules/proxy/proxy_cache.c        13 Mar 2002 21:05:32 -0000      1.81
-+++ modules/proxy/proxy_cache.c        12 Apr 2002 12:34:46 -0000      1.86
-@@ -135,14 +135,14 @@
- {
-     static int inside = 0;
--    (void) ap_acquire_mutex(garbage_mutex);
-+    (void)ap_acquire_mutex(garbage_mutex);
-     if (inside == 1) {
--        (void) ap_release_mutex(garbage_mutex);
-+        (void)ap_release_mutex(garbage_mutex);
-         return;
-     }
-     else
-         inside = 1;
--    (void) ap_release_mutex(garbage_mutex);
-+    (void)ap_release_mutex(garbage_mutex);
-     ap_block_alarms();          /* avoid SIGALRM on big cache cleanup */
-     if (should_proxy_garbage_coll(r))
-@@ -153,14 +153,13 @@
- #endif
-     ap_unblock_alarms();
--    (void) ap_acquire_mutex(garbage_mutex);
-+    (void)ap_acquire_mutex(garbage_mutex);
-     inside = 0;
--    (void) ap_release_mutex(garbage_mutex);
-+    (void)ap_release_mutex(garbage_mutex);
- }
--static void
--add_long61 (long61_t *accu, long val)
-+static void add_long61(long61_t *accu, long val)
- {
-     /* Add in lower 30 bits */
-     accu->lower += (val & 0x3FFFFFFFL);
-@@ -170,8 +169,7 @@
-     accu->lower &= 0x3FFFFFFFL;
- }
--static void
--sub_long61 (long61_t *accu, long val)
-+static void sub_long61(long61_t *accu, long val)
- {
-     int carry = (val & 0x3FFFFFFFL) > accu->lower;
-     /* Subtract lower 30 bits */
-@@ -185,8 +183,7 @@
-  * return  0 when left == right
-  * return >0 when left > right
-  */
--static long
--cmp_long61 (long61_t *left, long61_t *right)
-+static long cmp_long61(long61_t *left, long61_t *right)
- {
-     return (left->upper == right->upper) ? (left->lower - right->lower)
-                                          : (left->upper - right->upper);
-@@ -282,7 +279,7 @@
- {
-     void *sconf = r->server->module_config;
-     proxy_server_conf *pconf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module);
-     const struct cache_conf *conf = &pconf->cache;
-     const char *cachedir = conf->root;
-@@ -295,27 +292,29 @@
-     if (cachedir == NULL || every == -1)
-         return 0;
--    filename = ap_palloc(r->pool, strlen(cachedir) + strlen( DOT_TIME ) +1);
-+    filename = ap_palloc(r->pool, strlen(cachedir) + strlen(DOT_TIME) + 1);
-     garbage_now = time(NULL);
--    /* Usually, the modification time of <cachedir>/.time can only increase.
-+    /*
-+     * Usually, the modification time of <cachedir>/.time can only increase.
-      * Thus, even with several child processes having their own copy of
--     * lastcheck, if time(NULL) still < lastcheck then it's not time
--     * for GC yet.
-+     * lastcheck, if time(NULL) still < lastcheck then it's not time for GC
-+     * yet.
-      */
-     if (garbage_now != -1 && lastcheck != BAD_DATE && garbage_now < lastcheck + every)
-         return 0;
--    strcpy(filename,cachedir);
--    strcat(filename,DOT_TIME);
-+    strcpy(filename, cachedir);
-+    strcat(filename, DOT_TIME);
--    /* At this point we have a bit of an engineering compromise. We could either
--     * create and/or mark the .time file  (prior to the fork which might
--     * fail on a resource issue) or wait until we are safely forked. The
--     * advantage of doing it now in this process is that we get some
--     * usefull live out of the global last check variable. (XXX which
--     * should go scoreboard IMHO.) Note that the actual counting is 
--     * at a later moment.
-+    /*
-+     * At this point we have a bit of an engineering compromise. We could
-+     * either create and/or mark the .time file  (prior to the fork which
-+     * might fail on a resource issue) or wait until we are safely forked.
-+     * The advantage of doing it now in this process is that we get some
-+     * usefull live out of the global last check variable. (XXX which should
-+     * go scoreboard IMHO.) Note that the actual counting is at a later
-+     * moment.
-      */
-    if (stat(filename, &buf) == -1) {   /* does not exist */
-         if (errno != ENOENT) {
-@@ -351,7 +350,7 @@
-     const char *cachedir;
-     void *sconf = r->server->module_config;
-     proxy_server_conf *pconf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module);
-     const struct cache_conf *conf = &pconf->cache;
-     array_header *files;
-     struct gc_ent *fent;
-@@ -372,9 +371,9 @@
-     sub_garbage_coll(r, files, cachedir, "/");
-     if (cmp_long61(&curbytes, &cachesize) < 0L) {
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-                          "proxy GC: Cache is %ld%% full (nothing deleted)",
--                         (long)(((curbytes.upper<<20)|(curbytes.lower>>10))*100/conf->space));
-+                     (long)(((curbytes.upper << 20) | (curbytes.lower >> 10)) * 100 / conf->space));
-         ap_unblock_alarms();
-         return;
-     }
-@@ -385,7 +384,7 @@
-     for (i = 0; i < files->nelts; i++) {
-         fent = &((struct gc_ent *) files->elts)[i];
-         sprintf(filename, "%s%s", cachedir, fent->file);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "GC Unlinking %s (expiry %ld, garbage_now %ld)", filename, (long)fent->expire, (long)garbage_now);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "GC Unlinking %s (expiry %ld, garbage_now %ld)", filename, (long)fent->expire, (long)garbage_now);
- #if TESTING
-         fprintf(stderr, "Would unlink %s\n", filename);
- #else
-@@ -403,16 +402,16 @@
-         }
-     }
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-                          "proxy GC: Cache is %ld%% full (%d deleted)",
--                         (long)(((curbytes.upper<<20)|(curbytes.lower>>10))*100/conf->space), i);
-+                 (long)(((curbytes.upper << 20) | (curbytes.lower >> 10)) * 100 / conf->space), i);
-     ap_unblock_alarms();
- }
- static int sub_garbage_coll(request_rec *r, array_header *files,
-                           const char *cachebasedir, const char *cachesubdir)
- {
--    char line[17*(3)];
-+    char line[17 * (3)];
-     char cachedir[HUGE_STRING_LEN];
-     struct stat buf;
-     int fd, i;
-@@ -428,7 +427,7 @@
-     ap_snprintf(cachedir, sizeof(cachedir), "%s%s", cachebasedir, cachesubdir);
-     filename = ap_palloc(r->pool, strlen(cachedir) + HASH_LEN + 2);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "GC Examining directory %s", cachedir);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "GC Examining directory %s", cachedir);
-     dir = opendir(cachedir);
-     if (dir == NULL) {
-         ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
-@@ -440,7 +439,7 @@
-         if (ent->d_name[0] == '.')
-             continue;
-         sprintf(filename, "%s%s", cachedir, ent->d_name);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "GC Examining file %s", filename);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "GC Examining file %s", filename);
- /* is it a temporary file? */
-         if (strncmp(ent->d_name, "tmp", 3) == 0) {
- /* then stat it to see how old it is; delete temporary files > 1 day old */
-@@ -451,8 +450,8 @@
-             }
-             else if (garbage_now != -1 && buf.st_atime < garbage_now - SEC_ONE_DAY &&
-                      buf.st_mtime < garbage_now - SEC_ONE_DAY) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "GC unlink %s", filename);
--                ap_log_error(APLOG_MARK, APLOG_INFO|APLOG_NOERRNO, r->server,
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "GC unlink %s", filename);
-+                ap_log_error(APLOG_MARK, APLOG_INFO | APLOG_NOERRNO, r->server,
-                              "proxy gc: deleting orphaned cache file %s", filename);
- #if TESTING
-                 fprintf(stderr, "Would unlink %s\n", filename);
-@@ -472,15 +471,16 @@
- #if defined(OS2) || defined(TPF)
- /* is it a directory? */
- #ifdef OS2
--        if (ent->d_attr & A_DIR) {
-+        if (ent->d_attr & A_DIR)
- #elif defined(TPF)
-     if (stat(filename, &buf) == -1) {
-         if (errno != ENOENT)
-             ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
-                  "proxy gc: stat(%s)", filename);
-     }
--    if (S_ISDIR(buf.st_mode)) {
-+        if (S_ISDIR(buf.st_mode))
- #endif
-+        {
-             char newcachedir[HUGE_STRING_LEN];
-             ap_snprintf(newcachedir, sizeof(newcachedir),
-                         "%s%s/", cachesubdir, ent->d_name);
-@@ -500,9 +500,9 @@
- /* read the file */
- #if defined(WIN32)
--        /* On WIN32 open does not work for directories, 
--         * so we us stat instead of fstat to determine 
--         * if the file is a directory 
-+        /*
-+         * On WIN32 open does not work for directories, so we us stat instead
-+         * of fstat to determine if the file is a directory
-          */
-         if (stat(filename, &buf) == -1) {
-             ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
-@@ -545,7 +545,8 @@
-                 rmdir(newcachedir);
- #endif
-                 --nfiles;
--            } else {
-+            }
-+            else {
-                 /* Directory is not empty. Account for its size: */
-                 add_long61(&curbytes, ROUNDUP2BLOCKS(buf.st_size));
-             }
-@@ -554,7 +555,8 @@
- #endif
- #if defined(WIN32)
--        /* Since we have determined above that the file is not a directory,
-+        /*
-+         * Since we have determined above that the file is not a directory,
-          * it should be safe to open it now 
-          */
-         fd = open(filename, O_RDONLY | O_BINARY);
-@@ -566,7 +568,7 @@
-         }
- #endif
-  
--        i = read(fd, line, 17*(3)-1);
-+        i = read(fd, line, 17 * (3) - 1);
-         close(fd);
-         if (i == -1) {
-             ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
-@@ -574,13 +576,13 @@
-             continue;
-         }
-         line[i] = '\0';
--        garbage_expire = ap_proxy_hex2sec(line + 17*(2));
-+        garbage_expire = ap_proxy_hex2sec(line + 17 * (2));
-         if (!ap_checkmask(line, "&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&") ||
-             garbage_expire == BAD_DATE) {
-             /* bad file */
-             if (garbage_now != -1 && buf.st_atime > garbage_now + SEC_ONE_DAY &&
-                 buf.st_mtime > garbage_now + SEC_ONE_DAY) {
--                ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, r->server,
-+                ap_log_error(APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, r->server,
-                              "proxy: deleting bad cache file with future date: %s", filename);
- #if TESTING
-                 fprintf(stderr, "Would unlink bad file %s\n", filename);
-@@ -632,29 +634,28 @@
-     /* read the data from the cache file */
--    /* Format:
-+    /*
-+     * Format:
-      *
--     * The cache needs to keep track of the following information:
--     * - Date, LastMod, Version, ReqTime, RespTime, ContentLength
--     * - The original request headers (for Vary)
--     * - The original response headers (for returning with a cached response)
--     * - The body of the message
--     *
--     * date SP lastmod SP expire SP count SP request-time SP response-time SP content-lengthCRLF
--     * (dates are stored as hex seconds since 1970)
--     * Original URLCRLF
--     * Original Request Headers
--     * CRLF
--     * Original Response Headers
--     * CRLF
--     * Body
-+     * The cache needs to keep track of the following information: - Date,
-+     * LastMod, Version, ReqTime, RespTime, ContentLength - The original
-+     * request headers (for Vary) - The original response headers (for
-+     * returning with a cached response) - The body of the message
-+     * 
-+     * date SP lastmod SP expire SP count SP request-time SP response-time SP
-+     * content-lengthCRLF (dates are stored as hex seconds since 1970)
-+     * Original URLCRLF Original Request Headers CRLF Original Response
-+     * Headers CRLF Body
-      * 
-      */
-     /* retrieve cachefile information values */
-     len = ap_bgets(urlbuff, sizeof urlbuff, cachefp);
--    if (len == -1)
-+    if (len == -1) {
-+        /* Delete broken cache file */
-+        unlink(c->filename);
-         return -1;
-+    }
-     if (len == 0 || urlbuff[len - 1] != '\n')
-         return 0;
-     urlbuff[len - 1] = '\0';
-@@ -663,18 +664,21 @@
-                    "&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&"))
-         return 0;
--    c->date = ap_proxy_hex2sec(urlbuff + 17*(0));
--    c->lmod = ap_proxy_hex2sec(urlbuff + 17*(1));
--    c->expire = ap_proxy_hex2sec(urlbuff + 17*(2));
--    c->version = ap_proxy_hex2sec(urlbuff + 17*(3));
--    c->req_time = ap_proxy_hex2sec(urlbuff + 17*(4));
--    c->resp_time = ap_proxy_hex2sec(urlbuff + 17*(5));
--    c->len = ap_proxy_hex2sec(urlbuff + 17*(6));
-+    c->date = ap_proxy_hex2sec(urlbuff + 17 * (0));
-+    c->lmod = ap_proxy_hex2sec(urlbuff + 17 * (1));
-+    c->expire = ap_proxy_hex2sec(urlbuff + 17 * (2));
-+    c->version = ap_proxy_hex2sec(urlbuff + 17 * (3));
-+    c->req_time = ap_proxy_hex2sec(urlbuff + 17 * (4));
-+    c->resp_time = ap_proxy_hex2sec(urlbuff + 17 * (5));
-+    c->len = ap_proxy_hex2sec(urlbuff + 17 * (6));
-     /* check that we have the same URL */
-     len = ap_bgets(urlbuff, sizeof urlbuff, cachefp);
--    if (len == -1)
-+    if (len == -1) {
-+        /* Delete broken cache file */
-+        unlink(c->filename);
-         return -1;
-+    }
-     if (len == 0 || strncmp(urlbuff, "X-URL: ", 7) != 0 ||
-         urlbuff[len - 1] != '\n')
-         return 0;
-@@ -684,13 +688,19 @@
-     /* then the original request headers */
-     c->req_hdrs = ap_proxy_read_headers(r, urlbuff, sizeof urlbuff, cachefp);
--    if (c->req_hdrs == NULL)
-+    if (c->req_hdrs == NULL) {
-+        /* Delete broken cache file */
-+        unlink(c->filename);
-         return -1;
-+    }
-     /* then the original response headers */
-     len = ap_bgets(urlbuff, sizeof urlbuff, cachefp);
--    if (len == -1)
-+    if (len == -1) {
-+        /* Delete broken cache file */
-+        unlink(c->filename);
-         return -1;
-+    }
-     if (len == 0 || urlbuff[len - 1] != '\n')
-         return 0;
-     urlbuff[--len] = '\0';
-@@ -702,8 +712,11 @@
-     c->status = atoi(strp);
-     c->hdrs = ap_proxy_read_headers(r, urlbuff, sizeof urlbuff, cachefp);
--    if (c->hdrs == NULL)
-+    if (c->hdrs == NULL) {
-+        /* Delete broken cache file */
-+        unlink(c->filename);
-         return -1;
-+    }
-     if (c->len != -1)    /* add a content-length header */
-         if (ap_table_get(c->hdrs, "Content-Length") == NULL) {
-             ap_table_set(c->hdrs, "Content-Length",
-@@ -735,52 +748,53 @@
-     /* check for If-Match, If-Unmodified-Since */
-     while (1) {
--        /* check If-Match and If-Unmodified-Since exist
-+        /*
-+         * check If-Match and If-Unmodified-Since exist
-          *
--         * If neither of these exist, the request is not conditional, and
--         * we serve it normally
-+         * If neither of these exist, the request is not conditional, and we
-+         * serve it normally
-          */
-         if (!c->im && BAD_DATE == c->ius) {
-             break;
-         }
--        /* check If-Match
-+        /*
-+         * check If-Match
-          *
--         * we check if the Etag on the cached file is in the list of Etags
--         * in the If-Match field. The comparison must be a strong comparison,
--         * so the Etag cannot be marked as weak. If the comparision fails
--         * we return 412 Precondition Failed.
--         *
--         * if If-Match is specified AND
--         * If-Match is not a "*" AND
--         * Etag is missing or weak or not in the list THEN
--         * return 412 Precondition Failed
-+         * we check if the Etag on the cached file is in the list of Etags in
-+         * the If-Match field. The comparison must be a strong comparison, so
-+         * the Etag cannot be marked as weak. If the comparision fails we
-+         * return 412 Precondition Failed.
-+         * 
-+         * if If-Match is specified AND If-Match is not a "*" AND Etag is
-+         * missing or weak or not in the list THEN return 412 Precondition
-+         * Failed
-          */
-         if (c->im) {
-             if (strcmp(c->im, "*") &&
-             (!etag || (strlen(etag) > 1 && 'W' == etag[0] && '/' == etag[1]) || !ap_proxy_liststr(c->im, etag, NULL))) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "If-Match specified, and it didn't - return 412");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "If-Match specified, and it didn't - return 412");
-             }
-             else {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "If-Match specified, and it matched");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "If-Match specified, and it matched");
-                 break;
-             }
-         }
--        /* check If-Unmodified-Since
-+        /*
-+         * check If-Unmodified-Since
-          *
--         * if If-Unmodified-Since is specified AND
--         * Last-Modified is specified somewhere AND
--         * If-Unmodified-Since is in the past compared to Last-Modified THEN
--         * return 412 Precondition Failed
-+         * if If-Unmodified-Since is specified AND Last-Modified is specified
-+         * somewhere AND If-Unmodified-Since is in the past compared to
-+         * Last-Modified THEN return 412 Precondition Failed
-          */
-         if (BAD_DATE != c->ius && BAD_DATE != c->lmod) {
-             if (c->ius < c->lmod) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "If-Unmodified-Since specified, but it wasn't - return 412");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "If-Unmodified-Since specified, but it wasn't - return 412");
-             }
-             else {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "If-Unmodified-Since specified, and it was unmodified");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "If-Unmodified-Since specified, and it was unmodified");
-                 break;
-             }
-         }
-@@ -788,13 +802,13 @@
-         /* if cache file is being updated */
-         if (c->origfp) {
-             ap_proxy_write_headers(c, c->resp_line, c->hdrs);
--            ap_proxy_send_fb(c->origfp, r, c, c->len, 1, IOBUFSIZE);
-+            ap_proxy_send_fb(c->origfp, r, c, c->len, 1, 0, IOBUFSIZE);
-             ap_proxy_cache_tidy(c);
-         }
-         else
-             ap_pclosef(r->pool, ap_bfileno(cachefp, B_WR));
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Use your cached copy, conditional precondition failed.");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Use your cached copy, conditional precondition failed.");
-         return HTTP_PRECONDITION_FAILED;
-     }
-@@ -802,53 +816,54 @@
-     /* check for If-None-Match, If-Modified-Since */
-     while (1) {
--        /* check for existance of If-None-Match and If-Modified-Since
-+        /*
-+         * check for existance of If-None-Match and If-Modified-Since
-          *
--         * if neither of these headers have been set, then the request
--         * is not conditional, and we just send the cached response and
--         * be done with it.
-+         * if neither of these headers have been set, then the request is not
-+         * conditional, and we just send the cached response and be done with
-+         * it.
-          */
-         if (!c->inm && BAD_DATE == c->ims) {
-             break;
-         }
--        /* check If-None-Match
-+        /*
-+         * check If-None-Match
-          *
--         * we check if the Etag on the cached file is in the list of Etags
--         * in the If-None-Match field. The comparison must be a strong comparison,
--         * so the Etag cannot be marked as weak. If the comparision fails
--         * we return 412 Precondition Failed.
--         *
--         * if If-None-Match is specified:
--         * if If-None-Match is a "*" THEN 304
--         * else if Etag is specified AND we get a match THEN 304
--         * else if Weak Etag is specified AND we get a match THEN 304
--         * else sent the original object
-+         * we check if the Etag on the cached file is in the list of Etags in
-+         * the If-None-Match field. The comparison must be a strong
-+         * comparison, so the Etag cannot be marked as weak. If the
-+         * comparision fails we return 412 Precondition Failed.
-+         * 
-+         * if If-None-Match is specified: if If-None-Match is a "*" THEN 304
-+         * else if Etag is specified AND we get a match THEN 304 else if Weak
-+         * Etag is specified AND we get a match THEN 304 else sent the
-+         * original object
-          */
-         if (c->inm) {
-             if (!strcmp(c->inm, "*")) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "If-None-Match: * specified, return 304");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "If-None-Match: * specified, return 304");
-             }
-             else if (etag && ap_proxy_liststr(c->inm, etag, NULL)) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "If-None-Match: specified and we got a strong match - return 304");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "If-None-Match: specified and we got a strong match - return 304");
-             }
-             else if (wetag && ap_proxy_liststr(c->inm, wetag, NULL)) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "If-None-Match specified, and we got a weak match - return 304");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "If-None-Match specified, and we got a weak match - return 304");
-             }
-             else
-                 break;
-         }
--        /* check If-Modified-Since
-+        /*
-+         * check If-Modified-Since
-          *
--         * if If-Modified-Since is specified AND
--         * Last-Modified is specified somewhere:
--         * if last modification date is earlier than If-Modified-Since THEN 304
--         * else send the original object
-+         * if If-Modified-Since is specified AND Last-Modified is specified
-+         * somewhere: if last modification date is earlier than
-+         * If-Modified-Since THEN 304 else send the original object
-          */
-         if (BAD_DATE != c->ims && BAD_DATE != c->lmod) {
-             if (c->ims >= c->lmod) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "If-Modified-Since specified and not modified, try return 304");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "If-Modified-Since specified and not modified, try return 304");
-             }
-             else
-                 break;
-@@ -858,47 +873,43 @@
-         /* are we updating the cache file? */
-         if (c->origfp) {
-             ap_proxy_write_headers(c, c->resp_line, c->hdrs);
--            ap_proxy_send_fb(c->origfp, r, c, c->len, 1, IOBUFSIZE);
-+            ap_proxy_send_fb(c->origfp, r, c, c->len, 1, 0, IOBUFSIZE);
-             ap_proxy_cache_tidy(c);
-         }
-         else
-             ap_pclosef(r->pool, ap_bfileno(cachefp, B_WR));
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Use local copy, cached file hasn't changed");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Use local copy, cached file hasn't changed");
-         return HTTP_NOT_MODIFIED;
-     }
-     /* No conditional - just send it cousin! */
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Local copy modified, send it");
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Local copy modified, send it");
-     r->status_line = strchr(c->resp_line, ' ') + 1;
-     r->status = c->status;
-     /* Prepare and send headers to client */
--    ap_overlap_tables(r->headers_out, c->hdrs, AP_OVERLAP_TABLES_SET);
-+    ap_proxy_table_replace(r->headers_out, c->hdrs);
-     /* make sure our X-Cache header does not stomp on a previous header */
-     ap_table_mergen(r->headers_out, "X-Cache", c->xcache);
-     /* content type is already set in the headers */
-     r->content_type = ap_table_get(r->headers_out, "Content-Type");
--    /* cookies are special: they must not be merged (stupid browsers) */
--    ap_proxy_table_unmerge(r->pool, r->headers_out, "Set-Cookie");
--    ap_proxy_table_unmerge(r->pool, r->headers_out, "Set-Cookie2");
--
-     ap_send_http_header(r);
-     /* are we rewriting the cache file? */
-     if (c->origfp) {
-         ap_proxy_write_headers(c, c->resp_line, c->hdrs);
--        ap_proxy_send_fb(c->origfp, r, c, c->len, r->header_only, IOBUFSIZE);
-+        ap_proxy_send_fb(c->origfp, r, c, c->len, r->header_only, 0, IOBUFSIZE);
-         ap_proxy_cache_tidy(c);
-         return OK;
-     }
-     /* no, we not */
-     if (!r->header_only) {
--        ap_proxy_send_fb(cachefp, r, NULL, c->len, 0, IOBUFSIZE);
-+        ap_proxy_send_fb(cachefp, r, NULL, c->len, 0, 0, IOBUFSIZE);
-     }
-     else {
-         ap_pclosef(r->pool, ap_bfileno(cachefp, B_WR));
-@@ -922,17 +933,17 @@
-  *         if last modified after if-modified-since then add
-  *            last modified date to request
-  */
--int ap_proxy_cache_check(request_rec *r, char *url, struct cache_conf *conf,
-+int ap_proxy_cache_check(request_rec *r, char *url, struct cache_conf * conf,
-                       cache_req **cr)
- {
--    const char *datestr, *pragma_req = NULL, *pragma_cresp = NULL, *cc_req = NULL, *cc_cresp = NULL, *vary = NULL;
-+    const char *datestr, *pragma_req = NULL, *pragma_cresp = NULL, *cc_req = NULL,
-+        *cc_cresp = NULL;
-     cache_req *c;
--    time_t now;
-     BUFF *cachefp;
-     int i;
-     void *sconf = r->server->module_config;
-     proxy_server_conf *pconf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module);
-     const char *agestr = NULL;
-     char *val;
-     time_t age_c = 0;
-@@ -989,7 +1000,7 @@
-     else {
-       c->filename = NULL;
-       c->fp = NULL;
--      ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "No CacheRoot, so no caching. Declining.");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "No CacheRoot, so no caching. Declining.");
-       return DECLINED;
-     }
-@@ -1017,22 +1028,24 @@
-           unlink(c->filename);
-       c->fp = NULL;
-       c->filename = NULL;
--      ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "no-store forbids caching. Declining.");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "no-store forbids caching. Declining.");
-       return DECLINED;
-     }
- /* if the cache file exists, open it */
-     cachefp = NULL;
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Request for %s, pragma_req=%s, ims=%ld", url,
--             pragma_req, c->ims);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Request for %s, pragma_req=%s, ims=%ld", url,
-+                 (pragma_req == NULL) ? "(unset)" : pragma_req, c->ims);
- /* find out about whether the request can access the cache */
-     if (c->filename != NULL && r->method_number == M_GET &&
--        strlen(url) < 1024 ) {
-+        strlen(url) < 1024) {
-       cachefp = ap_proxy_open_cachefile(r, c->filename); 
-     }
--    /* if a cache file exists, try reading body and headers from cache file */
-+    /*
-+     * if a cache file exists, try reading body and headers from cache file
-+     */
-     if (cachefp != NULL) {
-         i = rdcache(r, cachefp, c);
-         if (i == -1)
-@@ -1040,7 +1053,7 @@
-                          "proxy: error reading cache file %s", 
-                          c->filename);
-         else if (i == 0)
--            ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, r,
-+            ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, r,
-                          "proxy: bad (short?) cache file: %s", c->filename);
-         if (i != 1) {
-             ap_pclosef(r->pool, ap_bfileno(cachefp, B_WR));
-@@ -1049,7 +1062,6 @@
-         if (c->hdrs) {
-             cc_cresp = ap_table_get(c->hdrs, "Cache-Control");
-             pragma_cresp = ap_table_get(c->hdrs, "Pragma");
--            vary = ap_table_get(c->hdrs, "Vary");
-             if ((agestr = ap_table_get(c->hdrs, "Age"))) {
-                 age_c = atoi(agestr);
-             }
-@@ -1065,7 +1077,8 @@
- */
-     /* FIXME: Shouldn't we check the URL somewhere? */
--    /* Check Content-Negotiation - Vary
-+    /*
-+     * Check Content-Negotiation - Vary
-      *
-      * At this point we need to make sure that the object we found in the cache
-      * is the same object that would be delivered to the client, when the
-@@ -1092,8 +1105,10 @@
-                 ++vary;
-             }
--            /* is this header in the request and the header in the cached
--             * request identical? If not, we give up and do a straight get */
-+            /*
-+             * is this header in the request and the header in the cached
-+             * request identical? If not, we give up and do a straight get
-+             */
-             h1 = ap_table_get(r->headers_in, name);
-             h2 = ap_table_get(c->req_hdrs, name);
-             if (h1 == h2) {
-@@ -1106,42 +1121,43 @@
-                 /* headers do not match, so Vary failed */
-                 c->fp = cachefp;
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Vary header mismatch - object must be fetched from scratch. Declining.");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Vary header mismatch - object must be fetched from scratch. Declining.");
-                 return DECLINED;
-             }
-         }
-     }
--    /* We now want to check if our cached data is still fresh. This depends
-+    /*
-+     * We now want to check if our cached data is still fresh. This depends
-      * on a few things, in this order:
-      *
--     * - RFC2616 14.9.4 End to end reload, Cache-Control: no-cache
--     * no-cache in either the request or the cached response means that
--     * we must revalidate the request unconditionally, overriding any
--     * expiration mechanism. It's equivalent to max-age=0,must-revalidate.
--     *
--     * - RFC2616 14.32 Pragma: no-cache
--     * This is treated the same as Cache-Control: no-cache.
--     *
--     * - RFC2616 14.9.3 Cache-Control: max-stale, must-revalidate, proxy-revalidate
--     * if the max-stale request header exists, modify the stale calculations
--     * below so that an object can be at most <max-stale> seconds stale before
--     * we request a revalidation, _UNLESS_ a must-revalidate or
--     * proxy-revalidate cached response header exists to stop us doing this.
--     *
--     * - RFC2616 14.9.3 Cache-Control: s-maxage
--     * the origin server specifies the maximum age an object can be before
--     * it is considered stale. This directive has the effect of proxy|must
--     * revalidate, which in turn means simple ignore any max-stale setting.
--     *
--     * - RFC2616 14.9.4 Cache-Control: max-age
--     * this header can appear in both requests and responses. If both are
--     * specified, the smaller of the two takes priority.
--     *
--     * - RFC2616 14.21 Expires:
--     * if this request header exists in the cached entity, and it's value is
--     * in the past, it has expired.
-+     * - RFC2616 14.9.4 End to end reload, Cache-Control: no-cache no-cache in
-+     * either the request or the cached response means that we must
-+     * revalidate the request unconditionally, overriding any expiration
-+     * mechanism. It's equivalent to max-age=0,must-revalidate.
-+     * 
-+     * - RFC2616 14.32 Pragma: no-cache This is treated the same as
-+     * Cache-Control: no-cache.
-+     * 
-+     * - RFC2616 14.9.3 Cache-Control: max-stale, must-revalidate,
-+     * proxy-revalidate if the max-stale request header exists, modify the
-+     * stale calculations below so that an object can be at most <max-stale>
-+     * seconds stale before we request a revalidation, _UNLESS_ a
-+     * must-revalidate or proxy-revalidate cached response header exists to
-+     * stop us doing this.
-+     * 
-+     * - RFC2616 14.9.3 Cache-Control: s-maxage the origin server specifies the
-+     * maximum age an object can be before it is considered stale. This
-+     * directive has the effect of proxy|must revalidate, which in turn means
-+     * simple ignore any max-stale setting.
-+     * 
-+     * - RFC2616 14.9.4 Cache-Control: max-age this header can appear in both
-+     * requests and responses. If both are specified, the smaller of the two
-+     * takes priority.
-+     * 
-+     * - RFC2616 14.21 Expires: if this request header exists in the cached
-+     * entity, and it's value is in the past, it has expired.
-      * 
-      */
-@@ -1166,7 +1182,9 @@
-     else
-         maxage_cresp = -1;
--    /* if both maxage request and response, the smaller one takes priority */
-+    /*
-+     * if both maxage request and response, the smaller one takes priority
-+     */
-     if (-1 == maxage_req)
-         maxage = maxage_cresp;
-     else if (-1 == maxage_cresp)
-@@ -1187,37 +1205,35 @@
-         minfresh = 0;
-     /* override maxstale if must-revalidate or proxy-revalidate */
--    if (maxstale && ( (cc_cresp && ap_proxy_liststr(cc_cresp, "must-revalidate", NULL)) || (cc_cresp && ap_proxy_liststr(cc_cresp, "proxy-revalidate", NULL)) ))
-+    if (maxstale && ((cc_cresp && ap_proxy_liststr(cc_cresp, "must-revalidate", NULL)) || (cc_cresp && ap_proxy_liststr(cc_cresp, "proxy-revalidate", NULL))))
-         maxstale = 0;
--    now = time(NULL);
-     if (cachefp != NULL &&
-         /* handle no-cache */
--        !( (cc_req && ap_proxy_liststr(cc_req, "no-cache", NULL)) ||
-+        !((cc_req && ap_proxy_liststr(cc_req, "no-cache", NULL)) ||
-           (pragma_req && ap_proxy_liststr(pragma_req, "no-cache", NULL)) ||
-           (cc_cresp && ap_proxy_liststr(cc_cresp, "no-cache", NULL)) ||
--          (pragma_cresp && ap_proxy_liststr(pragma_cresp, "no-cache", NULL)) ) &&
-+      (pragma_cresp && ap_proxy_liststr(pragma_cresp, "no-cache", NULL))) &&
-         /* handle expiration */
--        ( (-1 < smaxage && age < (smaxage - minfresh)) ||
-+        ((-1 < smaxage && age < (smaxage - minfresh)) ||
-           (-1 < maxage && age < (maxage + maxstale - minfresh)) ||
--          (c->expire != BAD_DATE && age < (c->expire - c->date + maxstale - minfresh)) )
--
-+         (c->expire != BAD_DATE && age < (c->expire - c->date + maxstale - minfresh)))
-         ) {
-         /* it's fresh darlings... */
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Unexpired data available");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Unexpired data available");
-         /* set age header on response */
-         ap_table_set(c->hdrs, "Age",
-                         ap_psprintf(r->pool, "%lu", (unsigned long)age));
-         /* add warning if maxstale overrode freshness calculation */
--        if (!( (-1 < smaxage && age < smaxage) ||
-+        if (!((-1 < smaxage && age < smaxage) ||
-              (-1 < maxage && age < maxage) ||
--             (c->expire != BAD_DATE && (c->expire - c->date) > age) )) {
-+              (c->expire != BAD_DATE && (c->expire - c->date) > age))) {
-             /* make sure we don't stomp on a previous warning */
-             ap_table_merge(c->hdrs, "Warning", "110 Response is stale");
-         }
-@@ -1229,11 +1245,12 @@
-     }
--    /* at this point we have determined our cached data needs revalidation
-+    /*
-+     * at this point we have determined our cached data needs revalidation
-      * but first - we check 1 thing:
-      *
--     * RFC2616 14.9.4 - if "only-if-cached" specified, send a
--     * 504 Gateway Timeout - we're not allowed to revalidate the object
-+     * RFC2616 14.9.4 - if "only-if-cached" specified, send a 504 Gateway
-+     * Timeout - we're not allowed to revalidate the object
-      */
-     if (ap_proxy_liststr(cc_req, "only-if-cached", NULL)) {
-         if (cachefp)
-@@ -1242,11 +1259,12 @@
-     }
--    /* If we already have cached data and a last-modified date, and it is
--     * not a head request, then add an If-Modified-Since.
-+    /*
-+     * If we already have cached data and a last-modified date, and it is not
-+     * a head request, then add an If-Modified-Since.
-      *
--     * If we also have an Etag, then the object must have come from
--     * an HTTP/1.1 server. Add an If-None-Match as well.
-+     * If we also have an Etag, then the object must have come from an HTTP/1.1
-+     * server. Add an If-None-Match as well.
-      *
-      * See RFC2616 13.3.4
-      */
-@@ -1257,13 +1275,15 @@
-         /* If-Modified-Since */
-         if (c->lmod != BAD_DATE) {
--            /* use the later of the one from the request and the last-modified date
--             * from the cache */
-+            /*
-+             * 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) {
-                 const char *q;
-                 if ((q = ap_table_get(c->hdrs, "Last-Modified")) != NULL)
--                    ap_table_set(r->headers_in, "If-Modified-Since", (char *) q);
-+                    ap_table_set(r->headers_in, "If-Modified-Since", (char *)q);
-             }
-         }
-@@ -1277,7 +1297,7 @@
-     c->fp = cachefp;
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Local copy not present or expired. Declining.");
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Local copy not present or expired. Declining.");
-     return DECLINED;
- }
-@@ -1304,10 +1324,10 @@
-     char *p;
-     const char *expire, *lmods, *dates, *clen;
-     time_t expc, date, lmod, now;
--    char buff[17*7+1];
-+    char buff[17 * 7 + 1];
-     void *sconf = r->server->module_config;
-     proxy_server_conf *conf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module);
-     const char *cc_resp;
-     table *req_hdrs;
-@@ -1317,8 +1337,10 @@
-     /* we've received the response from the origin server */
-     
--    /* read expiry date; if a bad date, then leave it so the client can
--     * read it */
-+    /*
-+     * read expiry date; if a bad date, then leave it so the client can read
-+     * it
-+     */
-     expire = ap_table_get(resp_hdrs, "Expires");
-     if (expire != NULL)
-         expc = ap_parseHTTPdate(expire);
-@@ -1341,44 +1363,55 @@
-     /*
-      * what responses should we not cache?
-      *
--     * At this point we decide based on the response headers whether it
--     * is appropriate _NOT_ to cache the data from the server. There are
--     * a whole lot of conditions that prevent us from caching this data.
--     * They are tested here one by one to be clear and unambiguous. */
--
--    /* RFC2616 13.4 we are allowed to cache 200, 203, 206, 300, 301 or 410
--     * We don't cache 206, because we don't (yet) cache partial responses.
--     * We include 304 Not Modified here too as this is the origin server
--     * telling us to serve the cached copy. */
-+     * At this point we decide based on the response headers whether it is
-+     * appropriate _NOT_ to cache the data from the server. There are a whole
-+     * lot of conditions that prevent us from caching this data. They are
-+     * tested here one by one to be clear and unambiguous.
-+     */
-+
-+    /*
-+     * RFC2616 13.4 we are allowed to cache 200, 203, 206, 300, 301 or 410 We
-+     * don't cache 206, because we don't (yet) cache partial responses. We
-+     * include 304 Not Modified here too as this is the origin server telling
-+     * us to serve the cached copy.
-+     */
-     if ((r->status != HTTP_OK && r->status != HTTP_NON_AUTHORITATIVE && r->status != HTTP_MULTIPLE_CHOICES && r->status != HTTP_MOVED_PERMANENTLY && r->status != HTTP_NOT_MODIFIED) ||
-     /* if a broken Expires header is present, don't cache it */
-         (expire != NULL && expc == BAD_DATE) ||
--    /* if the server said 304 Not Modified but we have no cache file - pass
--     * this untouched to the user agent, it's not for us. */
-+    /*
-+     * if the server said 304 Not Modified but we have no cache file - pass
-+     * this untouched to the user agent, it's not for us.
-+     */
-         (r->status == HTTP_NOT_MODIFIED && (c == NULL || c->fp == NULL)) ||
--    /* 200 OK response from HTTP/1.0 and up without a Last-Modified header */
-+    /*
-+     * 200 OK response from HTTP/1.0 and up without a Last-Modified header
-+     */
-         (r->status == HTTP_OK && lmods == NULL && is_HTTP1) ||
-     /* HEAD requests */
-         r->header_only ||
--    /* RFC2616 14.9.2 Cache-Control: no-store response indicating do not
--     * cache, or stop now if you are trying to cache it */
-+    /*
-+     * RFC2616 14.9.2 Cache-Control: no-store response indicating do not
-+     * cache, or stop now if you are trying to cache it
-+     */
-         ap_proxy_liststr(cc_resp, "no-store", NULL) ||
--    /* RFC2616 14.9.1 Cache-Control: private
--     * this object is marked for this user's eyes only. Behave as a tunnel. */
-+    /*
-+     * RFC2616 14.9.1 Cache-Control: private this object is marked for this
-+     * user's eyes only. Behave as a tunnel.
-+     */
-         ap_proxy_liststr(cc_resp, "private", NULL) ||
--    /* RFC2616 14.8 Authorisation:
--     * if authorisation is included in the request, we don't cache, but we
--     * can cache if the following exceptions are true:
--     * 1) If Cache-Control: s-maxage is included
--     * 2) If Cache-Control: must-revalidate is included
--     * 3) If Cache-Control: public is included
-+    /*
-+     * RFC2616 14.8 Authorisation: if authorisation is included in the
-+     * request, we don't cache, but we can cache if the following exceptions
-+     * are true: 1) If Cache-Control: s-maxage is included 2) If
-+     * Cache-Control: must-revalidate is included 3) If Cache-Control: public
-+     * is included
-      */
-         (ap_table_get(r->headers_in, "Authorization") != NULL
-@@ -1388,7 +1421,7 @@
-     /* or we've been asked not to cache it above */
-         nocache) {
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Response is not cacheable, unlinking %s", c->filename);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Response is not cacheable, unlinking %s", c->filename);
-         /* close the file */
-         if (c->fp != NULL) {
-@@ -1403,15 +1436,15 @@
-     }
--    /* It's safe to cache the response.
-+    /*
-+     * It's safe to cache the response.
-      *
--     * We now want to update the cache file header information with
--     * the new date, last modified, expire and content length and write
--     * it away to our cache file. First, we determine these values from
--     * the response, using heuristics if appropriate.
-+     * We now want to update the cache file header information with the new
-+     * date, last modified, expire and content length and write it away to
-+     * our cache file. First, we determine these values from the response,
-+     * using heuristics if appropriate.
-      *
--     * In addition, we make HTTP/1.1 age calculations and write them away
--     * too.
-+     * In addition, we make HTTP/1.1 age calculations and write them away too.
-      */
-     /* Read the date. Generate one if one is not supplied */
-@@ -1430,7 +1463,7 @@
-         date = now;
-         dates = ap_gm_timestr_822(r->pool, now);
-         ap_table_set(resp_hdrs, "Date", dates);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Added date header");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Added date header");
-     }
- /* set response_time for HTTP/1.1 age calculations */
-@@ -1442,16 +1475,17 @@
-     {
-         lmod = date;
-         lmods = dates;
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Last modified is in the future, replacing with now");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "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) {
-         lmod = c->lmod;
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Reusing cached last modified");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "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 = ap_table_get(c->hdrs, "Expires");
-         if (expire != NULL)
-             expc = ap_parseHTTPdate(expire);
-@@ -1463,18 +1497,18 @@
-  *   else
-  *      expire date = now + defaultexpire
-  */
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Expiry date is %ld", (long)expc);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Expiry date is %ld", (long)expc);
-     if (expc == BAD_DATE) {
-         if (lmod != BAD_DATE) {
--            double x = (double) (date - lmod) * conf->cache.lmfactor;
-+            double x = (double)(date - lmod) * conf->cache.lmfactor;
-             double maxex = conf->cache.maxexpire;
-             if (x > maxex)
-                 x = maxex;
--            expc = now + (int) x;
-+            expc = now + (int)x;
-         }
-         else
-             expc = now + conf->cache.defaultexpire;
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Expiry date calculated %ld", (long)expc);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Expiry date calculated %ld", (long)expc);
-     }
- /* get the content-length header */
-@@ -1486,21 +1520,21 @@
- /* we have all the header information we need - write it to the cache file */
-     c->version++;
--    ap_proxy_sec2hex(date, buff + 17*(0));
--    buff[17*(1)-1] = ' ';
--    ap_proxy_sec2hex(lmod, buff + 17*(1));
--    buff[17*(2)-1] = ' '; 
--    ap_proxy_sec2hex(expc, buff + 17*(2));
--    buff[17*(3)-1] = ' ';
--    ap_proxy_sec2hex(c->version, buff + 17*(3));
--    buff[17*(4)-1] = ' ';
--    ap_proxy_sec2hex(c->req_time, buff + 17*(4));
--    buff[17*(5)-1] = ' ';
--    ap_proxy_sec2hex(c->resp_time, buff + 17*(5));
--    buff[17*(6)-1] = ' '; 
--    ap_proxy_sec2hex(c->len, buff + 17*(6));
--    buff[17*(7)-1] = '\n';
--    buff[17*(7)] = '\0';
-+    ap_proxy_sec2hex(date, buff + 17 * (0));
-+    buff[17 * (1) - 1] = ' ';
-+    ap_proxy_sec2hex(lmod, buff + 17 * (1));
-+    buff[17 * (2) - 1] = ' ';
-+    ap_proxy_sec2hex(expc, buff + 17 * (2));
-+    buff[17 * (3) - 1] = ' ';
-+    ap_proxy_sec2hex(c->version, buff + 17 * (3));
-+    buff[17 * (4) - 1] = ' ';
-+    ap_proxy_sec2hex(c->req_time, buff + 17 * (4));
-+    buff[17 * (5) - 1] = ' ';
-+    ap_proxy_sec2hex(c->resp_time, buff + 17 * (5));
-+    buff[17 * (6) - 1] = ' ';
-+    ap_proxy_sec2hex(c->len, buff + 17 * (6));
-+    buff[17 * (7) - 1] = '\n';
-+    buff[17 * (7)] = '\0';
- /* Was the server response a 304 Not Modified?
-  *
-@@ -1570,7 +1604,7 @@
-           c = ap_proxy_cache_error(c);
-           break;
-       }
--      c->tempfile = ap_palloc(r->pool, strlen(conf->cache.root) +1+ L_tmpnam);
-+        c->tempfile = ap_palloc(r->pool, strlen(conf->cache.root) + 1 + L_tmpnam);
-       strcpy(c->tempfile, conf->cache.root);
-       strcat(c->tempfile, "/");
-       p = tmpnam(NULL);
-@@ -1581,7 +1615,7 @@
-           break;
-       }
--      ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Create temporary file %s", c->tempfile);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Create temporary file %s", c->tempfile);
- /* create the new file */
-       c->fp = ap_proxy_create_cachefile(r, c->tempfile);
-@@ -1677,7 +1711,7 @@
-         c->len = bc;
-         ap_bflush(c->fp);
-         ap_proxy_sec2hex(c->len, buff);
--        curpos = lseek(ap_bfileno(c->fp, B_WR), 17*6, SEEK_SET);
-+        curpos = lseek(ap_bfileno(c->fp, B_WR), 17 * 6, SEEK_SET);
-         if (curpos == -1)
-             ap_log_error(APLOG_MARK, APLOG_ERR, s,
-                          "proxy: error seeking on cache file %s", c->tempfile);
-@@ -1695,7 +1729,7 @@
-         return;
-     }
--    if (ap_pclosef(c->req->pool, ap_bfileno(c->fp, B_WR)) == -1) {
-+    if (ap_pclosef(c->req->pool, ap_bfileno(c->fp, B_WR))== -1) {
-         ap_log_error(APLOG_MARK, APLOG_ERR, s,
-                      "proxy: error closing cache file %s", c->tempfile);
-         unlink(c->tempfile);
-@@ -1705,12 +1739,13 @@
-     if (unlink(c->filename) == -1 && errno != ENOENT) {
-         ap_log_error(APLOG_MARK, APLOG_ERR, s,
-                      "proxy: error deleting old cache file %s",
--                     c->tempfile);
-+                     c->filename);
-+        (void)unlink(c->tempfile);
-     }
-     else {
-         char *p;
-         proxy_server_conf *conf =
--        (proxy_server_conf *) ap_get_module_config(s->module_config, &proxy_module);
-+        (proxy_server_conf *)ap_get_module_config(s->module_config, &proxy_module);
-         for (p = c->filename + strlen(conf->cache.root) + 1;;) {
-             p = strchr(p, '/');
-@@ -1732,10 +1767,11 @@
-         }
- #if defined(OS2) || defined(WIN32) || defined(NETWARE) || defined(MPE)
-         /* Under OS/2 use rename. */
--        if (rename(c->tempfile, c->filename) == -1)
-+        if (rename(c->tempfile, c->filename) == -1) {
-             ap_log_error(APLOG_MARK, APLOG_ERR, s,
-                          "proxy: error renaming cache file %s to %s",
-                          c->tempfile, c->filename);
-+            (void)unlink(c->tempfile);
-     }
- #else
-@@ -1743,11 +1779,9 @@
-             ap_log_error(APLOG_MARK, APLOG_ERR, s,
-                          "proxy: error linking cache file %s to %s",
-                          c->tempfile, c->filename);
--    }
--
-     if (unlink(c->tempfile) == -1)
-         ap_log_error(APLOG_MARK, APLOG_ERR, s,
-                      "proxy: error deleting temp file %s", c->tempfile);
- #endif
--
-+    }
- }
-Index: modules/proxy/proxy_connect.c
-===================================================================
-RCS file: /home/cvs/apache-1.3/src/modules/proxy/proxy_connect.c,v
-retrieving revision 1.48
-retrieving revision 1.49
-diff -u -b -u -r1.48 -r1.49
---- modules/proxy/proxy_connect.c      13 Mar 2002 21:05:32 -0000      1.48
-+++ modules/proxy/proxy_connect.c      25 Mar 2002 09:21:58 -0000      1.49
-@@ -96,14 +96,13 @@
-  * FIXME: no check for r->assbackwards, whatever that is.
-  */
--static int
--allowed_port(proxy_server_conf *conf, int port)
-+static int allowed_port(proxy_server_conf *conf, int port)
- {
-     int i;
--    int *list = (int *) conf->allowed_connect_ports->elts;
-+    int *list = (int *)conf->allowed_connect_ports->elts;
--    for(i = 0; i < conf->allowed_connect_ports->nelts; i++) {
--        if(port == list[i])
-+    for (i = 0; i < conf->allowed_connect_ports->nelts; i++) {
-+        if (port == list[i])
-             return 1;
-     }
-     return 0;
-@@ -125,8 +124,8 @@
-     void *sconf = r->server->module_config;
-     proxy_server_conf *conf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
--    struct noproxy_entry *npent = (struct noproxy_entry *)conf->noproxies->elts;
-+    (proxy_server_conf *)ap_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;
-@@ -162,15 +161,16 @@
-             default:
-                 return HTTP_FORBIDDEN;
-         }
--    } else if(!allowed_port(conf, port))
-+    }
-+    else if (!allowed_port(conf, port))
-         return HTTP_FORBIDDEN;
-     if (proxyhost) {
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-             "CONNECT to remote proxy %s on port %d", proxyhost, proxyport);
-     }
-     else {
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-             "CONNECT to %s on port %d", host, port);
-     }
-@@ -190,7 +190,7 @@
- #ifdef CHECK_FD_SETSIZE
-     if (sock >= FD_SETSIZE) {
--        ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, NULL,
-+        ap_log_error(APLOG_MARK, APLOG_NOERRNO | APLOG_WARNING, NULL,
-             "proxy_connect_handler: filedescriptor (%u) "
-             "larger than FD_SETSIZE (%u) "
-             "found, you probably need to rebuild Apache with a "
-@@ -215,61 +215,64 @@
-             "Could not connect to remote machine:<br>", strerror(errno), NULL));
-     }
--    /* If we are connecting through a remote proxy, we need to pass
--     * the CONNECT request on to it.
-+    /*
-+     * If we are connecting through a remote proxy, we need to pass the
-+     * CONNECT request on to it.
-      */
-     if (proxyport) {
--        /* FIXME: We should not be calling write() directly, but we currently
--         * have no alternative.  Error checking ignored.  Also, we force
--         * a HTTP/1.0 request to keep things simple.
-+        /*
-+         * FIXME: We should not be calling write() directly, but we currently
-+         * have no alternative.  Error checking ignored.  Also, we force a
-+         * HTTP/1.0 request to keep things simple.
-          */
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-             "Sending the CONNECT request to the remote proxy");
-         ap_snprintf(buffer, sizeof(buffer), "CONNECT %s HTTP/1.0" CRLF, r->uri);
--        send(sock, buffer, strlen(buffer),0);
-+        send(sock, buffer, strlen(buffer), 0);
-         ap_snprintf(buffer, sizeof(buffer),
-             "Proxy-agent: %s" CRLF CRLF, ap_get_server_version());
--        send(sock, buffer, strlen(buffer),0);
-+        send(sock, buffer, strlen(buffer), 0);
-     }
-     else {
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-             "Returning 200 OK Status");
-         ap_rvputs(r, "HTTP/1.0 200 Connection established" CRLF, NULL);
-         ap_rvputs(r, "Proxy-agent: ", ap_get_server_version(), CRLF CRLF, NULL);
-         ap_bflush(r->connection->client);
-     }
--    while (1) { /* Infinite loop until error (one side closes the connection) */
-+    while (1) {                 /* Infinite loop until error (one side closes
-+                                 * the connection) */
-         FD_ZERO(&fds);
-         FD_SET(sock, &fds);
-         FD_SET(ap_bfileno(r->connection->client, B_WR), &fds);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-             "Going to sleep (select)");
-         i = ap_select((ap_bfileno(r->connection->client, B_WR) > sock ?
-             ap_bfileno(r->connection->client, B_WR) + 1 :
-             sock + 1), &fds, NULL, NULL, NULL);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-             "Woke from select(), i=%d", i);
-         if (i) {
-             if (FD_ISSET(sock, &fds)) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-                     "sock was set");
--                if ((nbytes = recv(sock, buffer, HUGE_STRING_LEN,0)) != 0) {
-+                if ((nbytes = recv(sock, buffer, HUGE_STRING_LEN, 0)) != 0) {
-                     if (nbytes == -1)
-                         break;
-                     if (send(ap_bfileno(r->connection->client, B_WR), buffer,
--                        nbytes,0) == EOF)
-+                             nbytes, 0) == EOF)
-                         break;
--                    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO,
-+                    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO,
-                         r->server, "Wrote %d bytes to client", nbytes);
-                 }
-                 else
-                     break;
-             }
-             else if (FD_ISSET(ap_bfileno(r->connection->client, B_WR), &fds)) {
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server,
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server,
-                     "client->fd was set");
-                 if ((nbytes = recv(ap_bfileno(r->connection->client, B_WR),
-                     buffer, HUGE_STRING_LEN, 0)) != 0) {
-@@ -277,7 +280,7 @@
-                         break;
-                     if (send(sock, buffer, nbytes, 0) == EOF)
-                         break;
--                    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO,
-+                    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO,
-                         r->server, "Wrote %d bytes to server", nbytes);
-                 }
-                 else
-Index: modules/proxy/proxy_ftp.c
-===================================================================
-RCS file: /home/cvs/apache-1.3/src/modules/proxy/proxy_ftp.c,v
-retrieving revision 1.96
-retrieving revision 1.98
-diff -u -b -u -r1.96 -r1.98
---- modules/proxy/proxy_ftp.c  13 Mar 2002 21:05:32 -0000      1.96
-+++ modules/proxy/proxy_ftp.c  7 Apr 2002 18:57:36 -0000       1.98
-@@ -229,8 +229,7 @@
- {
-     int len, status;
-     char linebuff[100], buff[5];
--    char *mb = msgbuf,
--         *me = &msgbuf[msglen];
-+    char *mb = msgbuf, *me = &msgbuf[msglen];
-     len = ap_bgets(linebuff, sizeof linebuff, ctrl);
-     if (len == -1)
-@@ -241,7 +240,7 @@
-     else
-         status = 100 * linebuff[0] + 10 * linebuff[1] + linebuff[2] - 111 * '0';
--    mb = ap_cpystrn(mb, linebuff+4, me - mb);
-+    mb = ap_cpystrn(mb, linebuff + 4, me - mb);
-     if (linebuff[len - 1] != '\n')
-         (void)ap_bskiplf(ctrl);
-@@ -256,7 +255,7 @@
-             if (linebuff[len - 1] != '\n') {
-                 (void)ap_bskiplf(ctrl);
-             }
--            mb = ap_cpystrn(mb, linebuff+4, me - mb);
-+            mb = ap_cpystrn(mb, linebuff + 4, me - mb);
-         } while (memcmp(linebuff, buff, 4) != 0);
-     }
-     return status;
-@@ -275,7 +274,8 @@
-     conn_rec *con = r->connection;
-     pool *p = r->pool;
-     char *dir, *path, *reldir, *site, *type = NULL;
--    char *basedir = ""; /* By default, path is relative to the $HOME dir */
-+    char *basedir = "";         /* By default, path is relative to the $HOME
-+                                 * dir */
-     /* create default sized buffers for the stuff below */
-     buf_size = IOBUFSIZE;
-@@ -283,9 +283,9 @@
-     buf2 = ap_palloc(r->pool, buf_size);
-     /* Save "scheme://site" prefix without password */
--    site = ap_unparse_uri_components(p, &r->parsed_uri, UNP_OMITPASSWORD|UNP_OMITPATHINFO);
-+    site = ap_unparse_uri_components(p, &r->parsed_uri, UNP_OMITPASSWORD | UNP_OMITPATHINFO);
-     /* ... and path without query args */
--    path = ap_unparse_uri_components(p, &r->parsed_uri, UNP_OMITSITEPART|UNP_OMITQUERY);
-+    path = ap_unparse_uri_components(p, &r->parsed_uri, UNP_OMITSITEPART | UNP_OMITQUERY);
-     /* If path began with /%2f, change the basedir */
-     if (strncasecmp(path, "/%2f", 4) == 0) {
-@@ -304,8 +304,8 @@
-     /* Copy path, strip (all except the last) trailing slashes */
-     /* (the trailing slash is needed for the dir component loop below) */
-     path = dir = ap_pstrcat(r->pool, path, "/", NULL);
--    for (n = strlen(path); n > 1 && path[n-1] == '/' && path[n-2] == '/'; --n)
--        path[n-1] = '\0';
-+    for (n = strlen(path); n > 1 && path[n - 1] == '/' && path[n - 2] == '/'; --n)
-+        path[n - 1] = '\0';
-     /* print "ftp://host/" */
-     n = ap_snprintf(buf, buf_size, DOCTYPE_HTML_3_2
-@@ -313,8 +313,8 @@
-                 "<base href=\"%s%s%s\"></head>\n"
-                 "<body><h2>Directory of "
-                 "<a href=\"/\">%s</a>/",
--                site, basedir, ap_escape_html(p,path),
--                site, basedir, ap_escape_uri(p,path),
-+                    site, basedir, ap_escape_html(p, path),
-+                    site, basedir, ap_escape_uri(p, path),
-                 site);
-     total_bytes_sent += ap_proxy_bputs2(buf, con->client, c);
-@@ -323,11 +323,10 @@
-         total_bytes_sent += ap_proxy_bputs2("<a href=\"/%2f/\">%2f</a>/", con->client, c);
-     }
--    for (dir = path+1; (dir = strchr(dir, '/')) != NULL; )
--    {
-+    for (dir = path + 1; (dir = strchr(dir, '/')) != NULL;) {
-         *dir = '\0';
--        if ((reldir = strrchr(path+1, '/'))==NULL) {
--            reldir = path+1;
-+        if ((reldir = strrchr(path + 1, '/')) == NULL) {
-+            reldir = path + 1;
-         }
-         else
-             ++reldir;
-@@ -344,9 +343,10 @@
-     /* If the caller has determined the current directory, and it differs */
-     /* from what the client requested, then show the real name */
--    if (cwd == NULL || strncmp (cwd, path, strlen(cwd)) == 0) {
-+    if (cwd == NULL || strncmp(cwd, path, strlen(cwd)) == 0) {
-         ap_snprintf(buf, buf_size, "</h2>\n<hr /><pre>");
--    } else {
-+    }
-+    else {
-         ap_snprintf(buf, buf_size, "</h2>\n(%s)\n<hr /><pre>",
-                     ap_escape_html(p, cwd));
-     }
-@@ -365,13 +365,13 @@
-         if (n == 0)
-             break;                /* EOF */
--        if (buf[n-1] == '\n')  /* strip trailing '\n' */
-+        if (buf[n - 1] == '\n') /* strip trailing '\n' */
-             buf[--n] = '\0';
--        if (buf[n-1] == '\r')  /* strip trailing '\r' if present */
-+        if (buf[n - 1] == '\r') /* strip trailing '\r' if present */
-             buf[--n] = '\0';
-         /* Handle unix-style symbolic link */
--        if (buf[0] == 'l' && (filename=strstr(buf, " -> ")) != NULL) {
-+        if (buf[0] == 'l' && (filename = strstr(buf, " -> ")) != NULL) {
-             char *link_ptr = filename;
-             do {
-@@ -382,7 +382,7 @@
-             *(link_ptr++) = '\0';
-             ap_snprintf(buf2, buf_size, "%s <a href=\"%s\">%s %s</a>\n",
-                         ap_escape_html(p, buf),
--                        ap_escape_uri(p,filename),
-+                        ap_escape_uri(p, filename),
-                         ap_escape_html(p, filename),
-                         ap_escape_html(p, link_ptr));
-             ap_cpystrn(buf, buf2, buf_size);
-@@ -416,13 +416,13 @@
-             /* Special handling for '.' and '..': append slash to link */
-             if (!strcmp(filename, ".") || !strcmp(filename, "..") || buf[0] == 'd') {
-                 ap_snprintf(buf2, buf_size, "%s <a href=\"%s/\">%s</a>\n",
--                            ap_escape_html(p, buf), ap_escape_uri(p,filename),
-+                         ap_escape_html(p, buf), ap_escape_uri(p, filename),
-                             ap_escape_html(p, filename));
-             }
-             else {
-                 ap_snprintf(buf2, buf_size, "%s <a href=\"%s\">%s</a>\n",
-                             ap_escape_html(p, buf),
--                            ap_escape_uri(p,filename),
-+                            ap_escape_uri(p, filename),
-                             ap_escape_html(p, filename));
-             }
-             ap_cpystrn(buf, buf2, buf_size);
-@@ -457,14 +457,15 @@
-  * Note that we "invent" a realm name which consists of the
-  * ftp://user@host part of the reqest (sans password -if supplied but invalid-)
-  */
--static int ftp_unauthorized (request_rec *r, int log_it)
-+static int ftp_unauthorized(request_rec *r, int log_it)
- {
-     r->proxyreq = NOT_PROXY;
--    /* Log failed requests if they supplied a password
--     * (log username/password guessing attempts)
-+    /*
-+     * Log failed requests if they supplied a password (log username/password
-+     * guessing attempts)
-      */
-     if (log_it)
--        ap_log_rerror(APLOG_MARK, APLOG_INFO|APLOG_NOERRNO, r,
-+        ap_log_rerror(APLOG_MARK, APLOG_INFO | APLOG_NOERRNO, r,
-                       "proxy: missing or failed auth to %s",
-                       ap_unparse_uri_components(r->pool,
-                       &r->parsed_uri, UNP_OMITPATHINFO));
-@@ -472,7 +473,7 @@
-     ap_table_setn(r->err_headers_out, "WWW-Authenticate",
-                   ap_pstrcat(r->pool, "Basic realm=\"",
-                   ap_unparse_uri_components(r->pool, &r->parsed_uri,
--                                            UNP_OMITPASSWORD|UNP_OMITPATHINFO),
-+                                       UNP_OMITPASSWORD | UNP_OMITPATHINFO),
-                   "\"", NULL));
-     return HTTP_UNAUTHORIZED;
-@@ -481,7 +482,7 @@
- /* Set ftp server to TYPE {A,I,E} before transfer of a directory or file */
- static int ftp_set_TYPE(request_rec *r, BUFF *ctrl, char xfer_type)
- {
--    static char old_type[2] = { 'A', '\0' }; /* After logon, mode is ASCII */
-+    static char old_type[2] = {'A', '\0'};      /* After logon, mode is ASCII */
-     int ret = HTTP_OK;
-     int rc;
-@@ -492,7 +493,7 @@
-     old_type[0] = xfer_type;
-     ap_bvputs(ctrl, "TYPE ", old_type, CRLF, NULL);
-     ap_bflush(ctrl);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: TYPE %s", old_type);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: TYPE %s", old_type);
- /* responses: 200, 421, 500, 501, 504, 530 */
-     /* 200 Command okay. */
-@@ -502,7 +503,7 @@
-     /* 504 Command not implemented for that parameter. */
-     /* 530 Not logged in. */
-     rc = ftp_getrc(ctrl);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", rc);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", rc);
-     if (rc == -1 || rc == 421) {
-         ap_kill_timeout(r);
-         ret = ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -515,14 +516,13 @@
-     }
- /* Allow not implemented */
-     else if (rc == 504)
--        /* ignore it silently */;
-+         /* ignore it silently */ ;
-     return ret;
- }
- /* Common cleanup routine: close open BUFFers or sockets, and return an error */
--static int
--ftp_cleanup_and_return(request_rec *r, BUFF *ctrl, BUFF *data, int csock, int dsock, int rc)
-+static int ftp_cleanup_and_return(request_rec *r, BUFF *ctrl, BUFF *data, int csock, int dsock, int rc)
- {
-     if (ctrl != NULL)
-       ap_bclose(ctrl);
-@@ -569,7 +569,7 @@
-     void *sconf = r->server->module_config;
-     proxy_server_conf *conf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    (proxy_server_conf *)ap_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;
-@@ -604,25 +604,27 @@
-         while (*path == '/')
-             ++path;
--    /* The "Authorization:" header must be checked first.
--     * We allow the user to "override" the URL-coded user [ & password ]
--     * in the Browsers' User&Password Dialog.
--     * NOTE that this is only marginally more secure than having the
--     * password travel in plain as part of the URL, because Basic Auth
--     * simply uuencodes the plain text password. 
--     * But chances are still smaller that the URL is logged regularly.
-+    /*
-+     * The "Authorization:" header must be checked first. We allow the user
-+     * to "override" the URL-coded user [ & password ] in the Browsers'
-+     * User&Password Dialog. NOTE that this is only marginally more secure
-+     * than having the password travel in plain as part of the URL, because
-+     * Basic Auth simply uuencodes the plain text password. But chances are
-+     * still smaller that the URL is logged regularly.
-      */
-     if ((password = ap_table_get(r->headers_in, "Authorization")) != NULL
-         && strcasecmp(ap_getword(r->pool, &password, ' '), "Basic") == 0
-         && (password = ap_pbase64decode(r->pool, password))[0] != ':') {
--        /* Note that this allocation has to be made from r->connection->pool
--         * because it has the lifetime of the connection.  The other allocations
--         * are temporary and can be tossed away any time.
-+        /*
-+         * Note that this allocation has to be made from r->connection->pool
-+         * because it has the lifetime of the connection.  The other
-+         * allocations are temporary and can be tossed away any time.
-          */
--        user = ap_getword_nulls (r->connection->pool, &password, ':');
-+        user = ap_getword_nulls(r->connection->pool, &password, ':');
-         r->connection->ap_auth_type = "Basic";
-         r->connection->user = r->parsed_uri.user = user;
--        nocache = 1;    /* This resource only accessible with username/password */
-+        nocache = 1;            /* This resource only accessible with
-+                                 * username/password */
-     }
-     else if ((user = r->parsed_uri.user) != NULL) {
-         user = ap_pstrdup(p, user);
-@@ -632,7 +634,8 @@
-             decodeenc(tmp);
-             password = tmp;
-         }
--        nocache = 1;    /* This resource only accessible with username/password */
-+        nocache = 1;            /* This resource only accessible with
-+                                 * username/password */
-     }
-     else {
-         user = "anonymous";
-@@ -649,7 +652,7 @@
-                                  "Connect to remote machine blocked");
-     }
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: connect to %s:%d", host, port);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: connect to %s:%d", host, port);
-     parms = strchr(path, ';');
-     if (parms != NULL)
-@@ -672,26 +675,26 @@
- #if !defined(TPF) && !defined(BEOS)
-     if (conf->recv_buffer_size > 0
-         && setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
--                       (const char *) &conf->recv_buffer_size, sizeof(int))
-+                      (const char *)&conf->recv_buffer_size, sizeof(int))
-             == -1) {
-             ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
-                          "setsockopt(SO_RCVBUF): Failed to set ProxyReceiveBufferSize, using default");
-     }
- #endif
--    if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &one,
-+    if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *)&one,
-                    sizeof(one)) == -1) {
- #ifndef _OSD_POSIX /* BS2000 has this option "always on" */
-         ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
-                      "proxy: error setting reuseaddr option: setsockopt(SO_REUSEADDR)");
-         ap_pclosesocket(p, sock);
-         return HTTP_INTERNAL_SERVER_ERROR;
--#endif /*_OSD_POSIX*/
-+#endif                          /* _OSD_POSIX */
-     }
- #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) {
-             memcpy(&server.sin_addr, ip_addr, sizeof(struct in_addr));
-@@ -726,8 +729,8 @@
- /* shouldn't we implement telnet control options here? */
- #ifdef CHARSET_EBCDIC
--    ap_bsetflag(ctrl, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 1);
--#endif /*CHARSET_EBCDIC*/
-+    ap_bsetflag(ctrl, B_ASCII2EBCDIC | B_EBCDIC2ASCII, 1);
-+#endif                          /* CHARSET_EBCDIC */
-     /* possible results: */
-     /* 120 Service ready in nnn minutes. */
-@@ -735,7 +738,7 @@
-     /* 421 Service not available, closing control connection. */
-     ap_hard_timeout("proxy ftp", r);
-     i = ftp_getrc_msg(ctrl, resp, sizeof resp);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-     if (i == -1 || i == 421) {
-         return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                       ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -743,17 +746,18 @@
-     }
- #if 0
-     if (i == 120) {
--        /* RFC2068 states:
--         * 14.38 Retry-After
-+        /*
-+         * RFC2068 states: 14.38 Retry-After
-          * 
-          *  The Retry-After response-header field can be used with a 503 (Service
--         *  Unavailable) response to indicate how long the service is expected to
--         *  be unavailable to the requesting client. The value of this field can
--         *  be either an HTTP-date or an integer number of seconds (in decimal)
--         *  after the time of the response.
--         *     Retry-After  = "Retry-After" ":" ( HTTP-date | delta-seconds )
-+         * Unavailable) response to indicate how long the service is expected
-+         * to be unavailable to the requesting client. The value of this
-+         * field can be either an HTTP-date or an integer number of seconds
-+         * (in decimal) after the time of the response. Retry-After  =
-+         * "Retry-After" ":" ( HTTP-date | delta-seconds )
-          */
--        ap_set_header("Retry-After", ap_psprintf(p, "%u", 60*wait_mins);
-+/**INDENT** Error@756: Unbalanced parens */
-+        ap_set_header("Retry-After", ap_psprintf(p, "%u", 60 * wait_mins);
-         return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                       ap_proxyerror(r, HTTP_SERVICE_UNAVAILABLE, resp));
-     }
-@@ -763,11 +767,11 @@
-                       ap_proxyerror(r, HTTP_BAD_GATEWAY, resp));
-     }
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: connected.");
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: connected.");
-     ap_bvputs(ctrl, "USER ", user, CRLF, NULL);
-     ap_bflush(ctrl);                        /* capture any errors */
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: USER %s", user);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: USER %s", user);
-     /* possible results; 230, 331, 332, 421, 500, 501, 530 */
-     /* states: 1 - error, 2 - success; 3 - send password, 4,5 fail */
-@@ -780,7 +784,7 @@
-     /* 501 Syntax error in parameters or arguments. */
-     /* 530 Not logged in. */
-     i = ftp_getrc(ctrl);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-     if (i == -1 || i == 421) {
-         return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                       ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -788,7 +792,7 @@
-     }
-     if (i == 530) {
-         return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
--                                      ftp_unauthorized (r, 1));
-+                                      ftp_unauthorized(r, 1));
-     }
-     if (i != 230 && i != 331) {
-         return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-@@ -798,11 +802,11 @@
-     if (i == 331) {             /* send password */
-         if (password == NULL) {
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
--                                          ftp_unauthorized (r, 0));
-+                                          ftp_unauthorized(r, 0));
-         }
-         ap_bvputs(ctrl, "PASS ", password, CRLF, NULL);
-         ap_bflush(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: PASS %s", password);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: PASS %s", password);
-     /* possible results 202, 230, 332, 421, 500, 501, 503, 530 */
-     /* 230 User logged in, proceed. */
-     /* 332 Need account for login. */
-@@ -812,7 +816,7 @@
-     /* 503 Bad sequence of commands. */
-     /* 530 Not logged in. */
-         i = ftp_getrc(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-         if (i == -1 || i == 421) {
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                       ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -826,14 +830,15 @@
-         /* @@@ questionable -- we might as well return a 403 Forbidden here */
-         if (i == 530) /* log it: passwd guessing attempt? */
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
--                                          ftp_unauthorized (r, 1));
-+                                          ftp_unauthorized(r, 1));
-         if (i != 230 && i != 202)
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                                           HTTP_BAD_GATEWAY);
-     }
--    /* Special handling for leading "%2f": this enforces a "cwd /"
--     * out of the $HOME directory which was the starting point after login
-+    /*
-+     * Special handling for leading "%2f": this enforces a "cwd /" out of the
-+     * $HOME directory which was the starting point after login
-      */
-     if (strncasecmp(path, "%2f", 3) == 0) {
-         path += 3;
-@@ -841,7 +846,7 @@
-             ++path;
-         ap_bputs("CWD /" CRLF, ctrl);
-         ap_bflush(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: CWD /");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: CWD /");
-         /* possible results: 250, 421, 500, 501, 502, 530, 550 */
-         /* 250 Requested file action okay, completed. */
-@@ -852,7 +857,7 @@
-         /* 530 Not logged in. */
-         /* 550 Requested action not taken. */
-         i = ftp_getrc(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-         if (i == -1 || i == 421)
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                         ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -869,7 +874,7 @@
-  * this is what we must do if we don't know the OS type of the remote
-  * machine
-  */
--    for ( ; (strp = strchr(path, '/')) != NULL ; path = strp + 1) {
-+    for (; (strp = strchr(path, '/')) != NULL; path = strp + 1) {
-         char *slash = strp;
-         *slash = '\0';
-@@ -888,7 +893,7 @@
-         ap_bvputs(ctrl, "CWD ", path, CRLF, NULL);
-         ap_bflush(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: CWD %s", path);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: CWD %s", path);
-         *slash = '/';
- /* responses: 250, 421, 500, 501, 502, 530, 550 */
-@@ -900,7 +905,7 @@
-     /* 530 Not logged in. */
-     /* 550 Requested action not taken. */
-         i = ftp_getrc(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-         if (i == -1 || i == 421)
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                       ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -919,10 +924,11 @@
-     if (parms != NULL && strncmp(parms, "type=", 5) == 0
-         && ap_isalpha(parms[5])) {
--        /* "type=d" forces a dir listing.
--         * The other types (i|a|e) are directly used for the ftp TYPE command
-+        /*
-+         * "type=d" forces a dir listing. The other types (i|a|e) are
-+         * directly used for the ftp TYPE command
-          */
--        if ( ! (get_dirlisting = (parms[5] == 'd')))
-+        if (!(get_dirlisting = (parms[5] == 'd')))
-             xfer_type = ap_toupper(parms[5]);
-         /* Check valid types, rather than ignoring invalid types silently: */
-@@ -948,7 +954,7 @@
- #if !defined (TPF) && !defined(BEOS)
-     if (conf->recv_buffer_size) {
-         if (setsockopt(dsock, SOL_SOCKET, SO_RCVBUF,
--               (const char *) &conf->recv_buffer_size, sizeof(int)) == -1) {
-+                (const char *)&conf->recv_buffer_size, sizeof(int)) == -1) {
-             ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
-                          "setsockopt(SO_RCVBUF): Failed to set ProxyReceiveBufferSize, using default");
-         }
-@@ -957,7 +963,7 @@
-     ap_bputs("PASV" CRLF, ctrl);
-     ap_bflush(ctrl);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: PASV command issued");
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: PASV command issued");
- /* possible results: 227, 421, 500, 501, 502, 530 */
-     /* 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2). */
-     /* 421 Service not available, closing control connection. */
-@@ -979,9 +985,9 @@
-             presult = atoi(pstr);
-             if (*(pstr + strlen(pstr) + 1) == '=')
-                 pstr += strlen(pstr) + 2;
--            else
--            {
--                pstr = strtok(NULL, "(");  /* separate address & port params */
-+            else {
-+                pstr = strtok(NULL, "(");       /* separate address & port
-+                                                 * params */
-                 if (pstr != NULL)
-                     pstr = strtok(NULL, ")");
-             }
-@@ -989,14 +995,14 @@
-         else
-             presult = atoi(pasv);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", presult);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "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)) {
-             /* pardon the parens, but it makes gcc happy */
-             paddr = (((((h3 << 8) + h2) << 8) + h1) << 8) + h0;
-             pport = (p1 << 8) + p0;
--            ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: contacting host %d.%d.%d.%d:%d",
-+            ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "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);
-@@ -1020,7 +1026,7 @@
-     if (!pasvmode) {            /* set up data connection */
-         clen = sizeof(struct sockaddr_in);
--        if (getsockname(sock, (struct sockaddr *) &server, &clen) < 0) {
-+        if (getsockname(sock, (struct sockaddr *)&server, &clen) < 0) {
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                       ap_proxyerror(r, HTTP_INTERNAL_SERVER_ERROR, 
-                                     "proxy: error getting socket address"));
-@@ -1033,16 +1039,16 @@
-                                     "proxy: error creating socket"));
-         }
--        if (setsockopt(dsock, SOL_SOCKET, SO_REUSEADDR, (void *) &one,
-+        if (setsockopt(dsock, SOL_SOCKET, SO_REUSEADDR, (void *)&one,
-                        sizeof(one)) == -1) {
- #ifndef _OSD_POSIX /* BS2000 has this option "always on" */
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                       ap_proxyerror(r, HTTP_INTERNAL_SERVER_ERROR, 
-                                     "proxy: error setting reuseaddr option"));
--#endif /*_OSD_POSIX*/
-+#endif                          /* _OSD_POSIX */
-         }
--        if (bind(dsock, (struct sockaddr *) &server,
-+        if (bind(dsock, (struct sockaddr *)&server,
-                  sizeof(struct sockaddr_in)) == -1) {
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-@@ -1068,16 +1074,16 @@
-     else {
-         ap_bvputs(ctrl, "SIZE ", path, CRLF, NULL);
-         ap_bflush(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: SIZE %s", path);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: SIZE %s", path);
-         i = ftp_getrc_msg(ctrl, resp, sizeof resp);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d with response %s", i, resp);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d with response %s", i, resp);
-         if (i != 500) {         /* Size command not recognized */
-             if (i == 550) {     /* Not a regular file */
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: SIZE shows this is a directory");
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: SIZE shows this is a directory");
-                 get_dirlisting = 1;
-                 ap_bvputs(ctrl, "CWD ", path, CRLF, NULL);
-                 ap_bflush(ctrl);
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: CWD %s", path);
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: CWD %s", path);
-                 /* possible results: 250, 421, 500, 501, 502, 530, 550 */
-                 /* 250 Requested file action okay, completed. */
-@@ -1088,7 +1094,7 @@
-                 /* 530 Not logged in. */
-                 /* 550 Requested action not taken. */
-                 i = ftp_getrc(ctrl);
--                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-+                ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-                 if (i == -1 || i == 421)
-                     return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                                 ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -1102,9 +1108,8 @@
-                 path = "";
-                 len = 0;
-             }
--            else if (i == 213) { /* Size command ok */
--                for (j = 0; j < sizeof resp && ap_isdigit(resp[j]); j++)
--                        ;
-+            else if (i == 213) {/* Size command ok */
-+                for (j = 0; j < sizeof resp && ap_isdigit(resp[j]); j++);
-                 resp[j] = '\0';
-                 if (resp[0] != '\0')
-                     size = ap_pstrdup(p, resp);
-@@ -1115,7 +1120,7 @@
- #ifdef AUTODETECT_PWD
-     ap_bvputs(ctrl, "PWD", CRLF, NULL);
-     ap_bflush(ctrl);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: PWD");
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: PWD");
- /* responses: 257, 500, 501, 502, 421, 550 */
-     /* 257 "<directory-name>" <commentary> */
-     /* 421 Service not available, closing control connection. */
-@@ -1124,7 +1129,7 @@
-     /* 502 Command not implemented. */
-     /* 550 Requested action not taken. */
-     i = ftp_getrc_msg(ctrl, resp, sizeof resp);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: PWD returned status %d", i);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: PWD returned status %d", i);
-     if (i == -1 || i == 421)
-         return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                                 ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -1136,19 +1141,19 @@
-         const char *dirp = resp;
-         cwd = ap_getword_conf(r->pool, &dirp);
-     }
--#endif /*AUTODETECT_PWD*/
-+#endif                          /* AUTODETECT_PWD */
-     if (get_dirlisting) {
-         if (len != 0)
-             ap_bvputs(ctrl, "LIST ", path, CRLF, NULL);
-         else
-             ap_bputs("LIST -lag" CRLF, ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: LIST %s", (len == 0 ? "" : path));
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: LIST %s", (len == 0 ? "" : path));
-     }
-     else {
-         ftp_set_TYPE(r, ctrl, xfer_type);
-         ap_bvputs(ctrl, "RETR ", path, CRLF, NULL);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: RETR %s", path);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: RETR %s", path);
-     }
-     ap_bflush(ctrl);
- /* RETR: 110, 125, 150, 226, 250, 421, 425, 426, 450, 451, 500, 501, 530, 550
-@@ -1168,19 +1173,20 @@
-     /* 530 Not logged in. */
-     /* 550 Requested action not taken. */
-     rc = ftp_getrc(ctrl);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", rc);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", rc);
-     if (rc == -1 || rc == 421)
-         return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                                 ap_proxyerror(r, HTTP_BAD_GATEWAY,
-                                       "Error reading from remote server"));
-     if (rc == 550) {
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: RETR failed, trying LIST instead");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: RETR failed, trying LIST instead");
-         get_dirlisting = 1;
--        ftp_set_TYPE(r, ctrl, 'A'); /* directories must be transferred in ASCII */
-+        ftp_set_TYPE(r, ctrl, 'A');     /* directories must be transferred in
-+                                         * ASCII */
-         ap_bvputs(ctrl, "CWD ", path, CRLF, NULL);
-         ap_bflush(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: CWD %s", path);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: CWD %s", path);
-         /* possible results: 250, 421, 500, 501, 502, 530, 550 */
-         /* 250 Requested file action okay, completed. */
-         /* 421 Service not available, closing control connection. */
-@@ -1190,7 +1196,7 @@
-         /* 530 Not logged in. */
-         /* 550 Requested action not taken. */
-         rc = ftp_getrc(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", rc);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", rc);
-         if (rc == -1 || rc == 421)
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                                 ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -1205,7 +1211,7 @@
- #ifdef AUTODETECT_PWD
-         ap_bvputs(ctrl, "PWD", CRLF, NULL);
-         ap_bflush(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: PWD");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: PWD");
- /* responses: 257, 500, 501, 502, 421, 550 */
-         /* 257 "<directory-name>" <commentary> */
-         /* 421 Service not available, closing control connection. */
-@@ -1214,7 +1220,7 @@
-         /* 502 Command not implemented. */
-         /* 550 Requested action not taken. */
-         i = ftp_getrc_msg(ctrl, resp, sizeof resp);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: PWD returned status %d", i);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: PWD returned status %d", i);
-         if (i == -1 || i == 421)
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                                 ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -1226,13 +1232,13 @@
-             const char *dirp = resp;
-             cwd = ap_getword_conf(r->pool, &dirp);
-         }
--#endif /*AUTODETECT_PWD*/
-+#endif                          /* AUTODETECT_PWD */
-         ap_bputs("LIST -lag" CRLF, ctrl);
-         ap_bflush(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: LIST -lag");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: LIST -lag");
-         rc = ftp_getrc(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", rc);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", rc);
-         if (rc == -1 || rc == 421)
-             return ftp_cleanup_and_return(r, ctrl, data, sock, dsock,
-                                 ap_proxyerror(r, HTTP_BAD_GATEWAY,
-@@ -1260,11 +1266,12 @@
-     }
-     else {
- #ifdef CHARSET_EBCDIC
--        r->ebcdic.conv_out = 0; /* do not convert what we read from the ftp server */
-+        r->ebcdic.conv_out = 0; /* do not convert what we read from the ftp
-+                                 * server */
- #endif
-         if (r->content_type != NULL) {
-             ap_table_setn(resp_hdrs, "Content-Type", r->content_type);
--            ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: Content-Type set to %s", r->content_type);
-+            ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: Content-Type set to %s", r->content_type);
-         }
-         else {
-             ap_table_setn(resp_hdrs, "Content-Type", ap_default_type(r));
-@@ -1272,11 +1279,11 @@
-         if (xfer_type != 'A' && size != NULL) {
-             /* We "trust" the ftp server to really serve (size) bytes... */
-             ap_table_set(resp_hdrs, "Content-Length", size);
--            ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: Content-Length set to %s", size);
-+            ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: Content-Length set to %s", size);
-         }
-     }
-     if (r->content_encoding != NULL && r->content_encoding[0] != '\0') {
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: Content-Encoding set to %s", r->content_encoding);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: Content-Encoding set to %s", r->content_encoding);
-         ap_table_setn(resp_hdrs, "Content-Encoding", r->content_encoding);
-     }
-@@ -1303,7 +1310,7 @@
-         ap_hard_timeout("proxy ftp data connect", r);
-         clen = sizeof(struct sockaddr_in);
-         do
--            csd = accept(dsock, (struct sockaddr *) &server, &clen);
-+            csd = accept(dsock, (struct sockaddr *)&server, &clen);
-         while (csd == -1 && errno == EINTR);
-         if (csd == -1) {
-             ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
-@@ -1335,7 +1342,7 @@
-                   ap_pstrcat(r->pool, "MISS from ",
-                              ap_get_server_name(r), NULL)); 
-     /* The Content-Type of this response is the upstream one. */
--    r->content_type = ap_table_get (r->headers_out, "Content-Type");
-+    r->content_type = ap_table_get(r->headers_out, "Content-Type");
-     /* finally output the headers to the client */
-     ap_send_http_header(r);
-@@ -1348,7 +1355,7 @@
- /* we need to set this for ap_proxy_send_fb()... */
-             if (c != NULL)
-                 c->cache_completion = 0;
--            ap_proxy_send_fb(data, r, c, -1, 0, conf->io_buffer_size);
-+            ap_proxy_send_fb(data, r, c, -1, 0, 0, conf->io_buffer_size);
-         }
-         else {
-             send_dir(data, r, c, cwd);
-@@ -1357,8 +1364,9 @@
-         data = NULL;
-         dsock = -1;
--        /* We checked for 125||150||226||250 above.
--         * See if another rc is pending, and fetch it:
-+        /*
-+         * We checked for 125||150||226||250 above. See if another rc is
-+         * pending, and fetch it:
-          */
-         if (rc == 125 || rc == 150)
-             rc = ftp_getrc(ctrl);
-@@ -1372,7 +1380,7 @@
-             data = NULL;
-             dsock = -1;
-         }
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: ABOR");
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: ABOR");
- /* responses: 225, 226, 421, 500, 501, 502 */
-     /* 225 Data connection open; no transfer in progress. */
-     /* 226 Closing data connection. */
-@@ -1381,7 +1389,7 @@
-     /* 501 Syntax error in parameters or arguments. */
-     /* 502 Command not implemented. */
-         i = ftp_getrc(ctrl);
--        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-+        ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: returned status %d", i);
-     }
-     ap_kill_timeout(r);
-@@ -1390,12 +1398,12 @@
- /* finish */
-     ap_bputs("QUIT" CRLF, ctrl);
-     ap_bflush(ctrl);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: QUIT");
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: QUIT");
- /* responses: 221, 500 */
-     /* 221 Service closing control connection. */
-     /* 500 Syntax error, command unrecognized. */
-     i = ftp_getrc(ctrl);
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "FTP: QUIT: status %d", i);
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "FTP: QUIT: status %d", i);
-     ap_bclose(ctrl);
-Index: modules/proxy/proxy_http.c
-===================================================================
-RCS file: /home/cvs/apache-1.3/src/modules/proxy/proxy_http.c,v
-retrieving revision 1.88
-retrieving revision 1.95
-diff -u -b -u -r1.88 -r1.95
---- modules/proxy/proxy_http.c 21 Mar 2002 11:38:03 -0000      1.88
-+++ modules/proxy/proxy_http.c 17 Apr 2002 16:04:32 -0000      1.95
-@@ -76,8 +76,8 @@
-     const char *err;
-     int port;
--    /* do syntatic check.
--     * We break the URL into host, port, path, search
-+    /*
-+     * do syntatic check. We break the URL into host, port, path, search
-      */
-     port = def_port;
-     err = ap_proxy_canon_netloc(r->pool, &url, NULL, NULL, &host, &port);
-@@ -85,9 +85,10 @@
-         return HTTP_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.  True proxy requests have r->uri
--     * == r->unparsed_uri, and no others have that property.
-+    /*
-+     * N.B. if this isn't a true proxy request, then the URL _path_ has
-+     * already been decoded.  True proxy requests have r->uri ==
-+     * r->unparsed_uri, and no others have that property.
-      */
-     if (r->uri == r->unparsed_uri) {
-         search = strchr(url, '?');
-@@ -163,18 +164,21 @@
-     char portstr[32];
-     pool *p = r->pool;
-     int destport = 0;
-+    int chunked = 0;
-     char *destportstr = NULL;
-     const char *urlptr = NULL;
-     const char *datestr, *urlstr;
-+    const char *content_length;
-     void *sconf = r->server->module_config;
-     proxy_server_conf *conf =
--    (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module);
-+    (proxy_server_conf *)ap_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;
--    if (conf->cache.root == NULL) nocache = 1;
-+    if (conf->cache.root == NULL)
-+        nocache = 1;
-     memset(&server, '\0', sizeof(server));
-     server.sin_family = AF_INET;
-@@ -232,8 +236,9 @@
-     }
--    /* we have worked out who exactly we are going to connect to, now
--     * make that connection...
-+    /*
-+     * we have worked out who exactly we are going to connect to, now make
-+     * that connection...
-      */
-     sock = ap_psocket(p, PF_INET, SOCK_STREAM, IPPROTO_TCP);
-     if (sock == -1) {
-@@ -245,7 +250,7 @@
- #if !defined(TPF) && !defined(BEOS)
-     if (conf->recv_buffer_size) {
-         if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
--                       (const char *) &conf->recv_buffer_size, sizeof(int))
-+                       (const char *)&conf->recv_buffer_size, sizeof(int))
-             == -1) {
-             ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
-                          "setsockopt(SO_RCVBUF): Failed to set ProxyReceiveBufferSize, using default");
-@@ -255,7 +260,7 @@
- #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) {
-             memcpy(&server.sin_addr, ip_addr, sizeof(struct in_addr));
-@@ -287,16 +292,17 @@
-     /* record request_time for HTTP/1.1 age calculation */
-     c->req_time = time(NULL);
--    /* build upstream-request headers by stripping r->headers_in from
--     * connection specific headers.
--     * We must not remove the Connection: header from r->headers_in,
--     * we still have to react to Connection: close
-+    /*
-+     * build upstream-request headers by stripping r->headers_in from
-+     * connection specific headers. We must not remove the Connection: header
-+     * from r->headers_in, we still have to react to Connection: close
-      */
-     req_hdrs = ap_copy_table(r->pool, r->headers_in);
-     ap_proxy_clear_connection(r->pool, req_hdrs);
--    /* At this point, we start sending the HTTP/1.1 request to the
--     * remote server (proxy or otherwise).
-+    /*
-+     * At this point, we start sending the HTTP/1.1 request to the remote
-+     * server (proxy or otherwise).
-      */
-     f = ap_bcreate(p, B_RDWR | B_SOCKET);
-     ap_bpushfd(f, sock, sock);
-@@ -313,12 +319,14 @@
-     if (conf->viaopt == via_block) {
-         /* Block all outgoing Via: headers */
-         ap_table_unset(req_hdrs, "Via");
--    } else if (conf->viaopt != via_off) {
-+    }
-+    else if (conf->viaopt != via_off) {
-         /* Create a "Via:" request header entry and merge it */
-         i = ap_get_server_port(r);
--        if (ap_is_default_port(i,r)) {
--            strcpy(portstr,"");
--        } else {
-+        if (ap_is_default_port(i, r)) {
-+            strcpy(portstr, "");
-+        }
-+        else {
-             ap_snprintf(portstr, sizeof portstr, ":%d", i);
-         }
-         /* Generate outgoing Via: header with/without server comment: */
-@@ -336,20 +344,23 @@
-                         );
-     }
--    /* Add X-Forwarded-For: so that the upstream has a chance to
--       determine, where the original request came from. */
-+    /*
-+     * Add X-Forwarded-For: so that the upstream has a chance to determine,
-+     * where the original request came from.
-+     */
-     ap_table_mergen(req_hdrs, "X-Forwarded-For", r->connection->remote_ip);
-     
-     /* we don't yet support keepalives - but we will soon, I promise! */
-     ap_table_set(req_hdrs, "Connection", "close");
-     reqhdrs_arr = ap_table_elts(req_hdrs);
--    reqhdrs_elts = (table_entry *) reqhdrs_arr->elts;
-+    reqhdrs_elts = (table_entry *)reqhdrs_arr->elts;
-     for (i = 0; i < reqhdrs_arr->nelts; i++) {
-         if (reqhdrs_elts[i].key == NULL || reqhdrs_elts[i].val == NULL
--        /* Clear out hop-by-hop request headers not to send:
--         * RFC2616 13.5.1 says we should strip these headers:
-+        /*
-+         * Clear out hop-by-hop request headers not to send: RFC2616 13.5.1
-+         * says we should strip these headers:
-          */
-             || !strcasecmp(reqhdrs_elts[i].key, "Host") /* Already sent */
-             || !strcasecmp(reqhdrs_elts[i].key, "Keep-Alive")
-@@ -357,15 +368,15 @@
-             || !strcasecmp(reqhdrs_elts[i].key, "Trailer")
-             || !strcasecmp(reqhdrs_elts[i].key, "Transfer-Encoding")
-             || !strcasecmp(reqhdrs_elts[i].key, "Upgrade")
--
--            /* XXX: @@@ FIXME: "Proxy-Authorization" should *only* be 
--             * suppressed if THIS server requested the authentication,
--             * not when a frontend proxy requested it!
-+        /*
-+         * XXX: @@@ FIXME: "Proxy-Authorization" should *only* be suppressed
-+         * if THIS server requested the authentication, not when a frontend
-+         * proxy requested it!
-              *
--             * The solution to this problem is probably to strip out
--             * the Proxy-Authorisation header in the authorisation
--             * code itself, not here. This saves us having to signal
--             * somehow whether this request was authenticated or not.
-+         * The solution to this problem is probably to strip out the
-+         * Proxy-Authorisation header in the authorisation code itself, not
-+         * here. This saves us having to signal somehow whether this request
-+         * was authenticated or not.
-              */
-             || !strcasecmp(reqhdrs_elts[i].key, "Proxy-Authorization"))
-             continue;
-@@ -377,14 +388,17 @@
-     /* send the request data, if any. */
-     if (ap_should_client_block(r)) {
--        while ((i = ap_get_client_block(r, buffer, sizeof buffer)) > 0)
-+        while ((i = ap_get_client_block(r, buffer, sizeof buffer)) > 0) {
-+            ap_reset_timeout(r);
-             ap_bwrite(f, buffer, i);
-     }
-+    }
-     ap_bflush(f);
-     ap_kill_timeout(r);
--    /* Right - now it's time to listen for a response.
-+    /*
-+     * Right - now it's time to listen for a response.
-      */
-     ap_hard_timeout("proxy receive", r);
-@@ -397,16 +411,17 @@
-                      proxyhost ? proxyhost : desthost, len);
-         return ap_proxyerror(r, HTTP_BAD_GATEWAY,
-                              "Error reading from remote server");
--    } else if (len == 0) {
-+    }
-+    else if (len == 0) {
-         ap_bclose(f);
-         ap_kill_timeout(r);
-         return ap_proxyerror(r, HTTP_BAD_GATEWAY,
-                              "Document contains no data");
-     }
--    /* Is it an HTTP/1 response?
--     * Do some sanity checks on the response.
--     * (This is buggy if we ever see an HTTP/1.10)
-+    /*
-+     * Is it an HTTP/1 response? Do some sanity checks on the response. (This
-+     * is buggy if we ever see an HTTP/1.10)
-      */
-     if (ap_checkmask(buffer, "HTTP/#.# ###*")) {
-         int major, minor;
-@@ -436,7 +451,7 @@
-         resp_hdrs = ap_proxy_read_headers(r, buffer, HUGE_STRING_LEN, f);
-         if (resp_hdrs == NULL) {
--            ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, r->server,
-+            ap_log_error(APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, r->server,
-                  "proxy: Bad HTTP/%d.%d header returned by %s (%s)",
-                  major, minor, r->uri, r->method);
-             resp_hdrs = ap_make_table(p, 20);
-@@ -447,9 +462,10 @@
-         if (conf->viaopt != via_off && conf->viaopt != via_block) {
-             /* Create a "Via:" response header entry and merge it */
-             i = ap_get_server_port(r);
--            if (ap_is_default_port(i,r)) {
--                strcpy(portstr,"");
--            } else {
-+            if (ap_is_default_port(i, r)) {
-+                strcpy(portstr, "");
-+            }
-+            else {
-                 ap_snprintf(portstr, sizeof portstr, ":%d", i);
-             }
-             ap_table_mergen((table *)resp_hdrs, "Via",
-@@ -464,11 +480,21 @@
-                             );
-         }
--        /* strip hop-by-hop headers defined by Connection */
-+        /* is this content chunked? */
-+        chunked = ap_find_last_token(r->pool,
-+                                     ap_table_get(resp_hdrs, "Transfer-Encoding"),
-+                                     "chunked");
-+
-+        /* strip hop-by-hop headers defined by Connection and RFC2616 */
-         ap_proxy_clear_connection(p, resp_hdrs);
-+
-+        content_length = ap_table_get(resp_hdrs, "Content-Length");
-+        if (content_length != NULL)
-+            c->len = strtol(content_length, NULL, 10);
-+
-         /* Now add out bound headers set by other modules */
-         resp_hdrs = ap_overlay_tables(r->pool, r->err_headers_out, resp_hdrs);
--}
-+    }
-     else {
-         /* an http/0.9 response */
-         backasswards = 1;
-@@ -482,10 +508,11 @@
-     ap_kill_timeout(r);
-     /*
--     * HTTP/1.1 requires us to accept 3 types of dates, but only generate
--     * one type
-+     * HTTP/1.1 requires us to accept 3 types of dates, but only generate one
-+     * type
-      */
--    /* we SET the dates here, obliterating possible multiple dates, as only
-+    /*
-+     * we SET the dates here, obliterating possible multiple dates, as only
-      * one of each date makes sense in each response.
-      */
-     if ((datestr = ap_table_get(resp_hdrs, "Date")) != NULL)
-@@ -501,7 +528,7 @@
-     if ((urlstr = ap_table_get(resp_hdrs, "URI")) != NULL)
-       ap_table_set(resp_hdrs, "URI", proxy_location_reverse_map(r, urlstr));
-     if ((urlstr = ap_table_get(resp_hdrs, "Content-Location")) != NULL)
--      ap_table_set(resp_hdrs, "Content-Location", proxy_location_reverse_map(r , urlstr));
-+        ap_table_set(resp_hdrs, "Content-Location", proxy_location_reverse_map(r, urlstr));
- /* check if NoCache directive on this host */
-     if (nocache == 0) {
-@@ -515,8 +542,9 @@
-             }
-         }
--    /* update the cache file, possibly even fulfilling the request if
--     * it turns out a conditional allowed us to serve the object from the
-+        /*
-+         * update the cache file, possibly even fulfilling the request if it
-+         * turns out a conditional allowed us to serve the object from the
-      * cache...
-      */
-     i = ap_proxy_cache_update(c, resp_hdrs, !backasswards, nocache);
-@@ -530,20 +558,22 @@
-     }
-     /* Setup the headers for our client from upstreams response-headers */
--    ap_overlap_tables(r->headers_out, resp_hdrs, AP_OVERLAP_TABLES_SET);
-+    ap_proxy_table_replace(r->headers_out, resp_hdrs);
-     /* Add X-Cache header - be careful not to obliterate any upstream headers */
-     ap_table_mergen(r->headers_out, "X-Cache",
-                   ap_pstrcat(r->pool, "MISS from ",
-                              ap_get_server_name(r), NULL));
-     /* The Content-Type of this response is the upstream one. */
--    r->content_type = ap_table_get (r->headers_out, "Content-Type");
--    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Content-Type: %s", r->content_type);
-+    r->content_type = ap_table_get(r->headers_out, "Content-Type");
-+    ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "Content-Type: %s", r->content_type);
-     /* finally output the headers to the client */
-     ap_send_http_header(r);
--    /* Is it an HTTP/0.9 respose? If so, send the extra data we read
--       from upstream as the start of the reponse to client */
-+    /*
-+     * Is it an HTTP/0.9 respose? If so, send the extra data we read from
-+     * upstream as the start of the reponse to client
-+     */
-     if (backasswards) {
-         ap_hard_timeout("proxy send assbackward", r);
-@@ -558,11 +588,13 @@
- #ifdef CHARSET_EBCDIC
--    /* What we read/write after the header should not be modified
--     * (i.e., the cache copy is ASCII, not EBCDIC, even for text/html)
-+    /*
-+     * What we read/write after the header should not be modified (i.e., the
-+     * cache copy is ASCII, not EBCDIC, even for text/html)
-      */
--    ap_bsetflag(f, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 0);
--    ap_bsetflag(r->connection->client, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 0);
-+    r->ebcdic.conv_in = r->ebcdic.conv_out = 0;
-+    ap_bsetflag(f, B_ASCII2EBCDIC | B_EBCDIC2ASCII, 0);
-+    ap_bsetflag(r->connection->client, B_ASCII2EBCDIC | B_EBCDIC2ASCII, 0);
- #endif
- /* send body */
-@@ -578,7 +610,7 @@
-  * content length is not known. We need to make 100% sure c->len is always
-  * set correctly before we get here to correctly do keepalive.
-  */
--        ap_proxy_send_fb(f, r, c, c->len, 0, conf->io_buffer_size);
-+        ap_proxy_send_fb(f, r, c, c->len, 0, chunked, conf->io_buffer_size);
-     }
-     /* ap_proxy_send_fb() closes the socket f for us */
-Index: modules/proxy/proxy_util.c
-===================================================================
-RCS file: /home/cvs/apache-1.3/src/modules/proxy/proxy_util.c,v
-retrieving revision 1.109
-retrieving revision 1.119
-diff -u -b -u -r1.109 -r1.119
---- modules/proxy/proxy_util.c 21 Mar 2002 11:38:03 -0000      1.109
-+++ modules/proxy/proxy_util.c 15 Apr 2002 09:41:22 -0000      1.119
-@@ -73,9 +73,10 @@
- /* already called in the knowledge that the characters are hex digits */
- int ap_proxy_hex2c(const char *x)
- {
--    int i, ch;
--
-+    int i;
- #ifndef CHARSET_EBCDIC
-+    int ch;
-+
-     ch = x[0];
-     if (ap_isdigit(ch))
-         i = ch - '0';
-@@ -93,9 +94,9 @@
-     else
-         i += ch - ('a' - 10);
-     return i;
--#else /*CHARSET_EBCDIC*/
--    return (1 == sscanf(x, "%2x", &i)) ? os_toebcdic[i&0xFF] : 0;
--#endif /*CHARSET_EBCDIC*/
-+#else                           /* CHARSET_EBCDIC */
-+    return (1 == sscanf(x, "%2x", &i)) ? os_toebcdic[i & 0xFF] : 0;
-+#endif                          /* CHARSET_EBCDIC */
- }
- void ap_proxy_c2hex(int ch, char *x)
-@@ -115,14 +116,14 @@
-         x[2] = ('A' - 10) + i;
-     else
-         x[2] = '0' + i;
--#else /*CHARSET_EBCDIC*/
--    static const char ntoa[] = { "0123456789ABCDEF" };
-+#else                           /* CHARSET_EBCDIC */
-+    static const char ntoa[] = {"0123456789ABCDEF"};
-     ch = os_toascii[ch & 0xFF];
-     x[0] = '%';
--    x[1] = ntoa[(ch>>4)&0x0F];
--    x[2] = ntoa[ch&0x0F];
-+    x[1] = ntoa[(ch >> 4) & 0x0F];
-+    x[2] = ntoa[ch & 0x0F];
-     x[3] = '\0';
--#endif /*CHARSET_EBCDIC*/
-+#endif                          /* CHARSET_EBCDIC */
- }
- /*
-@@ -267,7 +268,8 @@
-         /* if (i == 0) the no port was given; keep default */
-         if (strp[i] != '\0') {
-             return "Bad port number in URL";
--        } else if (i > 0) {
-+        }
-+        else if (i > 0) {
-             *port = atoi(strp);
-             if (*port > 65535)
-                 return "Port number in URL > 65535";
-@@ -299,7 +301,7 @@
-     return NULL;
- }
--static const char * const lwday[7] =
-+static const char *const lwday[7] =
- {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
- /*
-@@ -365,63 +367,6 @@
- }
--/* NOTE: This routine is taken from http_protocol::getline()
-- * because the old code found in the proxy module was too
-- * difficult to understand and maintain.
-- */
--/* Get a line of protocol input, including any continuation lines
-- * caused by MIME folding (or broken clients) if fold != 0, and place it
-- * in the buffer s, of size n bytes, without the ending newline.
-- *
-- * Returns -1 on error, or the length of s.
-- *
-- * Note: Because bgets uses 1 char for newline and 1 char for NUL,
-- *       the most we can get is (n - 2) actual characters if it
-- *       was ended by a newline, or (n - 1) characters if the line
-- *       length exceeded (n - 1).  So, if the result == (n - 1),
-- *       then the actual input line exceeded the buffer length,
-- *       and it would be a good idea for the caller to puke 400 or 414.
-- */
--static int proxy_getline(char *s, int n, BUFF *in, int fold)
--{
--    char *pos, next;
--    int retval;
--    int total = 0;
--
--    pos = s;
--
--    do {
--        retval = ap_bgets(pos, n, in);     /* retval == -1 if error, 0 if EOF */
--
--        if (retval <= 0)
--            return ((retval < 0) && (total == 0)) ? -1 : total;
--
--        /* retval is the number of characters read, not including NUL      */
--
--        n -= retval;            /* Keep track of how much of s is full     */
--        pos += (retval - 1);    /* and where s ends                        */
--        total += retval;        /* and how long s has become               */
--
--        if (*pos == '\n') {     /* Did we get a full line of input?        */
--            *pos = '\0';
--            --total;
--            ++n;
--        }
--        else
--            return total;       /* if not, input line exceeded buffer size */
--
--        /* Continue appending if line folding is desired and
--         * the last line was not empty and we have room in the buffer and
--         * the next line begins with a continuation character.
--         */
--    } while (fold && (retval != 1) && (n > 1)
--                  && (ap_blookc(&next, in) == 1)
--                  && ((next == ' ') || (next == '\t')));
--
--    return total;
--}
--
--
- /*
-  * Reads headers from a buffer and returns an array of headers.
-  * Returns NULL on file error
-@@ -445,37 +390,40 @@
-      * Read header lines until we get the empty separator line, a read error,
-      * the connection closes (EOF), or we timeout.
-      */
--    while ((len = proxy_getline(buffer, size, f, 1)) > 0) {
-+    while ((len = ap_getline(buffer, size, f, 1)) > 0) {
-         
-         if (!(value = strchr(buffer, ':'))) {     /* Find the colon separator */
--            /* Buggy MS IIS servers sometimes return invalid headers
--             * (an extra "HTTP/1.0 200, OK" line sprinkled in between
--             * the usual MIME headers). Try to deal with it in a sensible
--             * way, but log the fact.
--             * XXX: The mask check is buggy if we ever see an HTTP/1.10 */
-+            /*
-+             * Buggy MS IIS servers sometimes return invalid headers (an
-+             * extra "HTTP/1.0 200, OK" line sprinkled in between the usual
-+             * MIME headers). Try to deal with it in a sensible way, but log
-+             * the fact. XXX: The mask check is buggy if we ever see an
-+             * HTTP/1.10
-+             */
-             if (!ap_checkmask(buffer, "HTTP/#.# ###*")) {
-                 /* Nope, it wasn't even an extra HTTP header. Give up. */
-                 return NULL;
-             }
--            ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, r->server,
--                         "proxy: Ignoring duplicate HTTP header "
--                         "returned by %s (%s)", r->uri, r->method);
-+            ap_log_error(APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, r->server,
-+                         "proxy: Ignoring duplicate HTTP status line "
-+                         "returned by buggy server %s (%s)", r->uri, r->method);
-             continue;
-         }
-         *value = '\0';
-         ++value;
--        /* XXX: RFC2068 defines only SP and HT as whitespace, this test is
-+        /*
-+         * XXX: RFC2068 defines only SP and HT as whitespace, this test is
-          * wrong... and so are many others probably.
-          */
-         while (ap_isspace(*value))
-             ++value;            /* Skip to start of value   */
-         /* should strip trailing whitespace as well */
--        for (end = &value[strlen(value)-1]; end > value && ap_isspace(*end); --end)
-+        for (end = &value[strlen(value) - 1]; end > value && ap_isspace(*end); --end)
-             *end = '\0';
-         /* make sure we add so as not to destroy duplicated headers */
-@@ -483,7 +431,7 @@
-         /* the header was too long; at the least we should skip extra data */
-         if (len >= size - 1) { 
--            while ((len = proxy_getline(field, MAX_STRING_LEN, f, 1))
-+            while ((len = ap_getline(field, MAX_STRING_LEN, f, 1))
-                     >= MAX_STRING_LEN - 1) {
-                 /* soak up the extra data */
-             }
-@@ -494,23 +442,28 @@
-     return resp_hdrs;
- }
--/* read data from f, write it to:
-+/* read data from (socket BUFF*) f, write it to:
-  * - c->fp, if it is open
-  * - r->connection->client, if nowrite == 0
-  */
--long int ap_proxy_send_fb(BUFF *f, request_rec *r, cache_req *c, off_t len, int nowrite, size_t recv_buffer_size)
-+long int ap_proxy_send_fb(BUFF *f, request_rec *r, cache_req *c, off_t len, int nowrite, int chunked, size_t recv_buffer_size)
- {
--    int  ok;
-+    int ok, end_of_chunk;
-     char *buf;
-     size_t buf_size;
-+    size_t remaining = 0;
-     long total_bytes_rcvd;
--    register int n, o, w;
-+    register int n = 0, o, w;
-     conn_rec *con = r->connection;
--    int alternate_timeouts = 1; /* 1 if we alternate between soft & hard timeouts */
-+    int alternate_timeouts = 1; /* 1 if we alternate between soft & hard
-+                                 * timeouts */
-     /* allocate a buffer to store the bytes in */
--    /* make sure it is at least IOBUFSIZE, as recv_buffer_size may be zero for system default */
-+    /*
-+     * make sure it is at least IOBUFSIZE, as recv_buffer_size may be zero
-+     * for system default
-+     */
-     buf_size = MAX(recv_buffer_size, IOBUFSIZE);
-     buf = ap_palloc(r->pool, buf_size);
-@@ -520,15 +473,14 @@
- #ifdef CHARSET_EBCDIC
-     /* The cache copy is ASCII, not EBCDIC, even for text/html) */
--    ap_bsetflag(f, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 0);
--    if (c != NULL && c->fp != NULL)
--        ap_bsetflag(c->fp, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 0);
--    ap_bsetflag(con->client, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 0);
-+    ap_bsetflag(f, B_ASCII2EBCDIC | B_EBCDIC2ASCII, 0);
-+    ap_bsetflag(con->client, B_ASCII2EBCDIC | B_EBCDIC2ASCII, 0);
- #endif
--    /* Since we are reading from one buffer and writing to another,
--     * it is unsafe to do a soft_timeout here, at least until the proxy
--     * has its own timeout handler which can set both buffers to EOUT.
-+    /*
-+     * Since we are reading from one buffer and writing to another, it is
-+     * unsafe to do a soft_timeout here, at least until the proxy has its own
-+     * timeout handler which can set both buffers to EOUT.
-      */
-     ap_kill_timeout(r);
-@@ -538,12 +490,13 @@
-     ap_hard_timeout("proxy send body", r);
-     alternate_timeouts = 0;
- #else
--    /* CHECKME! Since hard_timeout won't work in unix on sends with partial
--     * cache completion, we have to alternate between hard_timeout
--     * for reads, and soft_timeout for send.  This is because we need
--     * to get a return from ap_bwrite to be able to continue caching.
--     * BUT, if we *can't* continue anyway, just use hard_timeout.
--     * (Also, if no cache file is written, use hard timeouts)
-+    /*
-+     * CHECKME! Since hard_timeout won't work in unix on sends with partial
-+     * cache completion, we have to alternate between hard_timeout for reads,
-+     * and soft_timeout for send.  This is because we need to get a return
-+     * from ap_bwrite to be able to continue caching. BUT, if we *can't*
-+     * continue anyway, just use hard_timeout. (Also, if no cache file is
-+     * written, use hard timeouts)
-      */
-     if (c == NULL || c->len <= 0 || c->cache_completion == 1.0) {
-@@ -552,22 +505,92 @@
-     }
- #endif
--    /* Loop and ap_bread() while we can successfully read and write,
--     * or (after the client aborted) while we can successfully
--     * read and finish the configured cache_completion.
-+    /*
-+     * Loop and ap_bread() while we can successfully read and write, or
-+     * (after the client aborted) while we can successfully read and finish
-+     * the configured cache_completion.
-      */
--    for (ok = 1; ok; ) {
-+    for (end_of_chunk = ok = 1; ok;) {
-         if (alternate_timeouts)
-             ap_hard_timeout("proxy recv body from upstream server", r);
--        /* Read block from server */
-+
-+        /* read a chunked block */
-+        if (chunked) {
-+            long chunk_start = 0;
-+            n = 0;
-+
-+            /* start of a new chunk */
-+            if (end_of_chunk) {
-+                end_of_chunk = 0;
-+                /* get the chunk size from the stream */
-+                chunk_start = ap_getline(buf, buf_size, f, 0);
-+                if ((chunk_start <= 0) || ((size_t)chunk_start + 1 >= buf_size) || !ap_isxdigit(*buf)) {
-+                    n = -1;
-+                }
-+                /* parse the chunk size */
-+                else {
-+                    remaining = ap_get_chunk_size(buf);
-+                    if (remaining == 0) { /* Last chunk indicated, get footers */
-+                        /* as we are a proxy, we discard the footers, as the headers
-+                         * have already been sent at this point.
-+                         */
-+                        if (NULL == ap_proxy_read_headers(r, buf, buf_size, f)) {
-+                            n = -1;
-+                        }
-+                    }
-+                }
-+            }
-+
-+            /* read the chunk */
-+            if (remaining > 0) {
-+                n = ap_bread(f, buf, MIN((int)buf_size, (int)remaining));
-+                if (n > -1) {
-+                    remaining -= n;
-+                    end_of_chunk = (remaining == 0);
-+                }
-+            }
-+
-+            /* soak up trailing CRLF */
-+            if (end_of_chunk) {
-+                int ch; /* int because it may hold an EOF */
-+                /*
-+                 * For EBCDIC, the proxy has configured the BUFF layer to
-+                 * transparently pass the ascii characters thru (also writing
-+                 * an ASCII copy to the cache, where appropriate).
-+                 * Therefore, we see here an ASCII-CRLF (\015\012),
-+                 * not an EBCDIC-CRLF (\r\n).
-+                 */
-+                if ((ch = ap_bgetc(f)) == EOF) {
-+                    /* Protocol error: EOF detected within chunk */
-+                    n = -1;
-+                    ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r,
-+                                  "proxy: remote protocol error, eof while reading chunked from proxy");
-+                }
-+                else
-+                {
-+                    if (ch == '\015') { /* _ASCII_ CR */
-+                        ch = ap_bgetc(f);
-+                    }
-+                    if (ch != '\012') {
-+                        n = -1;
-+                    }
-+                }
-+            }
-+        }
-+
-+        /* otherwise read block normally */
-+        else {
-         if (-1 == len) {
-             n = ap_bread(f, buf, buf_size);
-         }
-         else {
--            n = ap_bread(f, buf, MIN((off_t)buf_size, len - total_bytes_rcvd));
-+                n = ap_bread(f, buf, MIN((int)buf_size,
-+                                         (int)(len - total_bytes_rcvd)));
-+            }
-         }
-+
-         if (alternate_timeouts)
-             ap_kill_timeout(r);
-         else
-@@ -587,11 +610,12 @@
-         total_bytes_rcvd += n;
-         /* if we've received everything... */
--        /* in the case of slow frontends and expensive backends,
--         * we want to avoid leaving a backend connection hanging
--         * while the frontend takes it's time to absorb the bytes.
--         * so: if we just read the last block, we close the backend
--         * connection now instead of later - it's no longer needed.
-+        /*
-+         * in the case of slow frontends and expensive backends, we want to
-+         * avoid leaving a backend connection hanging while the frontend
-+         * takes it's time to absorb the bytes. so: if we just read the last
-+         * block, we close the backend connection now instead of later - it's
-+         * no longer needed.
-          */
-         if (total_bytes_rcvd == len) {
-             ap_bclose(f);
-@@ -599,13 +623,17 @@
-         }
-         /* Write to cache first. */
--        /*@@@ XXX FIXME: Assuming that writing the cache file won't time out?!!? */
-+        /*
-+         * @@@ XXX FIXME: Assuming that writing the cache file won't time
-+         * out?!!?
-+         */
-         if (c != NULL && c->fp != NULL) {
-             if (ap_bwrite(c->fp, &buf[0], n) != n) {
-                 ap_log_rerror(APLOG_MARK, APLOG_ERR, c->req,
-                     "proxy: error writing to %s", c->tempfile);
-                 c = ap_proxy_cache_error(c);
--            } else {
-+            }
-+            else {
-                 c->written += n;
-             }
-         }
-@@ -624,16 +652,17 @@
-             if (w <= 0) {
-                 if (c != NULL) {
--                    /* when a send failure occurs, we need to decide
--                     * whether to continue loading and caching the
--                     * document, or to abort the whole thing
-+                    /*
-+                     * when a send failure occurs, we need to decide whether
-+                     * to continue loading and caching the document, or to
-+                     * abort the whole thing
-                      */
-                     ok = (c->len > 0) &&
-                          (c->cache_completion > 0) &&
-                          (c->len * c->cache_completion < total_bytes_rcvd);
--                    if (! ok) {
--                        if (c->fp!=NULL) {
-+                    if (!ok) {
-+                        if (c->fp != NULL) {
-                         ap_pclosef(c->req->pool, ap_bfileno(c->fp, B_WR));
-                         c->fp = NULL;
-                         }
-@@ -706,7 +735,7 @@
-     int len, i;
-     const char *p;
-     char valbuf[HUGE_STRING_LEN];
--    valbuf[sizeof(valbuf)-1] = 0; /* safety terminating zero */
-+    valbuf[sizeof(valbuf) - 1] = 0;     /* safety terminating zero */
-     len = strlen(key);
-@@ -734,7 +763,7 @@
-                 while (ap_isspace(*list)) {
-                     list++;
-                 }
--                strncpy(valbuf, list, MIN(p-list, sizeof(valbuf)-1));
-+                strncpy(valbuf, list, MIN(p - list, sizeof(valbuf) - 1));
-                 *val = valbuf;
-             }
-             return 1;
-@@ -760,7 +789,7 @@
-     static const char enc_table[32] = "abcdefghijklmnopqrstuvwxyz012345";
-     ap_MD5Init(&context);
--    ap_MD5Update(&context, (const unsigned char *) it, strlen(it));
-+    ap_MD5Update(&context, (const unsigned char *)it, strlen(it));
-     ap_MD5Final(digest, &context);
- /* encode 128 bits as 26 characters, using a modified uuencoding */
-@@ -805,8 +834,10 @@
-     int i, k, d;
-     unsigned int x;
- #if defined(MPE) || (defined(AIX) && defined(__ps2__))
--    /* Believe it or not, AIX 1.x does not allow you to name a file '@',
--     * so hack around it in the encoding. */
-+    /*
-+     * Believe it or not, AIX 1.x does not allow you to name a file '@', so
-+     * hack around it in the encoding.
-+     */
-     static const char enc_table[64] =
-         "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_%";
- #else
-@@ -815,7 +846,7 @@
- #endif
-     ap_MD5Init(&context);
--    ap_MD5Update(&context, (const unsigned char *) it, strlen(it));
-+    ap_MD5Update(&context, (const unsigned char *)it, strlen(it));
-     ap_MD5Final(digest, &context);
- /* encode 128 bits as 22 characters, using a modified uuencoding */
-@@ -867,7 +898,7 @@
-     }
- /* no longer necessary, as the source hex is 8-byte int */
- /*    if (j == 0xffffffff)*/
--/*      return -1;*/            /* so that it works with 8-byte ints */
-+    /*      return -1;*//* so that it works with 8-byte ints */
- /*    else */
-         return j;
- }
-@@ -938,7 +969,7 @@
-  * This routine returns its own error message
-  */
- const char *
--     ap_proxy_host2addr(const char *host, struct hostent *reqhp)
-+     ap_proxy_host2addr(const char *host, struct hostent * reqhp)
- {
-     int i;
-     struct hostent *hp;
-@@ -955,14 +986,14 @@
-     }
-     else {
-         ptd->ipaddr = ap_inet_addr(host);
--        hp = gethostbyaddr((char *) &ptd->ipaddr, sizeof(ptd->ipaddr), AF_INET);
-+        hp = gethostbyaddr((char *)&ptd->ipaddr, sizeof(ptd->ipaddr), AF_INET);
-         if (hp == NULL) {
-             memset(&ptd->hpbuf, 0, sizeof(ptd->hpbuf));
-             ptd->hpbuf.h_name = 0;
-             ptd->hpbuf.h_addrtype = AF_INET;
-             ptd->hpbuf.h_length = sizeof(ptd->ipaddr);
-             ptd->hpbuf.h_addr_list = ptd->charpbuf;
--            ptd->hpbuf.h_addr_list[0] = (char *) &ptd->ipaddr;
-+            ptd->hpbuf.h_addr_list[0] = (char *)&ptd->ipaddr;
-             ptd->hpbuf.h_addr_list[1] = 0;
-             hp = &ptd->hpbuf;
-         }
-@@ -985,12 +1016,13 @@
-         || url[1] != '/' || url[2] != '/')
-         return NULL;
--    url = ap_pstrdup(r->pool, &url[1]); /* make it point to "//", which is what proxy_canon_netloc expects */
-+    url = ap_pstrdup(r->pool, &url[1]); /* make it point to "//", which is
-+                                         * what proxy_canon_netloc expects */
-     err = ap_proxy_canon_netloc(r->pool, &url, &user, &password, &host, &port);
-     if (err != NULL)
--        ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, r,
-+        ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, r,
-                      "%s", err);
-     r->hostname = host;
-@@ -1011,9 +1043,12 @@
-     /* "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) */
-+    /*
-+     * if (proxy_readmask(This->name, &This->addr.s_addr, &This->mask.s_addr)
-+     * == 0)
-+     */
-     /* addr and mask were set by proxy_readmask() */
--    /*return 1; */
-+    /* return 1; */
-     /* Parse IP addr manually, optionally allowing */
-     /* abbreviated net addresses like 192.168. */
-@@ -1070,7 +1105,10 @@
-         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)"; */
-+        /*
-+         * "IP Address should be given in dotted-quad form, optionally
-+         * followed by a netmask (e.g., 192.168.111.0/24)";
-+         */
-         if (quads < 1)
-             return 0;
-@@ -1157,7 +1195,7 @@
-         /* Try to deal with multiple IP addr's for a host */
-         for (ip_listptr = the_host.h_addr_list; *ip_listptr; ++ip_listptr) {
--            ip_list = (struct in_addr *) *ip_listptr;
-+            ip_list = (struct in_addr *)*ip_listptr;
-             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));
-@@ -1256,7 +1294,7 @@
-     if (addr[i] != '\0' || ap_proxy_host2addr(addr, &host) != NULL)
-         return 0;
--    This->hostentry = ap_pduphostent (p, &host);
-+    This->hostentry = ap_pduphostent(p, &host);
-     /* Strip trailing dots */
-     for (i = strlen(addr) - 1; i > 0 && addr[i] == '.'; --i)
-@@ -1318,7 +1356,7 @@
-     ap_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));
- #if defined(WIN32) || defined(NETWARE)
-         if (i == SOCKET_ERROR)
-             errno = WSAGetLastError();
-@@ -1351,7 +1389,8 @@
-           c = ap_proxy_cache_error(c);
-             return 0; /* no need to continue, it failed already */
-     }
--    return 1; /* tell ap_table_do() to continue calling us for more headers */
-+    return 1;                   /* tell ap_table_do() to continue calling us
-+                                 * for more headers */
- }
- /* send a text line to one or two BUFF's; return line length */
-@@ -1366,7 +1405,8 @@
- /* do a HTTP/1.1 age calculation */
- time_t ap_proxy_current_age(cache_req *c, const time_t age_value)
- {
--    time_t apparent_age, corrected_received_age, response_delay, corrected_initial_age, resident_time, current_age;
-+    time_t apparent_age, corrected_received_age, response_delay, corrected_initial_age,
-+           resident_time, current_age;
-     /* Perform an HTTP/1.1 age calculation. (RFC2616 13.2.3) */
-@@ -1398,7 +1438,7 @@
-                           "proxy: error opening cache file %s",
-                           filename);
-         else
--            ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "File %s not found", filename);
-+            ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, "File %s not found", filename);
-     }
-     return cachefp;
-@@ -1431,10 +1471,10 @@
-     const char *name;
-     char *next = ap_pstrdup(p, ap_table_get(headers, "Connection"));
-+    /* Some proxies (Squid, ICS) use the non-standard "Proxy-Connection" header. */
-     ap_table_unset(headers, "Proxy-Connection");
--        if (!next) 
--        return;
-+    if (next != NULL) {
-     while (*next) { 
-         name = next;
-         while (*next && !ap_isspace(*next) && (*next != ','))
-@@ -1446,6 +1486,30 @@
-         ap_table_unset(headers, name);
-     }
-     ap_table_unset(headers, "Connection");
-+    }
-+
-+    /* unset hop-by-hop headers defined in RFC2616 13.5.1 */
-+    ap_table_unset(headers,"Keep-Alive");
-+    /*
-+     * XXX: @@@ FIXME: "Proxy-Authenticate" should IMO *not* be stripped
-+     * because in a chain of proxies some "front" proxy might need
-+     * proxy authentication, while a "back-end" proxy which needs none can
-+     * simply pass the "Proxy-Authenticate" back to the client, and pass
-+     * the client's "Proxy-Authorization" to the front-end proxy.
-+     * (See the note in proxy_http.c for the "Proxy-Authorization" case.)
-+     *
-+     *   MnKr 04/2002
-+     */
-+    ap_table_unset(headers,"Proxy-Authenticate");
-+    ap_table_unset(headers,"TE");
-+    ap_table_unset(headers,"Trailer");
-+    /* it is safe to just chop the transfer-encoding header
-+     * here, because proxy doesn't support any other encodings
-+     * to the backend other than chunked.
-+     */
-+    ap_table_unset(headers,"Transfer-Encoding");
-+    ap_table_unset(headers,"Upgrade");
-+
- }
- /* overlay one table on another
-@@ -1467,7 +1531,7 @@
-  */
- int ap_proxy_table_replace(table *base, table *overlay)
- {
--    table_entry *elts = (table_entry *) overlay->a.elts;
-+    table_entry *elts = (table_entry *)overlay->a.elts;
-     int i, q = 0;
-     const char *val;
-@@ -1490,40 +1554,11 @@
-     return q;
- }
--/* unmerge an element in the table */
--void ap_proxy_table_unmerge(pool *p, table *t, char *key)
--{
--    long int offset = 0;
--    long int count = 0;
--    char *value = NULL;
--
--    /* get the value to unmerge */
--    const char *initial = ap_table_get(t, key);
--    if (!initial) {
--        return;
--    }
--    value = ap_pstrdup(p, initial);
--
--    /* remove the value from the headers */
--    ap_table_unset(t, key);
--
--    /* find each comma */
--    while (value[count]) {
--        if (value[count] == ',') {
--            value[count] = 0;
--            ap_table_add(t, key, value + offset);
--            offset = count + 1;
--        }
--        count++;
--    }
--    ap_table_add(t, key, value + offset);
--}
--
- #if defined WIN32
- static DWORD tls_index;
--BOOL WINAPI DllMain (HINSTANCE dllhandle, DWORD reason, LPVOID reserved)
-+BOOL WINAPI DllMain(HINSTANCE dllhandle, DWORD reason, LPVOID reserved)
- {
-     LPVOID memptr;
-@@ -1531,13 +1566,13 @@
-     case DLL_PROCESS_ATTACH:
-         tls_index = TlsAlloc();
-     case DLL_THREAD_ATTACH: /* intentional no break */
--        TlsSetValue (tls_index, malloc (sizeof (struct per_thread_data)));
-+        TlsSetValue(tls_index, malloc(sizeof(struct per_thread_data)));
-         break;
-     case DLL_THREAD_DETACH:
--        memptr = TlsGetValue (tls_index);
-+        memptr = TlsGetValue(tls_index);
-         if (memptr) {
--            free (memptr);
--            TlsSetValue (tls_index, 0);
-+            free(memptr);
-+            TlsSetValue(tls_index, 0);
-         }
-         break;
-     }
-@@ -1551,7 +1586,7 @@
- {
- #if defined(WIN32)
--    return (struct per_thread_data *) TlsGetValue (tls_index);
-+    return (struct per_thread_data *)TlsGetValue(tls_index);
- #else
This page took 0.403581 seconds and 4 git commands to generate.