|
@@ -5,6 +5,7 @@ import (
|
|
"errors"
|
|
"errors"
|
|
"fmt"
|
|
"fmt"
|
|
"sort"
|
|
"sort"
|
|
|
|
+ "strings"
|
|
"time"
|
|
"time"
|
|
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
"github.com/go-playground/validator/v10"
|
|
@@ -18,6 +19,8 @@ import (
|
|
"golang.org/x/crypto/bcrypt"
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+const RELAY_NODE_ERR = "could not find relay for node "
|
|
|
|
+
|
|
// GetNetworkNodes - gets the nodes of a network
|
|
// GetNetworkNodes - gets the nodes of a network
|
|
func GetNetworkNodes(network string) ([]models.Node, error) {
|
|
func GetNetworkNodes(network string) ([]models.Node, error) {
|
|
var nodes []models.Node
|
|
var nodes []models.Node
|
|
@@ -103,7 +106,14 @@ func GetPeers(node *models.Node) ([]models.Node, error) {
|
|
}
|
|
}
|
|
peers, err := GetPeersList(node.Network, excludeIsRelayed, relayedNode)
|
|
peers, err := GetPeersList(node.Network, excludeIsRelayed, relayedNode)
|
|
if err != nil {
|
|
if err != nil {
|
|
- return nil, err
|
|
|
|
|
|
+ if strings.Contains(err.Error(), RELAY_NODE_ERR) {
|
|
|
|
+ peers, err = PeerListUnRelay(node.ID, node.Network)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return peers, nil
|
|
return peers, nil
|
|
}
|
|
}
|
|
@@ -498,7 +508,7 @@ func GetNodeRelay(network string, relayedNodeAddr string) (models.Node, error) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return relay, errors.New("could not find relay for node " + relayedNodeAddr)
|
|
|
|
|
|
+ return relay, errors.New(RELAY_NODE_ERR + relayedNodeAddr)
|
|
}
|
|
}
|
|
|
|
|
|
// GetNodeByIDorMacAddress - gets the node, if a mac address exists, but not id, then it should delete it and recreate in DB with new ID
|
|
// GetNodeByIDorMacAddress - gets the node, if a mac address exists, but not id, then it should delete it and recreate in DB with new ID
|