diff --git a/controllers/node.go b/controllers/node.go index 2ff0456c..2c2ce043 100644 --- a/controllers/node.go +++ b/controllers/node.go @@ -650,7 +650,7 @@ func updateNode(w http.ResponseWriter, r *http.Request) { NodeID: newNode.ID.String(), NetID: newNode.Network, RelayedNodes: newNode.RelayedNodes, - }) + }, true) if err != nil { logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest")) return diff --git a/logic/relay.go b/logic/relay.go index 225c77dc..bd3c80bb 100644 --- a/logic/relay.go +++ b/logic/relay.go @@ -29,6 +29,6 @@ var RelayUpdates = func(currentNode, newNode *models.Node) bool { return false } -var ValidateRelay = func(relay models.RelayRequest) error { +var ValidateRelay = func(relay models.RelayRequest, update bool) error { return nil } diff --git a/pro/logic/relays.go b/pro/logic/relays.go index 6be0c8a7..6c06f8c0 100644 --- a/pro/logic/relays.go +++ b/pro/logic/relays.go @@ -44,7 +44,7 @@ func CreateRelay(relay models.RelayRequest) ([]models.Node, models.Node, error) if host.OS != "linux" { return returnnodes, models.Node{}, fmt.Errorf("only linux machines can be relay nodes") } - err = ValidateRelay(relay) + err = ValidateRelay(relay, false) if err != nil { return returnnodes, models.Node{}, err } @@ -101,14 +101,14 @@ func SetRelayedNodes(setRelayed bool, relay string, relayed []string) []models.N // } // ValidateRelay - checks if relay is valid -func ValidateRelay(relay models.RelayRequest) error { +func ValidateRelay(relay models.RelayRequest, update bool) error { var err error node, err := logic.GetNodeByID(relay.NodeID) if err != nil { return err } - if node.IsRelay { + if !update && node.IsRelay { return errors.New("node is already acting as a relay") } for _, relayedNodeID := range relay.RelayedNodes {