I've sent a patch doing the same some time ago, but it was not accepted so don't get your hopes up ;-).
Peter. Jim Jagielski wrote: > > In the 2.0 proxy, a bogus header line causes an immediate 502 error, > whereas in 1.3, we try to handle it. The below patch attemps to make > 2.0 a bit more lenient in what we accept, and allows for backwards > compatibility with what 1.3 does (principle of least astonishment). > I haven't fully tested this yet, but comments/feedback are welcome. > > Index: modules/proxy/proxy_util.c > =================================================================== > RCS file: /home/cvs/httpd-2.0/modules/proxy/proxy_util.c,v > retrieving revision 1.98 > diff -u -r1.98 proxy_util.c > --- modules/proxy/proxy_util.c 25 Aug 2002 20:40:11 -0000 1.98 > +++ modules/proxy/proxy_util.c 24 Sep 2002 14:21:06 -0000 > @@ -433,6 +433,7 @@ > int len; > char *value, *end; > char field[MAX_STRING_LEN]; > + int saw_headers = 0; > > headers_out = apr_table_make(r->pool, 20); > > @@ -447,12 +448,25 @@ > /* Buggy MS IIS servers sometimes return invalid headers > * (an extra "HTTP/1.0 200, OK" line sprinkled in between > * the usual MIME headers). Try to deal with it in a sensible > - * way, but log the fact. > + * way, but log the fact. If it's not that, but we've seen > + * some headers up to now, return them, The also handles the > + * fact that buggy MS IIS servers sometimes forget the CRLF > + * between headers and content. > * XXX: The mask check is buggy if we ever see an HTTP/1.10 */ > > if (!apr_date_checkmask(buffer, "HTTP/#.# ###*")) { > /* Nope, it wasn't even an extra HTTP header. Give up. */ > - return NULL; > + if (saw_headers) { > + ap_log_error(APLOG_MARK, APLOG_WARNING, 0, r->server, > + "proxy: Ignoring bogus non-header in headers " > + "returned by %s (%s)", r->uri, r->method); > + return headers_out; > + } else { > + ap_log_error(APLOG_MARK, APLOG_WARNING, 0, r->server, > + "proxy: No HTTP headers " > + "returned by %s (%s)", r->uri, r->method); > + return NULL; > + } > } > > ap_log_error(APLOG_MARK, APLOG_WARNING, 0, r->server, > @@ -475,6 +489,7 @@ > > /* make sure we add so as not to destroy duplicated headers */ > apr_table_add(headers_out, buffer, value); > + saw_headers = 1; > > /* the header was too long; at the least we should skip extra data */ > if (len >= size - 1) { > -- > =========================================================================== > 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