|
|
- From 51ff7ac504f7001dc54807f9b2a72de891ab9ee5 Mon Sep 17 00:00:00 2001
- From: Glenn Strauss <gstrauss@gluelogic.com>
- Date: Wed, 22 Feb 2017 11:58:21 -0500
- Subject: [PATCH] [mod_cgi] status 200 OK if no hdrs (deprecated) (#2786)
-
- set status 200 OK if CGI does not return CGI headers
-
- Note:
- This mode in lighttpd is deprecated and may be removed in the next major
- release of lighttpd. CGI scripts should return a proper CGI header in
- the response, even if that header is empty and followed by a blank line,
- before return response body.
-
- Without a proper CGI response header, the first line(s) of the response
- might be incorrectly construed as being CGI response headers, especially
- if they contain ':', and response may be corrupted. That is why this
- mode is deprecated (and not supported in numerous other web servers).
-
- The minimal valid CGI response header is "\n", which lighttpd will treat
- as equivalent to "Status: 200\n\n"
-
- x-ref:
- "error 500 (mod_cgi.c.601) cgi died"
- https://redmine.lighttpd.net/issues/2786
- ---
- src/mod_cgi.c | 2 ++
- 1 file changed, 2 insertions(+)
-
- --- a/src/mod_cgi.c
- +++ b/src/mod_cgi.c
- @@ -502,6 +502,7 @@ static int cgi_demux_response(server *sr
- if (0 != http_chunk_append_buffer(srv, con, hctx->response_header)) {
- return FDEVENT_HANDLED_ERROR;
- }
- + if (0 == con->http_status) con->http_status = 200; /* OK */
- } else {
- const char *bstart;
- size_t blen;
- @@ -846,6 +847,7 @@ static handler_t cgi_handle_fdevent(serv
- cgi_connection_close(srv, hctx);
- return HANDLER_ERROR;
- }
- + if (0 == con->http_status) con->http_status = 200; /* OK */
- } else {
- # if 0
- log_error_write(srv, __FILE__, __LINE__, "sddd", "got HUP from cgi", con->fd, hctx->fd, revents);
|