diff --git a/pkg/config/config.go b/pkg/config/config.go index 4eb2dfe40..44a4deaa8 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -15,8 +15,8 @@ type Config struct { MultiNode bool `yaml:"multi_node"` Development bool `yaml:"development"` - // Stun server - StunServer string `yaml:"stun_server"` + // STUN + StunServers []string `yaml:"stun_servers"` } func NewConfig(confString string) (*Config, error) { @@ -26,7 +26,9 @@ func NewConfig(confString string) (*Config, error) { RTCPort: 7881, UDPRangeStart: 10000, UDPRangeEnd: 11000, - StunServer: "stun.l.google.com:19302", + StunServers: []string{ + "stun.l.google.com:19302", + }, } if confString != "" { yaml.Unmarshal([]byte(confString), conf) diff --git a/pkg/node/node.go b/pkg/node/node.go index 05b1fc94d..9adf4c5b3 100644 --- a/pkg/node/node.go +++ b/pkg/node/node.go @@ -1,6 +1,8 @@ package node import ( + "errors" + "github.com/google/uuid" "github.com/google/wire" "github.com/pion/stun" @@ -45,7 +47,10 @@ func NewLocalNode(conf *config.Config) (*Node, error) { } func (n *Node) DiscoverNetworkInfo() error { - c, err := stun.Dial("udp", n.config.StunServer) + if len(n.config.StunServers) == 0 { + return errors.New("STUN servers are required but not defined") + } + c, err := stun.Dial("udp", n.config.StunServers[0]) if err != nil { return err }