To be folded in... Still working a problem where there's a report
of a shift-reload on Netscape results in bad mojo in the cache
(user gets a "no data" error when Apache front-ends an IIS server)

diff -u -r1.87 proxy_cache.c
--- src/modules/proxy/proxy_cache.c     3 Jun 2002 12:28:27 -0000       1.87
+++ src/modules/proxy/proxy_cache.c     4 Sep 2002 20:10:14 -0000
@@ -1524,7 +1524,7 @@
     if (clen == NULL)
         c->len = -1;
     else
-        c->len = atoi(clen);
+        c->len = ap_strtol(clen, NULL, 10);
 
 /* we have all the header information we need - write it to the cache file */
     c->version++;
@@ -1560,6 +1560,18 @@
  */
 
         if (c->hdrs) {
+            /* recall at this point that c->len is already set from resp_hdrs. If
+               Content-Length was NULL, then c->len is -1, otherwise it's
+               set to whatever the value was. */
+            if (c->len == 0) {
+                const char *c_clen_str;
+                off_t c_clen;
+                if ( (c_clen_str = ap_table_get(c->hdrs, "Content-Length")) &&
+                   ( (c_clen = ap_strtol(c_clen_str, NULL, 0)) > 0) ) {
+                        ap_table_set(resp_hdrs, "Content-Length", c_clen_str);
+                        c->len = c_clen;
+                }
+            }
             if (!ap_proxy_table_replace(c->hdrs, resp_hdrs)) {
                 c->xcache = ap_pstrcat(r->pool, "HIT from ", ap_get_server_name(r), " 
(with revalidation)", NULL);
                 return ap_proxy_cache_conditional(r, c, c->fp);

-- 
===========================================================================
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
      "A society that will trade a little liberty for a little order
             will lose both and deserve neither" - T.Jefferson

Reply via email to