Browse Source

added nil checks, handled empty map

0xdcarns 3 years ago
parent
commit
2de7beb31e
3 changed files with 8 additions and 7 deletions
  1. 5 4
      logic/util.go
  2. 1 1
      logic/wireguard.go
  3. 2 2
      netclient/wireguard/common.go

+ 5 - 4
logic/util.go

@@ -202,10 +202,11 @@ func StringSliceContains(slice []string, item string) bool {
 // sets the network server peers of a given node
 func setNetworkServerPeers(serverNode *models.Node) {
 	if currentPeersList, err := getSystemPeers(serverNode); err == nil {
-		if len(currentPeersList) > 0 {
-			if database.SetPeers(currentPeersList, serverNode.Network) {
-				logger.Log(1, "set new peers on network", serverNode.Network)
-			}
+		if currentPeersList == nil {
+			currentPeersList = make(map[string]string)
+		}
+		if database.SetPeers(currentPeersList, serverNode.Network) {
+			logger.Log(1, "set new peers on network", serverNode.Network)
 		}
 	} else {
 		logger.Log(1, "could not set peers on network", serverNode.Network, ":", err.Error())

+ 1 - 1
logic/wireguard.go

@@ -114,7 +114,7 @@ func getSystemPeers(node *models.Node) (map[string]string, error) {
 	if err != nil {
 		return nil, err
 	}
-	if len(device.Peers) > 0 {
+	if device.Peers != nil && len(device.Peers) > 0 {
 		for _, peer := range device.Peers {
 			if IsBase64(peer.PublicKey.String()) && peer.Endpoint != nil && CheckEndpoint(peer.Endpoint.String()) {
 				peers[peer.PublicKey.String()] = peer.Endpoint.String()

+ 2 - 2
netclient/wireguard/common.go

@@ -80,10 +80,10 @@ func SetPeers(iface string, node *models.Node, peers []wgtypes.PeerConfig) error
 		}
 	}
 
-	if len(devicePeers) > 0 {
+	if devicePeers != nil && len(devicePeers) > 0 {
 		for _, currentPeer := range devicePeers {
 			shouldDelete := true
-			if len(peers) > 0 {
+			if peers != nil && len(peers) > 0 {
 				for _, peer := range peers {
 					if peer.AllowedIPs[0].String() == currentPeer.AllowedIPs[0].String() {
 						shouldDelete = false