# HG changeset patch # User Igor Sysoev # Date 1166013057 0 # Node ID 90ce4d0e3241a32c42b9c051c22273361d11fdcc # Parent 7fa926a7926d98bec217ea81c0f7ebdf6d5e6feb fix ngx_http_perl_sleep_handler() diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c --- a/src/http/modules/perl/ngx_http_perl_module.c +++ b/src/http/modules/perl/ngx_http_perl_module.c @@ -273,10 +273,22 @@ ngx_http_perl_handle_request(ngx_http_re static void ngx_http_perl_sleep_handler(ngx_http_request_t *r) { + ngx_event_t *wev; + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "perl sleep handler"); - ngx_http_perl_handle_request(r); + wev = r->connection->write; + + if (wev->timedout) { + wev->timedout = 0; + ngx_http_perl_handle_request(r); + return; + } + + if (ngx_handle_write_event(wev, 0) == NGX_ERROR) { + ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); + } }