From 33df27a721d97a499187128124317943fe6ceb2c Mon Sep 17 00:00:00 2001 From: afeiszli Date: Mon, 21 Feb 2022 11:08:45 -0500 Subject: [PATCH 1/3] fixed hub logic --- logic/peers.go | 14 +++++++++----- logic/util.go | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/logic/peers.go b/logic/peers.go index e01cef48..f31397d2 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -30,7 +30,7 @@ func GetHubPeer(networkName string) []models.Node { } // GetNodePeers - fetches peers for a given node -func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error) { +func GetNodePeers(networkName string, excludeRelayed bool, isP2S bool) ([]models.Node, error) { var peers []models.Node var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName) if err != nil { @@ -76,7 +76,9 @@ func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error } } } - peers = append(peers, peer) + if !isP2S || peer.IsHub == "yes" { + peers = append(peers, peer) + } } } @@ -87,20 +89,22 @@ func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error func GetPeersList(refnode *models.Node) ([]models.Node, error) { var peers []models.Node var err error + var isP2S bool var networkName = refnode.Network var excludeRelayed = refnode.IsRelay != "yes" var relayedNodeAddr string if refnode.IsRelayed == "yes" { relayedNodeAddr = refnode.Address } + network, err := GetNetwork(networkName) if err != nil { return peers, err } else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" { - return GetHubPeer(networkName), nil + isP2S = true } if relayedNodeAddr == "" { - peers, err = GetNodePeers(networkName, excludeRelayed) + peers, err = GetNodePeers(networkName, excludeRelayed, isP2S) } else { var relayNode models.Node relayNode, err = GetNodeRelay(networkName, relayedNodeAddr) @@ -120,7 +124,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) { } else { peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...) } - nodepeers, err := GetNodePeers(networkName, false) + nodepeers, err := GetNodePeers(networkName, false, isP2S) if err == nil && peerNode.UDPHolePunch == "yes" { for _, nodepeer := range nodepeers { if nodepeer.Address == peerNode.Address { diff --git a/logic/util.go b/logic/util.go index 513a109b..07ee61ed 100644 --- a/logic/util.go +++ b/logic/util.go @@ -187,6 +187,7 @@ func setPeerInfo(node *models.Node) models.Node { peer.UDPHolePunch = node.UDPHolePunch peer.Address = node.Address peer.Address6 = node.Address6 + peer.IsHub = node.IsHub peer.EgressGatewayRanges = node.EgressGatewayRanges peer.IsEgressGateway = node.IsEgressGateway peer.IngressGatewayRange = node.IngressGatewayRange From 11b3bc3c09116ecf142157572428f190c54873f4 Mon Sep 17 00:00:00 2001 From: afeiszli Date: Mon, 21 Feb 2022 11:11:46 -0500 Subject: [PATCH 2/3] fixed hub logic --- logic/peers.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/logic/peers.go b/logic/peers.go index f31397d2..a6af5c17 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -133,8 +133,9 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) { } } } - - peers = append(peers, peerNode) + if !isP2S || peerNode.IsHub == "yes" { + peers = append(peers, peerNode) + } } } return peers, err From ccf1293736ea2cf5f9e765a1a554adddc6df214f Mon Sep 17 00:00:00 2001 From: afeiszli Date: Mon, 21 Feb 2022 11:12:15 -0500 Subject: [PATCH 3/3] fixed hub logic --- logic/peers.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/logic/peers.go b/logic/peers.go index a6af5c17..e2eb5064 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -15,6 +15,7 @@ import ( ) // GetHubPeer - in HubAndSpoke networks, if not the hub, return the hub +/* func GetHubPeer(networkName string) []models.Node { var hubpeer = make([]models.Node, 0) servernodes, err := GetNetworkNodes(networkName) @@ -28,6 +29,7 @@ func GetHubPeer(networkName string) []models.Node { } return hubpeer } +*/ // GetNodePeers - fetches peers for a given node func GetNodePeers(networkName string, excludeRelayed bool, isP2S bool) ([]models.Node, error) {