Skip to content

Commit 4237a34

Browse files
committed
cluster: fix origin addr check
1 parent ef33be4 commit 4237a34

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

cluster.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ func newClusterState(
411411
var nodes []*clusterNode
412412
for i, slotNode := range slot.Nodes {
413413
addr := slotNode.Addr
414-
if !isLoopbackOrigin && isLoopbackAddr(addr) {
414+
if !isLoopbackOrigin && useOriginAddr(origin, addr) {
415415
addr = origin
416416
}
417417

@@ -1494,6 +1494,29 @@ func (c *ClusterClient) PSubscribe(channels ...string) *PubSub {
14941494
return pubsub
14951495
}
14961496

1497+
func useOriginAddr(originAddr, nodeAddr string) bool {
1498+
nodeHost, nodePort, err := net.SplitHostPort(nodeAddr)
1499+
if err != nil {
1500+
return false
1501+
}
1502+
1503+
nodeIP := net.ParseIP(nodeHost)
1504+
if nodeIP == nil {
1505+
return false
1506+
}
1507+
1508+
if !nodeIP.IsLoopback() {
1509+
return false
1510+
}
1511+
1512+
_, originPort, err := net.SplitHostPort(originAddr)
1513+
if err != nil {
1514+
return false
1515+
}
1516+
1517+
return nodePort == originPort
1518+
}
1519+
14971520
func isLoopbackAddr(addr string) bool {
14981521
host, _, err := net.SplitHostPort(addr)
14991522
if err != nil {

0 commit comments

Comments
 (0)