nginx-0.0.1-2003-11-20-20:36:43 import
diff --git a/src/http/modules/proxy/ngx_http_proxy_cache.c b/src/http/modules/proxy/ngx_http_proxy_cache.c
index 958471b..05fec3a 100644
--- a/src/http/modules/proxy/ngx_http_proxy_cache.c
+++ b/src/http/modules/proxy/ngx_http_proxy_cache.c
@@ -252,6 +252,8 @@
     rc = ngx_http_busy_lock_cachable(p->lcf->busy_lock, &p->busy_lock,
                                      p->try_busy_lock);
 
+ngx_log_debug(p->request->connection->log, "LOCK CACHABLE: %d" _ rc);
+
     if (rc == NGX_OK) {
         if (p->try_busy_lock) {
             p->busy_locked = 1;
@@ -344,7 +346,7 @@
 
     rc = ngx_http_cache_open_file(ctx, ngx_file_uniq(&p->cache->ctx.file.info));
 
-    if (rc == NGX_HTTP_CACHE_THE_SAME) {
+    if (rc == NGX_DECLINED || rc == NGX_HTTP_CACHE_THE_SAME) {
         p->try_busy_lock = 1;
         p->busy_lock.time = 0;
         ngx_http_proxy_cache_busy_lock(p);
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.c b/src/http/modules/proxy/ngx_http_proxy_handler.c
index b7487f8..25f5b33 100644
--- a/src/http/modules/proxy/ngx_http_proxy_handler.c
+++ b/src/http/modules/proxy/ngx_http_proxy_handler.c
@@ -448,8 +448,11 @@
 
 void ngx_http_proxy_finalize_request(ngx_http_proxy_ctx_t *p, int rc)
 {
-    ngx_log_debug(p->request->connection->log,
-                  "finalize http proxy request");
+    ngx_http_request_t  *r;
+
+    r = p->request;
+
+    ngx_log_debug(r->connection->log, "finalize http proxy request");
 
     if (p->upstream && p->upstream->peer.connection) {
         ngx_http_proxy_close_connection(p);
@@ -462,11 +465,27 @@
     }
 
     if (p->saved_ctx) {
-        p->request->connection->log->data = p->saved_ctx;
-        p->request->connection->log->handler = p->saved_handler;
+        r->connection->log->data = p->saved_ctx;
+        r->connection->log->handler = p->saved_handler;
     }
 
-    ngx_http_finalize_request(p->request, rc);
+    if (p->upstream && p->upstream->event_pipe) {
+ngx_log_debug(r->connection->log, "TEMP FD: %d" _
+              p->upstream->event_pipe->temp_file->file.fd);
+    }
+
+    if (p->cache) {
+ngx_log_debug(r->connection->log, "CACHE FD: %d" _ p->cache->ctx.file.fd);
+    }
+
+    if (p->upstream && p->upstream->event_pipe) {
+        r->file.fd = p->upstream->event_pipe->temp_file->file.fd;
+
+    } else if (p->cache) {
+        r->file.fd = p->cache->ctx.file.fd;
+    }
+
+    ngx_http_finalize_request(r, rc);
 }