mirror of
				https://github.com/openresty/openresty.git
				synced 2024-10-13 00:29:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 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_ */
 |