martin 99/02/07 12:37:27
Modified: src/modules/proxy proxy_util.c Log: Minor 'beautification' (adding comments) Revision Changes Path 1.75 +27 -29 apache-1.3/src/modules/proxy/proxy_util.c Index: proxy_util.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/proxy_util.c,v retrieving revision 1.74 retrieving revision 1.75 diff -u -r1.74 -r1.75 --- proxy_util.c 1999/01/01 19:05:03 1.74 +++ proxy_util.c 1999/02/07 20:37:26 1.75 @@ -491,15 +491,15 @@ long int ap_proxy_send_fb(BUFF *f, request_rec *r, cache_req *c) { - int ok = 1; + int ok; char buf[IOBUFSIZE]; - long total_bytes_rcv; + long total_bytes_rcvd; register int n, o, w; conn_rec *con = r->connection; - int alt_to = 1; + int alternate_timeouts = 1; /* 1 if we alternate between soft & hard timeouts */ - total_bytes_rcv = 0; - if (c) + total_bytes_rcvd = 0; + if (c != NULL) c->written = 0; #ifdef CHARSET_EBCDIC @@ -520,34 +520,34 @@ #ifdef WIN32 /* works fine under win32, so leave it */ ap_hard_timeout("proxy send body", r); - alt_to = 0; + 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) */ - if (c) { - if (c->len <= 0 || c->cache_completion == 1) { - ap_hard_timeout("proxy send body", r); - alt_to = 0; - } - } else { + if (c == NULL || c->len <= 0 || c->cache_completion == 1.0) { ap_hard_timeout("proxy send body", r); - alt_to = 0; + alternate_timeouts = 0; } #endif - while (ok) { - if (alt_to) - ap_hard_timeout("proxy send body", r); + /* 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; ) { + if (alternate_timeouts) + ap_hard_timeout("proxy recv body from upstream server", r); /* Read block from server */ n = ap_bread(f, buf, IOBUFSIZE); - if (alt_to) + if (alternate_timeouts) ap_kill_timeout(r); else ap_reset_timeout(r); @@ -560,9 +560,10 @@ if (n == 0) break; /* EOF */ o = 0; - total_bytes_rcv += n; + total_bytes_rcvd += n; /* Write to cache first. */ + /*@@@ 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) { c = ap_proxy_cache_error(c); @@ -572,13 +573,13 @@ } /* Write the block to the client, detect aborted transfers */ - while (n && !con->aborted) { - if (alt_to) + while (!con->aborted && n > 0) { + if (alternate_timeouts) ap_soft_timeout("proxy send body", r); w = ap_bwrite(con->client, &buf[o], n); - if (alt_to) + if (alternate_timeouts) ap_kill_timeout(r); else ap_reset_timeout(r); @@ -591,7 +592,7 @@ */ ok = (c->len > 0) && (c->cache_completion > 0) && - (c->len * c->cache_completion < total_bytes_rcv); + (c->len * c->cache_completion < total_bytes_rcvd); if (! ok) { ap_pclosef(c->req->pool, c->fp->fd); @@ -605,14 +606,14 @@ } n -= w; o += w; - } - } + } /* while client alive and more data to send */ + } /* loop and ap_bread while "ok" */ if (!con->aborted) ap_bflush(con->client); ap_kill_timeout(r); - return total_bytes_rcv; + return total_bytes_rcvd; } /* @@ -628,14 +629,11 @@ BUFF *fp = r->connection->client; table_entry *elts = (table_entry *) ap_table_elts(t)->elts; - ap_bputs(respline, fp); - ap_bputs(CRLF, fp); + ap_bvputs(fp, respline, CRLF, NULL); for (i = 0; i < ap_table_elts(t)->nelts; ++i) { if (elts[i].key != NULL) { ap_bvputs(fp, elts[i].key, ": ", elts[i].val, CRLF, NULL); - /* FIXME: @@@ This used to be ap_table_set(), but I think - * ap_table_addn() is correct. MnKr */ ap_table_addn(r->headers_out, elts[i].key, elts[i].val); } }