You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ch...@apache.org on 2001/08/12 23:24:35 UTC
cvs commit: httpd-proxy/module-2.0 proxy_http.c
chuck 01/08/12 14:24:35
Modified: module-2.0 proxy_http.c
Log:
Make the body read in proxy http handler nonblocking. There's no sense
in serializing 4-8 client connections into a single origin server
connection, as is the blocking behavior.
Added instrumentation that we don't want compiled in normally to assist in
debugging chunking problems. apr_get_brigade is apparently blocking during
chunked body fetch, or proxy_http_handler is getting deadlocked with
the dechunk filter. Show PID for prefork debugging. We'll figure out
getting TIDs later.
Revision Changes Path
1.87 +5 -1 httpd-proxy/module-2.0/proxy_http.c
Index: proxy_http.c
===================================================================
RCS file: /home/cvs/httpd-proxy/module-2.0/proxy_http.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -r1.86 -r1.87
--- proxy_http.c 2001/08/11 05:10:23 1.86
+++ proxy_http.c 2001/08/12 21:24:35 1.87
@@ -796,7 +796,11 @@
"proxy: start body send");
/* read the body, pass it to the output filters */
- while (ap_get_brigade(rp->input_filters, bb, AP_MODE_BLOCKING, &readbytes) == APR_SUCCESS) {
+ while (ap_get_brigade(rp->input_filters, bb, AP_MODE_NONBLOCKING, &readbytes) == APR_SUCCESS) {
+#if DEBUGGING
+ ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r->server,
+ "proxy (PID %d): readbytes: %#x", getpid(), readbytes);
+#endif
if (APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb))) {
ap_pass_brigade(r->output_filters, bb);
break;