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;