diff src/http/modules/perl/ngx_http_perl_module.c @ 7530:fd9252844ec1

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.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 12 Jul 2019 15:39:25 +0300
parents d758d04e0790
children ede052c67512
line wrap: on
line diff
--- a/src/http/modules/perl/ngx_http_perl_module.c
+++ b/src/http/modules/perl/ngx_http_perl_module.c
@@ -780,6 +780,10 @@ ngx_http_perl_call_handler(pTHX_ ngx_htt
 
         ctx->redirect_uri.len = 0;
 
+        if (ctx->header_sent) {
+            return NGX_ERROR;
+        }
+
         return NGX_HTTP_INTERNAL_SERVER_ERROR;
     }