aboutsummaryrefslogtreecommitdiff
path: root/src/http/modules/perl/ngx_http_perl_module.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2006-12-13 12:30:57 +0000
committerIgor Sysoev <igor@sysoev.ru>2006-12-13 12:30:57 +0000
commitdf88a81783ac0ef535b93d6947851a617c864dcd (patch)
tree660bdaaa5ca20377b48273cf4a6a76f609ea9267 /src/http/modules/perl/ngx_http_perl_module.c
parent65b8a197b9bef89d8002b03471a0fd236ea84eda (diff)
downloadnginx-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.c14
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);
+ }
}