]> git.kaiwu.me - nginx.git/commitdiff
fix ngx_http_perl_sleep_handler()
authorIgor Sysoev <igor@sysoev.ru>
Wed, 13 Dec 2006 12:30:57 +0000 (12:30 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Wed, 13 Dec 2006 12:30:57 +0000 (12:30 +0000)
src/http/modules/perl/ngx_http_perl_module.c

index 94ff54f800e75faa8c7dd3f9d0ea2eefebb7b56f..fb1642051eb383edd0ef9fdf8437362a7e38837a 100644 (file)
@@ -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);
+    }
 }