You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.7 KiB
59 lines
1.7 KiB
6 months ago
|
Index: ngx_http_sticky_module.c
|
||
|
===================================================================
|
||
|
--- ngx_http_sticky_module.c (revision 45)
|
||
|
+++ ngx_http_sticky_module.c (working copy)
|
||
|
@@ -10,6 +10,11 @@
|
||
|
|
||
|
#include "ngx_http_sticky_misc.h"
|
||
|
|
||
|
+#if (NGX_HTTP_UPSTREAM_CHECK)
|
||
|
+#include "ngx_http_upstream_check_module.h"
|
||
|
+#endif
|
||
|
+
|
||
|
+
|
||
|
/* define a peer */
|
||
|
typedef struct {
|
||
|
ngx_http_upstream_rr_peer_t *rr_peer;
|
||
|
@@ -287,6 +292,16 @@
|
||
|
return NGX_BUSY;
|
||
|
}
|
||
|
|
||
|
+#if (NGX_HTTP_UPSTREAM_CHECK)
|
||
|
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
|
||
|
+ "get sticky peer, check_index: %ui",
|
||
|
+ peer->check_index);
|
||
|
+
|
||
|
+ if (ngx_http_upstream_check_peer_down(peer->check_index)) {
|
||
|
+ return NGX_BUSY;
|
||
|
+ }
|
||
|
+#endif
|
||
|
+
|
||
|
/* if it's been ignored for long enought (fail_timeout), reset timeout */
|
||
|
/* do this check before testing peer->fails ! :) */
|
||
|
if (now - peer->accessed > peer->fail_timeout) {
|
||
|
@@ -303,6 +318,14 @@
|
||
|
/* ensure the peer is not marked as down */
|
||
|
if (!peer->down) {
|
||
|
|
||
|
+#if (NGX_HTTP_UPSTREAM_CHECK)
|
||
|
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
|
||
|
+ "get sticky peer, check_index: %ui",
|
||
|
+ peer->check_index);
|
||
|
+
|
||
|
+ if (!ngx_http_upstream_check_peer_down(peer->check_index)) {
|
||
|
+#endif
|
||
|
+
|
||
|
/* if it's not failedi, use it */
|
||
|
if (peer->max_fails == 0 || peer->fails < peer->max_fails) {
|
||
|
selected_peer = (ngx_int_t)n;
|
||
|
@@ -317,6 +340,9 @@
|
||
|
/* mark the peer as tried */
|
||
|
iphp->rrp.tried[n] |= m;
|
||
|
}
|
||
|
+#if (NGX_HTTP_UPSTREAM_CHECK)
|
||
|
+ }
|
||
|
+#endif
|
||
|
}
|
||
|
}
|
||
|
}
|