mirror of
https://github.com/nginx/nginx.git
synced 2026-08-30 06:58:42 +00:00
Perl: avoid returning 500 if header was already sent.
Returning NGX_HTTP_INTERNAL_SERVER_ERROR if a perl code died after sending header will lead to a "header already sent" alert. To avoid it, we now check if header was already sent, and return NGX_ERROR instead if it was.
This commit is contained in:
parent
12d6b3b4a1
commit
78b39bd631
3 changed files with 7 additions and 0 deletions
|
|
@ -164,6 +164,8 @@ send_http_header(r, ...)
|
|||
}
|
||||
}
|
||||
|
||||
ctx->header_sent = 1;
|
||||
|
||||
r->disable_not_modified = 1;
|
||||
|
||||
rc = ngx_http_send_header(r);
|
||||
|
|
|
|||
|
|
@ -780,6 +780,10 @@ ngx_http_perl_call_handler(pTHX_ ngx_http_request_t *r,
|
|||
|
||||
ctx->redirect_uri.len = 0;
|
||||
|
||||
if (ctx->header_sent) {
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ typedef struct {
|
|||
unsigned done:1;
|
||||
unsigned error:1;
|
||||
unsigned variable:1;
|
||||
unsigned header_sent:1;
|
||||
|
||||
ngx_array_t *variables; /* array of ngx_http_perl_var_t */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue