nginx-0.0.1-2003-11-11-00:09:22 import
diff --git a/src/http/modules/proxy/ngx_http_proxy_cache.c b/src/http/modules/proxy/ngx_http_proxy_cache.c index 3c4f5ca..a8c9d77 100644 --- a/src/http/modules/proxy/ngx_http_proxy_cache.c +++ b/src/http/modules/proxy/ngx_http_proxy_cache.c
@@ -288,6 +288,8 @@ return; } + ngx_http_busy_unlock(p->lcf->busy_lock, &p->busy_lock); + if (rc == NGX_DONE) { ft_type = NGX_HTTP_PROXY_FT_BUSY_LOCK;
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.c b/src/http/modules/proxy/ngx_http_proxy_handler.c index ad719ca..ecfe658 100644 --- a/src/http/modules/proxy/ngx_http_proxy_handler.c +++ b/src/http/modules/proxy/ngx_http_proxy_handler.c
@@ -503,7 +503,7 @@ { ngx_http_proxy_ctx_t *p; - p = ngx_http_get_module_ctx(r, ngx_http_proxy_module); + p = ngx_http_get_module_err_ctx(r, ngx_http_proxy_module); if (p == NULL) { *buf = '-'; @@ -520,11 +520,15 @@ *buf++ = '/'; - *buf++ = 'X'; + *buf++ = '_'; *buf++ = '/'; - *buf++ = 'X'; + *buf++ = '_'; + + *buf++ = '/'; + + *buf++ = '_'; *buf++ = ' '; @@ -554,6 +558,9 @@ buf += ngx_snprintf(buf, NGX_TIME_LEN, TIME_FMT, p->state->expires); } + *buf++ = ' '; + *buf++ = '_'; + return buf; } @@ -563,7 +570,7 @@ { ngx_http_proxy_ctx_t *p; - p = ngx_http_get_module_ctx(r, ngx_http_proxy_module); + p = ngx_http_get_module_err_ctx(r, ngx_http_proxy_module); if (p == NULL || p->state->cache_state == 0) { *buf = '-'; @@ -580,7 +587,7 @@ { ngx_http_proxy_ctx_t *p; - p = ngx_http_get_module_ctx(r, ngx_http_proxy_module); + p = ngx_http_get_module_err_ctx(r, ngx_http_proxy_module); if (p == NULL || p->state->reason == 0) { *buf = '-';
diff --git a/src/http/modules/proxy/ngx_http_proxy_upstream.c b/src/http/modules/proxy/ngx_http_proxy_upstream.c index d404993..0a5ecd2 100644 --- a/src/http/modules/proxy/ngx_http_proxy_upstream.c +++ b/src/http/modules/proxy/ngx_http_proxy_upstream.c
@@ -337,6 +337,8 @@ return; } + ngx_http_busy_unlock(p->lcf->busy_lock, &p->busy_lock); + if (rc == NGX_DONE) { ft_type = NGX_HTTP_PROXY_FT_BUSY_LOCK; @@ -1053,27 +1055,24 @@ if (p->upstream->peer.connection) { if (ep->upstream_done && p->cachable) { if (ngx_http_proxy_update_cache(p) == NGX_ERROR) { - ngx_http_busy_unlock_cachable(p->lcf->busy_lock, &p->busy_lock); + ngx_http_busy_unlock(p->lcf->busy_lock, &p->busy_lock); ngx_http_proxy_finalize_request(p, 0); return; } - ngx_http_busy_unlock_cachable(p->lcf->busy_lock, &p->busy_lock); - } else if (ep->upstream_eof && p->cachable) { /* TODO: check length & update cache */ if (ngx_http_proxy_update_cache(p) == NGX_ERROR) { - ngx_http_busy_unlock_cachable(p->lcf->busy_lock, &p->busy_lock); + ngx_http_busy_unlock(p->lcf->busy_lock, &p->busy_lock); ngx_http_proxy_finalize_request(p, 0); return; } - - ngx_http_busy_unlock_cachable(p->lcf->busy_lock, &p->busy_lock); } if (ep->upstream_done || ep->upstream_eof || ep->upstream_error) { + ngx_http_busy_unlock(p->lcf->busy_lock, &p->busy_lock); ngx_http_proxy_close_connection(p); } } @@ -1104,6 +1103,8 @@ ngx_log_debug(p->request->connection->log, "next upstream: %d" _ ft_type); + ngx_http_busy_unlock(p->lcf->busy_lock, &p->busy_lock); + if (ft_type != NGX_HTTP_PROXY_FT_HTTP_404) { ngx_event_connect_peer_failed(&p->upstream->peer); }