|
14 | 14 | #include "ngx_http_upstream_check_module.h"
|
15 | 15 | #endif
|
16 | 16 |
|
| 17 | + |
17 | 18 | #if (nginx_version > 1027003) && defined(NGX_HTTP_UPSTREAM_MODIFY) && !defined(NGX_HTTP_UPSTREAM_CHECK)
|
18 | 19 | static u_char *
|
19 | 20 | ngx_http_vhost_traffic_status_display_ug_host(
|
@@ -1047,31 +1048,33 @@ ngx_http_vhost_traffic_status_display_ug_host(
|
1047 | 1048 | if (node != sentinel) {
|
1048 | 1049 | vtsn = (ngx_http_vhost_traffic_status_node_t *) &node->color;
|
1049 | 1050 | if (vtsn->stat_upstream.type == NGX_HTTP_VHOST_TRAFFIC_STATUS_UPSTREAM_UG) {
|
1050 |
| - rc = ngx_memn2cmp(host.data, vtsn->data+3, host.len, (size_t) host.len); |
1051 |
| - if (rc == 0) { |
1052 |
| - usn.name.data = vtsn->data + 3 + host.len + 1; |
1053 |
| - usn.name.len = vtsn->len - host.len - 4; |
1054 |
| - usn.weight = 0; |
1055 |
| - usn.max_fails = 0; |
1056 |
| - usn.fail_timeout = 0; |
1057 |
| - usn.backup = 0; |
1058 |
| - usn.down = 0; |
1059 |
| - while (peers != NULL) { |
1060 |
| - ngx_http_upstream_rr_peers_rlock(peers); |
1061 |
| - for (peer = peers->peer; peer; peer = peer->next) { |
1062 |
| - rc = ngx_memn2cmp(peer->name.data, usn.name.data, peer->name.len, (size_t) usn.name.len); |
1063 |
| - if (rc == 0) { |
1064 |
| - usn.weight = peer->weight; |
1065 |
| - usn.max_fails = peer->max_fails; |
1066 |
| - usn.fail_timeout = peer->fail_timeout; |
1067 |
| - usn.backup = 0; |
1068 |
| - usn.down = (peer->fails >= peer->max_fails || peer->down); |
| 1051 | + if (vtsn->len >= NGX_HTTP_VHOST_TRAFFIC_STATUS_UPSTREAM_KEY_LEN + host.len) { |
| 1052 | + rc = ngx_memn2cmp(host.data, vtsn->data + NGX_HTTP_VHOST_TRAFFIC_STATUS_UPSTREAM_PREFIX_LEN, host.len, (size_t) host.len); |
| 1053 | + if (rc == 0) { |
| 1054 | + usn.name.data = vtsn->data + NGX_HTTP_VHOST_TRAFFIC_STATUS_UPSTREAM_PREFIX_LEN + host.len + 1; |
| 1055 | + usn.name.len = vtsn->len - host.len - NGX_HTTP_VHOST_TRAFFIC_STATUS_UPSTREAM_KEY_LEN; |
| 1056 | + usn.weight = 0; |
| 1057 | + usn.max_fails = 0; |
| 1058 | + usn.fail_timeout = 0; |
| 1059 | + usn.backup = 0; |
| 1060 | + usn.down = 0; |
| 1061 | + while (peers != NULL) { |
| 1062 | + ngx_http_upstream_rr_peers_rlock(peers); |
| 1063 | + for (peer = peers->peer; peer; peer = peer->next) { |
| 1064 | + rc = ngx_memn2cmp(peer->name.data, usn.name.data, peer->name.len, (size_t) usn.name.len); |
| 1065 | + if (rc == 0) { |
| 1066 | + usn.weight = peer->weight; |
| 1067 | + usn.max_fails = peer->max_fails; |
| 1068 | + usn.fail_timeout = peer->fail_timeout; |
| 1069 | + usn.backup = 0; |
| 1070 | + usn.down = (peer->fails >= peer->max_fails || peer->down); |
| 1071 | + } |
1069 | 1072 | }
|
| 1073 | + ngx_http_upstream_rr_peers_unlock(peers); |
| 1074 | + peers = peers->next; |
1070 | 1075 | }
|
1071 |
| - ngx_http_upstream_rr_peers_unlock(peers); |
1072 |
| - peers = peers->next; |
| 1076 | + buf = ngx_http_vhost_traffic_status_display_set_upstream_node(r, buf, &usn, vtsn); |
1073 | 1077 | }
|
1074 |
| - buf = ngx_http_vhost_traffic_status_display_set_upstream_node(r, buf, &usn, vtsn); |
1075 | 1078 | }
|
1076 | 1079 | }
|
1077 | 1080 | buf = ngx_http_vhost_traffic_status_display_ug_host(r, host, node->left, sentinel, base_peers, buf);
|
|
0 commit comments