You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "Conti, Chris" <Ch...@xcellenet.com> on 2003/05/14 23:46:58 UTC
RE: [PATCH] Enable HTTP tunneling for streaming data where data i
s less than the buffering size
Repost.
Should I submit this to the bug database as a problem with HTTP tunneling?
> -----Original Message-----
> From: Conti, Chris [mailto:Chris.Conti@xcellenet.com]
> Sent: Tuesday, 06 May, 2003 10:07
> To: dev@httpd.apache.org
> Subject: [PATCH] Enable HTTP tunneling for streaming data
> where data is
> less than the buffering size
>
>
> Synopsis: Optionally disable buffering in mod_proxy
>
> We ran into a situation where a command-response protocol was
> being tunneled
> through HTTP (2 sockets 1 is an HTTP GET, the other an HTTP POST) that
> failed when passed through an Apache reverse proxy. The HTTP
> requests are
> marked with keep-alive, but when the data passing from the server <
> AP_MIN_BYTES_TO_WRITE (8000 decimal) then the bucket brigade
> buffers the
> data instead of passing it on.
>
> The guts of the patch are basically appending a flush bucket
> after every
> read(unless there is already an EOS) if the ProxyWriteThrough
> directive is
> set to On
>
>
> ---------------------------------------------------------
> Chris Conti
> cmconti@mindspring.com
> chris.conti@xcellenet.com
>
> diff -u \ApacheSrc\httpd-2.0.45\modules\proxy\proxy_http.c
> \ApacheSrc-orig\httpd-2.0.45\modules\proxy\proxy_http.c
> --- \ApacheSrc\httpd-2.0.45\modules\proxy\proxy_http.c 2003-05-02
> 16:22:53.000000000 -0400
> +++ \ApacheSrc-orig\httpd-2.0.45\modules\proxy\proxy_http.c
> 2003-02-03
> 10:31:50.000000000 -0500
> @@ -956,18 +956,6 @@
> /* signal that we must leave */
> finish = TRUE;
> }
> -
> - /* do we need to always send the data? */
> - if (conf->write_through && !finish){
> - apr_off_t readbytes;
> - apr_brigade_length(bb, 0, &readbytes);
> -
> -
> - if(0 != readbytes){
> - apr_bucket *e =
> apr_bucket_flush_create(c->bucket_alloc);
> - APR_BRIGADE_INSERT_TAIL(bb, e);
> - }
> - }
>
> /* try send what we read */
> if (ap_pass_brigade(r->output_filters, bb) !=
> APR_SUCCESS)
> {
>
>
> diff -u \ApacheSrc\httpd-2.0.45\modules\proxy\mod_proxy.h
> \ApacheSrc-orig\httpd-2.0.45\modules\proxy\mod_proxy.h
> --- \ApacheSrc\httpd-2.0.45\modules\proxy\mod_proxy.h 2003-04-29
> 09:20:12.000000000 -0400
> +++ \ApacheSrc-orig\httpd-2.0.45\modules\proxy\mod_proxy.h
> 2003-02-03
> 10:31:50.000000000 -0500
> @@ -201,8 +201,6 @@
> bad_body
> } badopt; /* how to deal with bad headers */
> char badopt_set;
> - int write_through;
> - char write_through_set;
>
> } proxy_server_conf;
>
>
>
> diff -u \ApacheSrc\httpd-2.0.45\modules\proxy\mod_proxy.c
> \ApacheSrc-orig\httpd-2.0.45\modules\proxy\mod_proxy.c
> --- \ApacheSrc\httpd-2.0.45\modules\proxy\mod_proxy.c 2003-04-29
> 09:20:12.000000000 -0400
> +++ \ApacheSrc-orig\httpd-2.0.45\modules\proxy\mod_proxy.c
> 2003-02-22
> 11:38:14.000000000 -0500
> @@ -503,8 +503,6 @@
> ps->timeout_set = 0;
> ps->badopt = bad_error;
> ps->badopt_set = 0;
> - ps->write_through = 0;
> - ps->write_through_set = 0;
> return ps;
> }
>
> @@ -532,7 +530,6 @@
> ps->preserve_host = (overrides->preserve_host_set == 0) ?
> base->preserve_host : overrides->preserve_host;
> ps->timeout= (overrides->timeout_set == 0) ? base->timeout :
> overrides->timeout;
> ps->badopt = (overrides->badopt_set == 0) ? base->badopt :
> overrides->badopt;
> - ps->write_through = (overrides->write_through_set == 0) ?
> base->write_through : overrides->write_through;
>
> return ps;
> }
> @@ -816,16 +813,6 @@
> psf->req_set = 1;
> return NULL;
> }
> -static const char*
> - set_proxy_writethrough(cmd_parms *parms, void *dummy, int flag)
> -{
> - proxy_server_conf *psf =
> - ap_get_module_config(parms->server->module_config,
> &proxy_module);
> -
> - psf->write_through = flag;
> - psf->write_through_set = 1;
> - return NULL;
> -}
> static const char *
> set_proxy_error_override(cmd_parms *parms, void *dummy, int flag)
> {
> @@ -1079,8 +1066,6 @@
> "This overrides the server timeout"),
> AP_INIT_TAKE1("ProxyBadHeader", set_bad_opt, NULL, RSRC_CONF,
> "How to handle bad header line in response: IsError | Ignore |
> StartBody"),
> - AP_INIT_FLAG("ProxyWriteThrough", set_proxy_writethrough, NULL,
> RSRC_CONF,
> - "on if the data should be not be buffered"),
>
> {NULL}
> };
>
Re: [PATCH] Enable HTTP tunneling for streaming data where data i
s less than the buffering size
Posted by Graham Leggett <mi...@sharp.fm>.
Conti, Chris wrote:
> Should I submit this to the bug database as a problem with HTTP tunneling?
Yes please - drowning in work here, will only be able to look at this in
a few days.
Regards,
Graham
--
-----------------------------------------
minfrin@sharp.fm "There's a moon
over Bourbon Street
tonight..."