@@ -55,9 +55,9 @@ static ngx_int_t ngx_http_check_get_shm_name(ngx_str_t *shm_name,
55
55
static ngx_shm_zone_t * ngx_shared_memory_find (ngx_cycle_t * cycle ,
56
56
ngx_str_t * name , void * tag );
57
57
static ngx_http_check_peer_shm_t * ngx_http_check_find_shm_peer (
58
- ngx_http_check_peers_shm_t * peers_shm , ngx_addr_t * addr );
58
+ ngx_http_check_peers_shm_t * peers_shm , ngx_addr_t * addr , ngx_str_t * upstream_name );
59
59
static void ngx_http_check_set_shm_peer (ngx_http_check_peer_shm_t * peer_shm ,
60
- ngx_http_check_peer_shm_t * opeer_shm , ngx_uint_t init_down );
60
+ ngx_http_check_peer_shm_t * opeer_shm , ngx_uint_t init_down , ngx_str_t * upstream_name );
61
61
static ngx_int_t ngx_http_upstream_check_init_shm_zone (
62
62
ngx_shm_zone_t * shm_zone , void * data );
63
63
@@ -1443,21 +1443,19 @@ ngx_http_upstream_check_init_shm_zone(ngx_shm_zone_t *shm_zone, void *data)
1443
1443
1444
1444
if (opeers_shm ) {
1445
1445
1446
- opeer_shm = ngx_http_check_find_shm_peer (opeers_shm ,
1447
- peer [i ].peer_addr );
1446
+ opeer_shm = ngx_http_check_find_shm_peer (opeers_shm ,peer [i ].peer_addr ,peer [i ].upstream_name );
1448
1447
if (opeer_shm ) {
1449
1448
ngx_log_debug1 (NGX_LOG_DEBUG_HTTP , shm_zone -> shm .log , 0 ,
1450
1449
"http upstream check: inherit opeer:%V" ,
1451
1450
& peer [i ].peer_addr -> name );
1452
1451
1453
- ngx_http_check_set_shm_peer (peer_shm , opeer_shm , 0 );
1454
-
1452
+ ngx_http_check_set_shm_peer (peer_shm , opeer_shm , 0 ,peer [i ].upstream_name );
1455
1453
continue ;
1456
1454
}
1457
1455
}
1458
1456
1459
1457
ucscf = peer [i ].conf ;
1460
- ngx_http_check_set_shm_peer (peer_shm , NULL , ucscf -> default_down );
1458
+ ngx_http_check_set_shm_peer (peer_shm , NULL , ucscf -> default_down , peer [ i ]. upstream_name );
1461
1459
}
1462
1460
1463
1461
peers -> peers_shm = peers_shm ;
@@ -1475,7 +1473,8 @@ ngx_http_upstream_check_init_shm_zone(ngx_shm_zone_t *shm_zone, void *data)
1475
1473
1476
1474
static ngx_http_check_peer_shm_t *
1477
1475
ngx_http_check_find_shm_peer (ngx_http_check_peers_shm_t * peers_shm ,
1478
- ngx_addr_t * addr )
1476
+ ngx_addr_t * addr ,
1477
+ ngx_str_t * upstream_name )
1479
1478
{
1480
1479
ngx_uint_t i ;
1481
1480
ngx_http_check_peer_shm_t * peer_shm ;
@@ -1484,11 +1483,12 @@ ngx_http_check_find_shm_peer(ngx_http_check_peers_shm_t *peers_shm,
1484
1483
1485
1484
peer_shm = & peers_shm -> peers [i ];
1486
1485
1487
- if (addr -> socklen != peer_shm -> socklen ) {
1488
- continue ;
1486
+ if (addr -> socklen != peer_shm -> socklen ) {
1487
+ continue ;
1489
1488
}
1490
-
1491
- if (ngx_memcmp (addr -> sockaddr , peer_shm -> sockaddr , addr -> socklen ) == 0 ) {
1489
+
1490
+ if (ngx_memcmp (addr -> sockaddr , peer_shm -> sockaddr , addr -> socklen ) == 0 && ngx_strcmp (upstream_name -> data ,peer_shm -> upstream_name -> data ) == 0 )
1491
+ {
1492
1492
return peer_shm ;
1493
1493
}
1494
1494
}
@@ -1500,7 +1500,8 @@ ngx_http_check_find_shm_peer(ngx_http_check_peers_shm_t *peers_shm,
1500
1500
static void
1501
1501
ngx_http_check_set_shm_peer (ngx_http_check_peer_shm_t * peer_shm ,
1502
1502
ngx_http_check_peer_shm_t * opeer_shm ,
1503
- ngx_uint_t init_down )
1503
+ ngx_uint_t init_down ,
1504
+ ngx_str_t * upstream_name )
1504
1505
{
1505
1506
1506
1507
if (opeer_shm ) {
@@ -1523,6 +1524,7 @@ ngx_http_check_set_shm_peer(ngx_http_check_peer_shm_t *peer_shm,
1523
1524
1524
1525
peer_shm -> down = init_down ;
1525
1526
}
1527
+ peer_shm -> upstream_name = upstream_name ;
1526
1528
}
1527
1529
1528
1530
0 commit comments