diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c index f8d5707d..6efe0047 100644 --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -1515,6 +1515,11 @@ ngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u) return; } + if (rc >= NGX_HTTP_SPECIAL_RESPONSE) { + ngx_http_upstream_finalize_request(r, u, rc); + return; + } + u->state->peer = u->peer.name; if (rc == NGX_BUSY) { diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h index 3e714e5b..dfbb25e0 100644 --- a/src/http/ngx_http_upstream.h +++ b/src/http/ngx_http_upstream.h @@ -427,4 +427,9 @@ extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[]; extern ngx_conf_bitmask_t ngx_http_upstream_ignore_headers_masks[]; +#ifndef HAVE_BALANCER_STATUS_CODE_PATCH +#define HAVE_BALANCER_STATUS_CODE_PATCH +#endif + + #endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */ diff --git a/src/stream/ngx_stream.h b/src/stream/ngx_stream.h index 09d24593..d8b4b584 100644 --- a/src/stream/ngx_stream.h +++ b/src/stream/ngx_stream.h @@ -27,6 +27,7 @@ typedef struct ngx_stream_session_s ngx_stream_session_t; #define NGX_STREAM_OK 200 +#define NGX_STREAM_SPECIAL_RESPONSE 300 #define NGX_STREAM_BAD_REQUEST 400 #define NGX_STREAM_FORBIDDEN 403 #define NGX_STREAM_INTERNAL_SERVER_ERROR 500 diff --git a/src/stream/ngx_stream_proxy_module.c b/src/stream/ngx_stream_proxy_module.c index 818d7329..329dcdc6 100644 --- a/src/stream/ngx_stream_proxy_module.c +++ b/src/stream/ngx_stream_proxy_module.c @@ -691,6 +691,11 @@ ngx_stream_proxy_connect(ngx_stream_session_t *s) return; } + if (rc >= NGX_STREAM_SPECIAL_RESPONSE) { + ngx_stream_proxy_finalize(s, rc); + return; + } + u->state->peer = u->peer.name; if (rc == NGX_BUSY) { diff --git a/src/stream/ngx_stream_upstream.h b/src/stream/ngx_stream_upstream.h index 73947f46..21bc0ad7 100644 --- a/src/stream/ngx_stream_upstream.h +++ b/src/stream/ngx_stream_upstream.h @@ -151,4 +151,9 @@ ngx_stream_upstream_srv_conf_t *ngx_stream_upstream_add(ngx_conf_t *cf, extern ngx_module_t ngx_stream_upstream_module; +#ifndef HAVE_BALANCER_STATUS_CODE_PATCH +#define HAVE_BALANCER_STATUS_CODE_PATCH +#endif + + #endif /* _NGX_STREAM_UPSTREAM_H_INCLUDED_ */