diff options
author | Igor Sysoev <igor@sysoev.ru> | 2006-12-13 12:30:57 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2006-12-13 12:30:57 +0000 |
commit | df88a81783ac0ef535b93d6947851a617c864dcd (patch) | |
tree | 660bdaaa5ca20377b48273cf4a6a76f609ea9267 /src/http/modules/perl/ngx_http_perl_module.c | |
parent | 65b8a197b9bef89d8002b03471a0fd236ea84eda (diff) | |
download | nginx-df88a81783ac0ef535b93d6947851a617c864dcd.tar.gz nginx-df88a81783ac0ef535b93d6947851a617c864dcd.zip |
fix ngx_http_perl_sleep_handler()
Diffstat (limited to 'src/http/modules/perl/ngx_http_perl_module.c')
-rw-r--r-- | src/http/modules/perl/ngx_http_perl_module.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c index 94ff54f80..fb1642051 100644 --- 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_request_t *r) 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); + } } |