Browse Source

fixed hub logic

afeiszli 3 years ago
parent
commit
33df27a721
2 changed files with 10 additions and 5 deletions
  1. 9 5
      logic/peers.go
  2. 1 0
      logic/util.go

+ 9 - 5
logic/peers.go

@@ -30,7 +30,7 @@ func GetHubPeer(networkName string) []models.Node {
 }
 }
 
 
 // GetNodePeers - fetches peers for a given 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 peers []models.Node
 	var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName)
 	var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName)
 	if err != nil {
 	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) {
 func GetPeersList(refnode *models.Node) ([]models.Node, error) {
 	var peers []models.Node
 	var peers []models.Node
 	var err error
 	var err error
+	var isP2S bool
 	var networkName = refnode.Network
 	var networkName = refnode.Network
 	var excludeRelayed = refnode.IsRelay != "yes"
 	var excludeRelayed = refnode.IsRelay != "yes"
 	var relayedNodeAddr string
 	var relayedNodeAddr string
 	if refnode.IsRelayed == "yes" {
 	if refnode.IsRelayed == "yes" {
 		relayedNodeAddr = refnode.Address
 		relayedNodeAddr = refnode.Address
 	}
 	}
+
 	network, err := GetNetwork(networkName)
 	network, err := GetNetwork(networkName)
 	if err != nil {
 	if err != nil {
 		return peers, err
 		return peers, err
 	} else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" {
 	} else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" {
-		return GetHubPeer(networkName), nil
+		isP2S = true
 	}
 	}
 	if relayedNodeAddr == "" {
 	if relayedNodeAddr == "" {
-		peers, err = GetNodePeers(networkName, excludeRelayed)
+		peers, err = GetNodePeers(networkName, excludeRelayed, isP2S)
 	} else {
 	} else {
 		var relayNode models.Node
 		var relayNode models.Node
 		relayNode, err = GetNodeRelay(networkName, relayedNodeAddr)
 		relayNode, err = GetNodeRelay(networkName, relayedNodeAddr)
@@ -120,7 +124,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
 			} else {
 			} else {
 				peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...)
 				peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...)
 			}
 			}
-			nodepeers, err := GetNodePeers(networkName, false)
+			nodepeers, err := GetNodePeers(networkName, false, isP2S)
 			if err == nil && peerNode.UDPHolePunch == "yes" {
 			if err == nil && peerNode.UDPHolePunch == "yes" {
 				for _, nodepeer := range nodepeers {
 				for _, nodepeer := range nodepeers {
 					if nodepeer.Address == peerNode.Address {
 					if nodepeer.Address == peerNode.Address {

+ 1 - 0
logic/util.go

@@ -187,6 +187,7 @@ func setPeerInfo(node *models.Node) models.Node {
 	peer.UDPHolePunch = node.UDPHolePunch
 	peer.UDPHolePunch = node.UDPHolePunch
 	peer.Address = node.Address
 	peer.Address = node.Address
 	peer.Address6 = node.Address6
 	peer.Address6 = node.Address6
+	peer.IsHub = node.IsHub
 	peer.EgressGatewayRanges = node.EgressGatewayRanges
 	peer.EgressGatewayRanges = node.EgressGatewayRanges
 	peer.IsEgressGateway = node.IsEgressGateway
 	peer.IsEgressGateway = node.IsEgressGateway
 	peer.IngressGatewayRange = node.IngressGatewayRange
 	peer.IngressGatewayRange = node.IngressGatewayRange