]> git.kaiwu.me - nginx.git/commitdiff
fix "out of memory" case handling
authorIgor Sysoev <igor@sysoev.ru>
Fri, 29 May 2009 11:42:55 +0000 (11:42 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Fri, 29 May 2009 11:42:55 +0000 (11:42 +0000)
src/http/ngx_http_request.c

index 4e799e96a9b8ec2c94afae25a335e546cf67fff6..be5c91cbfc86b5f335ba194585a97939ae6fc841 100644 (file)
@@ -451,13 +451,15 @@ ngx_http_init_request(ngx_event_t *rev)
                       sizeof(ngx_table_elt_t))
         != NGX_OK)
     {
-        ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
+        ngx_destroy_pool(r->pool);
+        ngx_http_close_connection(c);
         return;
     }
 
     r->ctx = ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module);
     if (r->ctx == NULL) {
-        ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
+        ngx_destroy_pool(r->pool);
+        ngx_http_close_connection(c);
         return;
     }
 
@@ -466,7 +468,8 @@ ngx_http_init_request(ngx_event_t *rev)
     r->variables = ngx_pcalloc(r->pool, cmcf->variables.nelts
                                         * sizeof(ngx_http_variable_value_t));
     if (r->variables == NULL) {
-        ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
+        ngx_destroy_pool(r->pool);
+        ngx_http_close_connection(c);
         return;
     }