This change appears to have broken some cgі scripts - cricket
<http://cricket.sourceforge.net/> worked fine in 2.0.33 but in 2.0.34 and
35-dev:
[Sat Mar 30 15:20:03 2002] [error] [client 192.168.0.34] malformed header
from
: /usr/lib/cgi-bin/cricket/grapher.cgi
Cheers,
-Thom
* [EMAIL PROTECTED] ([EMAIL PROTECTED]) wrote :
> trawick 02/03/20 05:57:08
>
> Modified: . CHANGES
> modules/generators mod_cgi.c mod_cgid.c
> Log:
> Get nph- CGI scripts working again by avoiding filters that can't
> possibly deal with a script that generates the protocol header.
>
> PR: 8902, 8907, 9983
>
> Revision Changes Path
> 1.648 +3 -0 httpd-2.0/CHANGES
>
> Index: CHANGES
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/CHANGES,v
> retrieving revision 1.647
> retrieving revision 1.648
> diff -u -r1.647 -r1.648
> --- CHANGES 20 Mar 2002 07:10:21 -0000 1.647
> +++ CHANGES 20 Mar 2002 13:57:07 -0000 1.648
> @@ -1,5 +1,8 @@
> Changes with Apache 2.0.34-dev
>
> + *) Get nph- CGI scripts working again. PRs 8902, 8907, 9983
> + [Jeff Trawick]
> +
> *) Upgraded PCRE library to latest version 3.9 [Brian Pane]
>
> *) Add accessor function to set r->content_type. From now on,
>
>
>
> 1.123 +13 -0 httpd-2.0/modules/generators/mod_cgi.c
>
> Index: mod_cgi.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/modules/generators/mod_cgi.c,v
> retrieving revision 1.122
> retrieving revision 1.123
> diff -u -r1.122 -r1.123
> --- mod_cgi.c 20 Mar 2002 01:58:46 -0000 1.122
> +++ mod_cgi.c 20 Mar 2002 13:57:08 -0000 1.123
> @@ -739,6 +739,19 @@
> }
>
> if (script_in && nph) {
> + struct ap_filter_t *cur;
> +
> + /* get rid of all filters up through protocol... since we
> + * haven't parsed off the headers, there is no way they can
> + * work
> + */
> +
> + cur = r->proto_output_filters;
> + while (cur && cur->frec->ftype < AP_FTYPE_CONNECTION) {
> + cur = cur->next;
> + }
> + r->output_filters = r->proto_output_filters = cur;
> +
> bb = apr_brigade_create(r->pool);
> b = apr_bucket_pipe_create(script_in);
> APR_BRIGADE_INSERT_TAIL(bb, b);
>
>
>
> 1.120 +13 -0 httpd-2.0/modules/generators/mod_cgid.c
>
> Index: mod_cgid.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/modules/generators/mod_cgid.c,v
> retrieving revision 1.119
> retrieving revision 1.120
> diff -u -r1.119 -r1.120
> --- mod_cgid.c 20 Mar 2002 01:58:46 -0000 1.119
> +++ mod_cgid.c 20 Mar 2002 13:57:08 -0000 1.120
> @@ -1159,11 +1159,24 @@
> }
>
> if (nph) {
> + struct ap_filter_t *cur;
> +
> /* Passing our socket down the filter chain in a pipe bucket
> * gives up the responsibility of closing the socket, so
> * get rid of the cleanup.
> */
> apr_pool_cleanup_kill(r->pool, (void *)sd, close_unix_socket);
> +
> + /* get rid of all filters up through protocol... since we
> + * haven't parsed off the headers, there is no way they can
> + * work
> + */
> +
> + cur = r->proto_output_filters;
> + while (cur && cur->frec->ftype < AP_FTYPE_CONNECTION) {
> + cur = cur->next;
> + }
> + r->output_filters = r->proto_output_filters = cur;
>
> bb = apr_brigade_create(r->pool);
> b = apr_bucket_pipe_create(tempsock);
>
>
>