Browse Source

relay functionality working

afeiszli 3 years ago
parent
commit
31ea969e3d
3 changed files with 17 additions and 7 deletions
  1. 4 2
      controllers/nodeGrpcController.go
  2. 11 5
      controllers/nodeHttpController.go
  3. 2 0
      controllers/relay.go

+ 4 - 2
controllers/nodeGrpcController.go

@@ -98,7 +98,6 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object)
 		return nil, err
 	}
 	relayupdate := false
-	oldRelayAddrs := node.RelayAddrs
 	if node.IsRelay == "yes" && len(newnode.RelayAddrs) > 0 {
 		for i, addr := range newnode.RelayAddrs {
 			if addr != node.RelayAddrs[i] {
@@ -111,7 +110,10 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object)
 		return nil, err
 	}
 	if relayupdate {
-		UpdateRelay(node.Network, oldRelayAddrs, node.RelayAddrs)
+		UpdateRelay(node.Network, node.RelayAddrs, newnode.RelayAddrs)
+		if err = functions.NetworkNodesUpdatePullChanges(node.Network); err != nil {
+			functions.PrintUserLog("netmaker", "error setting relay updates: " + err.Error(), 1)			
+		}
 	}
 	nodeData, err := json.Marshal(&newnode)
 	if err != nil {

+ 11 - 5
controllers/nodeHttpController.go

@@ -755,13 +755,16 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
 	}
 	newNode.PullChanges = "yes"
 	relayupdate := false
-	oldRelayAddrs := node.RelayAddrs
 	if node.IsRelay == "yes" && len(newNode.RelayAddrs) > 0 {
-		for i, addr := range newNode.RelayAddrs {
-			if addr != node.RelayAddrs[i] {
+		if len(newNode.RelayAddrs) != len(node.RelayAddrs) {
 				relayupdate = true
+		} else {
+			for i, addr := range newNode.RelayAddrs {
+					if addr != node.RelayAddrs[i] {
+							relayupdate = true
+					}
 			}
-		}		
+		}
 	}
 	err = node.Update(&newNode)
 	if err != nil {
@@ -769,7 +772,10 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 	if relayupdate {
-		UpdateRelay(node.Network, oldRelayAddrs, node.RelayAddrs)
+		UpdateRelay(node.Network, node.RelayAddrs, newNode.RelayAddrs)
+		if err = functions.NetworkNodesUpdatePullChanges(node.Network); err != nil {
+			functions.PrintUserLog("netmaker", "error setting relay updates: " + err.Error(), 1)			
+		}
 	}
 
 	if servercfg.IsDNSMode() {

+ 2 - 0
controllers/relay.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"errors"
 	"net/http"
+	"time"
 	"github.com/gorilla/mux"
 	"github.com/gravitl/netmaker/database"
 	"github.com/gravitl/netmaker/functions"
@@ -112,6 +113,7 @@ func ValidateRelay(relay models.RelayRequest) error {
 }
 
 func UpdateRelay(network string, oldAddrs []string, newAddrs []string) {
+	time.Sleep(time.Second/4)	
 	err := SetNodesDoNotPropagate("no", network, oldAddrs)
 	if err != nil {
 		functions.PrintUserLog("netmaker",err.Error(),1)