Loading CHANGES +3 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,9 @@ Changes with Apache 2.3.0 [ When backported to 2.2.x, remove entry from this file ] *) Remove X-Pad header which was added as a work around to a bug in Netscape 2.x to 4.0b2. [Takashi Sato <takashi lans-tv.com>] *) Add DTrace Statically Defined Tracing (SDT) probes. [Theo Schlossnagle <jesus omniti.com>, Paul Querna] Loading modules/http/http_filters.c +0 −26 Original line number Diff line number Diff line Loading @@ -944,37 +944,11 @@ AP_DECLARE(void) ap_basic_http_header(request_rec *r, apr_bucket_brigade *bb) basic_http_header(r, bb, protocol); } /* Navigator versions 2.x, 3.x and 4.0 betas up to and including 4.0b2 * have a header parsing bug. If the terminating \r\n occur starting * at offset 256, 257 or 258 of output then it will not properly parse * the headers. Curiously it doesn't exhibit this problem at 512, 513. * We are guessing that this is because their initial read of a new request * uses a 256 byte buffer, and subsequent reads use a larger buffer. * So the problem might exist at different offsets as well. * * This should also work on keepalive connections assuming they use the * same small buffer for the first read of each new request. * * At any rate, we check the bytes written so far and, if we are about to * tickle the bug, we instead insert a bogus padding header. Since the bug * manifests as a broken image in Navigator, users blame the server. :( * It is more expensive to check the User-Agent than it is to just add the * bytes, so we haven't used the BrowserMatch feature here. */ static void terminate_header(apr_bucket_brigade *bb) { char tmp[] = "X-Pad: avoid browser bug" CRLF; char crlf[] = CRLF; apr_off_t len; apr_size_t buflen; (void) apr_brigade_length(bb, 1, &len); if (len >= 255 && len <= 257) { buflen = strlen(tmp); ap_xlate_proto_to_ascii(tmp, buflen); apr_brigade_write(bb, NULL, NULL, tmp, buflen); } buflen = strlen(crlf); ap_xlate_proto_to_ascii(crlf, buflen); apr_brigade_write(bb, NULL, NULL, crlf, buflen); Loading Loading
CHANGES +3 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,9 @@ Changes with Apache 2.3.0 [ When backported to 2.2.x, remove entry from this file ] *) Remove X-Pad header which was added as a work around to a bug in Netscape 2.x to 4.0b2. [Takashi Sato <takashi lans-tv.com>] *) Add DTrace Statically Defined Tracing (SDT) probes. [Theo Schlossnagle <jesus omniti.com>, Paul Querna] Loading
modules/http/http_filters.c +0 −26 Original line number Diff line number Diff line Loading @@ -944,37 +944,11 @@ AP_DECLARE(void) ap_basic_http_header(request_rec *r, apr_bucket_brigade *bb) basic_http_header(r, bb, protocol); } /* Navigator versions 2.x, 3.x and 4.0 betas up to and including 4.0b2 * have a header parsing bug. If the terminating \r\n occur starting * at offset 256, 257 or 258 of output then it will not properly parse * the headers. Curiously it doesn't exhibit this problem at 512, 513. * We are guessing that this is because their initial read of a new request * uses a 256 byte buffer, and subsequent reads use a larger buffer. * So the problem might exist at different offsets as well. * * This should also work on keepalive connections assuming they use the * same small buffer for the first read of each new request. * * At any rate, we check the bytes written so far and, if we are about to * tickle the bug, we instead insert a bogus padding header. Since the bug * manifests as a broken image in Navigator, users blame the server. :( * It is more expensive to check the User-Agent than it is to just add the * bytes, so we haven't used the BrowserMatch feature here. */ static void terminate_header(apr_bucket_brigade *bb) { char tmp[] = "X-Pad: avoid browser bug" CRLF; char crlf[] = CRLF; apr_off_t len; apr_size_t buflen; (void) apr_brigade_length(bb, 1, &len); if (len >= 255 && len <= 257) { buflen = strlen(tmp); ap_xlate_proto_to_ascii(tmp, buflen); apr_brigade_write(bb, NULL, NULL, tmp, buflen); } buflen = strlen(crlf); ap_xlate_proto_to_ascii(crlf, buflen); apr_brigade_write(bb, NULL, NULL, crlf, buflen); Loading