Duplicate $r->sleep() and/or $r->has_request_body() calls result
in undefined behaviour (in practice, connection leaks were observed).
To prevent this, croak() added in appropriate places.
ngx_http_perl_set_request(r, ctx);
+ if (ctx->next) {
+ croak("has_request_body(): another handler active");
+ }
+
if (r->headers_in.content_length_n <= 0 && !r->headers_in.chunked) {
XSRETURN_UNDEF;
}
ngx_http_perl_set_request(r, ctx);
+ if (ctx->next) {
+ croak("sleep(): another handler active");
+ }
+
sleep = (ngx_msec_t) SvIV(ST(1));
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,