Mercurial > hg > nginx
comparison src/http/modules/perl/ngx_http_perl_module.c @ 6960:1c5e5e5b008d
Perl: fixed delaying subrequests.
Much like in limit_req, use the wev->delayed flag to ensure proper handling
and interoperability with limit_rate.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sun, 02 Apr 2017 14:32:28 +0300 |
parents | eada22643e8b |
children | 903fb1ddc07f |
comparison
equal
deleted
inserted
replaced
6959:7fcf209d40c8 | 6960:1c5e5e5b008d |
---|---|
276 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, | 276 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
277 "perl sleep handler"); | 277 "perl sleep handler"); |
278 | 278 |
279 wev = r->connection->write; | 279 wev = r->connection->write; |
280 | 280 |
281 if (wev->timedout) { | 281 if (wev->delayed && !wev->timedout) { |
282 wev->timedout = 0; | 282 |
283 ngx_http_perl_handle_request(r); | 283 if (ngx_handle_write_event(wev, 0) != NGX_OK) { |
284 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); | |
285 } | |
286 | |
284 return; | 287 return; |
285 } | 288 } |
286 | 289 |
287 if (ngx_handle_write_event(wev, 0) != NGX_OK) { | 290 wev->delayed = 0; |
288 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); | 291 wev->timedout = 0; |
289 } | 292 |
293 ngx_http_perl_handle_request(r); | |
290 } | 294 } |
291 | 295 |
292 | 296 |
293 static ngx_int_t | 297 static ngx_int_t |
294 ngx_http_perl_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v, | 298 ngx_http_perl_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v, |