mirror of
https://github.com/nginx/nginx.git
synced 2025-06-21 05:10:51 +08:00
Perl: protection against duplicate $r->sleep() calls.
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.
This commit is contained in:
parent
9d266efbc0
commit
1988783169
@ -400,6 +400,10 @@ has_request_body(r, next)
|
|||||||
|
|
||||||
ngx_http_perl_set_request(r, ctx);
|
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) {
|
if (r->headers_in.content_length_n <= 0 && !r->headers_in.chunked) {
|
||||||
XSRETURN_UNDEF;
|
XSRETURN_UNDEF;
|
||||||
}
|
}
|
||||||
@ -1093,6 +1097,10 @@ sleep(r, sleep, next)
|
|||||||
|
|
||||||
ngx_http_perl_set_request(r, ctx);
|
ngx_http_perl_set_request(r, ctx);
|
||||||
|
|
||||||
|
if (ctx->next) {
|
||||||
|
croak("sleep(): another handler active");
|
||||||
|
}
|
||||||
|
|
||||||
sleep = (ngx_msec_t) SvIV(ST(1));
|
sleep = (ngx_msec_t) SvIV(ST(1));
|
||||||
|
|
||||||
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user