lib/config, lib/connections: Remove ListenAddresses hack (#6188)

This commit is contained in:
Simon Frei 2019-11-26 17:07:25 +01:00 committed by Jakob Borg
parent 8ced8ad562
commit b32821a586
9 changed files with 107 additions and 112 deletions

View File

@ -130,9 +130,9 @@ func NewWithFreePorts(myID protocol.DeviceID) (Configuration, error) {
return Configuration{}, errors.Wrap(err, "get free port (BEP)") return Configuration{}, errors.Wrap(err, "get free port (BEP)")
} }
if port == DefaultTCPPort { if port == DefaultTCPPort {
cfg.Options.ListenAddresses = []string{"default"} cfg.Options.RawListenAddresses = []string{"default"}
} else { } else {
cfg.Options.ListenAddresses = []string{ cfg.Options.RawListenAddresses = []string{
fmt.Sprintf("tcp://%s", net.JoinHostPort("0.0.0.0", strconv.Itoa(port))), fmt.Sprintf("tcp://%s", net.JoinHostPort("0.0.0.0", strconv.Itoa(port))),
"dynamic+https://relays.syncthing.net/endpoint", "dynamic+https://relays.syncthing.net/endpoint",
} }
@ -305,8 +305,8 @@ func (cfg *Configuration) clean() error {
existingFolders[folder.ID] = folder existingFolders[folder.ID] = folder
} }
cfg.Options.ListenAddresses = util.UniqueTrimmedStrings(cfg.Options.ListenAddresses) cfg.Options.RawListenAddresses = util.UniqueTrimmedStrings(cfg.Options.RawListenAddresses)
cfg.Options.GlobalAnnServers = util.UniqueTrimmedStrings(cfg.Options.GlobalAnnServers) cfg.Options.RawGlobalAnnServers = util.UniqueTrimmedStrings(cfg.Options.RawGlobalAnnServers)
if cfg.Version > 0 && cfg.Version < OldestHandledVersion { if cfg.Version > 0 && cfg.Version < OldestHandledVersion {
l.Warnf("Configuration version %d is deprecated. Attempting best effort conversion, but please verify manually.", cfg.Version) l.Warnf("Configuration version %d is deprecated. Attempting best effort conversion, but please verify manually.", cfg.Version)
@ -396,7 +396,7 @@ nextPendingDevice:
// Deprecated protocols are removed from the list of listeners and // Deprecated protocols are removed from the list of listeners and
// device addresses. So far just kcp*. // device addresses. So far just kcp*.
for _, prefix := range []string{"kcp"} { for _, prefix := range []string{"kcp"} {
cfg.Options.ListenAddresses = filterURLSchemePrefix(cfg.Options.ListenAddresses, prefix) cfg.Options.RawListenAddresses = filterURLSchemePrefix(cfg.Options.RawListenAddresses, prefix)
for i := range cfg.Devices { for i := range cfg.Devices {
dev := &cfg.Devices[i] dev := &cfg.Devices[i]
dev.Addresses = filterURLSchemePrefix(dev.Addresses, prefix) dev.Addresses = filterURLSchemePrefix(dev.Addresses, prefix)

View File

@ -37,8 +37,8 @@ func init() {
func TestDefaultValues(t *testing.T) { func TestDefaultValues(t *testing.T) {
expected := OptionsConfiguration{ expected := OptionsConfiguration{
ListenAddresses: []string{"default"}, RawListenAddresses: []string{"default"},
GlobalAnnServers: []string{"default"}, RawGlobalAnnServers: []string{"default"},
GlobalAnnEnabled: true, GlobalAnnEnabled: true,
LocalAnnEnabled: true, LocalAnnEnabled: true,
LocalAnnPort: 21027, LocalAnnPort: 21027,
@ -74,7 +74,7 @@ func TestDefaultValues(t *testing.T) {
CREnabled: true, CREnabled: true,
StunKeepaliveStartS: 180, StunKeepaliveStartS: 180,
StunKeepaliveMinS: 20, StunKeepaliveMinS: 20,
StunServers: []string{"default"}, RawStunServers: []string{"default"},
} }
cfg := New(device1) cfg := New(device1)
@ -175,16 +175,16 @@ func TestNoListenAddresses(t *testing.T) {
} }
expected := []string{""} expected := []string{""}
actual := cfg.Options().ListenAddresses actual := cfg.Options().RawListenAddresses
if diff, equal := messagediff.PrettyDiff(expected, actual); !equal { if diff, equal := messagediff.PrettyDiff(expected, actual); !equal {
t.Errorf("Unexpected ListenAddresses. Diff:\n%s", diff) t.Errorf("Unexpected RawListenAddresses. Diff:\n%s", diff)
} }
} }
func TestOverriddenValues(t *testing.T) { func TestOverriddenValues(t *testing.T) {
expected := OptionsConfiguration{ expected := OptionsConfiguration{
ListenAddresses: []string{"tcp://:23000"}, RawListenAddresses: []string{"tcp://:23000"},
GlobalAnnServers: []string{"udp4://syncthing.nym.se:22026"}, RawGlobalAnnServers: []string{"udp4://syncthing.nym.se:22026"},
GlobalAnnEnabled: false, GlobalAnnEnabled: false,
LocalAnnEnabled: false, LocalAnnEnabled: false,
LocalAnnPort: 42123, LocalAnnPort: 42123,
@ -222,7 +222,7 @@ func TestOverriddenValues(t *testing.T) {
CREnabled: false, CREnabled: false,
StunKeepaliveStartS: 9000, StunKeepaliveStartS: 9000,
StunKeepaliveMinS: 900, StunKeepaliveMinS: 900,
StunServers: []string{"foo"}, RawStunServers: []string{"foo"},
} }
os.Unsetenv("STNOUPGRADE") os.Unsetenv("STNOUPGRADE")
@ -424,20 +424,20 @@ func TestIssue1750(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
if cfg.Options().ListenAddresses[0] != "tcp://:23000" { if cfg.Options().RawListenAddresses[0] != "tcp://:23000" {
t.Errorf("%q != %q", cfg.Options().ListenAddresses[0], "tcp://:23000") t.Errorf("%q != %q", cfg.Options().RawListenAddresses[0], "tcp://:23000")
} }
if cfg.Options().ListenAddresses[1] != "tcp://:23001" { if cfg.Options().RawListenAddresses[1] != "tcp://:23001" {
t.Errorf("%q != %q", cfg.Options().ListenAddresses[1], "tcp://:23001") t.Errorf("%q != %q", cfg.Options().RawListenAddresses[1], "tcp://:23001")
} }
if cfg.Options().GlobalAnnServers[0] != "udp4://syncthing.nym.se:22026" { if cfg.Options().RawGlobalAnnServers[0] != "udp4://syncthing.nym.se:22026" {
t.Errorf("%q != %q", cfg.Options().GlobalAnnServers[0], "udp4://syncthing.nym.se:22026") t.Errorf("%q != %q", cfg.Options().RawGlobalAnnServers[0], "udp4://syncthing.nym.se:22026")
} }
if cfg.Options().GlobalAnnServers[1] != "udp4://syncthing.nym.se:22027" { if cfg.Options().RawGlobalAnnServers[1] != "udp4://syncthing.nym.se:22027" {
t.Errorf("%q != %q", cfg.Options().GlobalAnnServers[1], "udp4://syncthing.nym.se:22027") t.Errorf("%q != %q", cfg.Options().RawGlobalAnnServers[1], "udp4://syncthing.nym.se:22027")
} }
} }
@ -553,13 +553,13 @@ func TestNewSaveLoad(t *testing.T) {
func TestPrepare(t *testing.T) { func TestPrepare(t *testing.T) {
var cfg Configuration var cfg Configuration
if cfg.Folders != nil || cfg.Devices != nil || cfg.Options.ListenAddresses != nil { if cfg.Folders != nil || cfg.Devices != nil || cfg.Options.RawListenAddresses != nil {
t.Error("Expected nil") t.Error("Expected nil")
} }
cfg.prepare(device1) cfg.prepare(device1)
if cfg.Folders == nil || cfg.Devices == nil || cfg.Options.ListenAddresses == nil { if cfg.Folders == nil || cfg.Devices == nil || cfg.Options.RawListenAddresses == nil {
t.Error("Unexpected nil") t.Error("Unexpected nil")
} }
} }
@ -580,7 +580,7 @@ func TestCopy(t *testing.T) {
cfg.Devices[0].Addresses[0] = "wrong" cfg.Devices[0].Addresses[0] = "wrong"
cfg.Folders[0].Devices[0].DeviceID = protocol.DeviceID{0, 1, 2, 3} cfg.Folders[0].Devices[0].DeviceID = protocol.DeviceID{0, 1, 2, 3}
cfg.Options.ListenAddresses[0] = "wrong" cfg.Options.RawListenAddresses[0] = "wrong"
cfg.GUI.APIKey = "wrong" cfg.GUI.APIKey = "wrong"
bsChanged, err := json.MarshalIndent(cfg, "", " ") bsChanged, err := json.MarshalIndent(cfg, "", " ")
@ -771,7 +771,7 @@ func TestV14ListenAddressesMigration(t *testing.T) {
cfg := Configuration{ cfg := Configuration{
Version: 13, Version: 13,
Options: OptionsConfiguration{ Options: OptionsConfiguration{
ListenAddresses: tc[0], RawListenAddresses: tc[0],
DeprecatedRelayServers: tc[1], DeprecatedRelayServers: tc[1],
}, },
} }
@ -781,8 +781,8 @@ func TestV14ListenAddressesMigration(t *testing.T) {
} }
sort.Strings(tc[2]) sort.Strings(tc[2])
if !reflect.DeepEqual(cfg.Options.ListenAddresses, tc[2]) { if !reflect.DeepEqual(cfg.Options.RawListenAddresses, tc[2]) {
t.Errorf("Migration error; actual %#v != expected %#v", cfg.Options.ListenAddresses, tc[2]) t.Errorf("Migration error; actual %#v != expected %#v", cfg.Options.RawListenAddresses, tc[2])
} }
} }
} }

View File

@ -216,12 +216,12 @@ func migrateToConfigV18(cfg *Configuration) {
func migrateToConfigV15(cfg *Configuration) { func migrateToConfigV15(cfg *Configuration) {
// Undo v0.13.0 broken migration // Undo v0.13.0 broken migration
for i, addr := range cfg.Options.GlobalAnnServers { for i, addr := range cfg.Options.RawGlobalAnnServers {
switch addr { switch addr {
case "default-v4v2/": case "default-v4v2/":
cfg.Options.GlobalAnnServers[i] = "default-v4" cfg.Options.RawGlobalAnnServers[i] = "default-v4"
case "default-v6v2/": case "default-v6v2/":
cfg.Options.GlobalAnnServers[i] = "default-v6" cfg.Options.RawGlobalAnnServers[i] = "default-v6"
} }
} }
} }
@ -248,9 +248,9 @@ func migrateToConfigV14(cfg *Configuration) {
hasDefault := false hasDefault := false
for _, raddr := range cfg.Options.DeprecatedRelayServers { for _, raddr := range cfg.Options.DeprecatedRelayServers {
if raddr == "dynamic+https://relays.syncthing.net/endpoint" { if raddr == "dynamic+https://relays.syncthing.net/endpoint" {
for i, addr := range cfg.Options.ListenAddresses { for i, addr := range cfg.Options.RawListenAddresses {
if addr == "tcp://0.0.0.0:22000" { if addr == "tcp://0.0.0.0:22000" {
cfg.Options.ListenAddresses[i] = "default" cfg.Options.RawListenAddresses[i] = "default"
hasDefault = true hasDefault = true
break break
} }
@ -269,16 +269,16 @@ func migrateToConfigV14(cfg *Configuration) {
if addr == "" { if addr == "" {
continue continue
} }
cfg.Options.ListenAddresses = append(cfg.Options.ListenAddresses, addr) cfg.Options.RawListenAddresses = append(cfg.Options.RawListenAddresses, addr)
} }
cfg.Options.DeprecatedRelayServers = nil cfg.Options.DeprecatedRelayServers = nil
// For consistency // For consistency
sort.Strings(cfg.Options.ListenAddresses) sort.Strings(cfg.Options.RawListenAddresses)
var newAddrs []string var newAddrs []string
for _, addr := range cfg.Options.GlobalAnnServers { for _, addr := range cfg.Options.RawGlobalAnnServers {
uri, err := url.Parse(addr) uri, err := url.Parse(addr)
if err != nil { if err != nil {
// That's odd. Skip the broken address. // That's odd. Skip the broken address.
@ -291,7 +291,7 @@ func migrateToConfigV14(cfg *Configuration) {
newAddrs = append(newAddrs, addr) newAddrs = append(newAddrs, addr)
} }
cfg.Options.GlobalAnnServers = newAddrs cfg.Options.RawGlobalAnnServers = newAddrs
for i, fcfg := range cfg.Folders { for i, fcfg := range cfg.Folders {
if fcfg.DeprecatedReadOnly { if fcfg.DeprecatedReadOnly {
@ -315,9 +315,9 @@ func migrateToConfigV13(cfg *Configuration) {
func migrateToConfigV12(cfg *Configuration) { func migrateToConfigV12(cfg *Configuration) {
// Change listen address schema // Change listen address schema
for i, addr := range cfg.Options.ListenAddresses { for i, addr := range cfg.Options.RawListenAddresses {
if len(addr) > 0 && !strings.HasPrefix(addr, "tcp://") { if len(addr) > 0 && !strings.HasPrefix(addr, "tcp://") {
cfg.Options.ListenAddresses[i] = util.Address("tcp", addr) cfg.Options.RawListenAddresses[i] = util.Address("tcp", addr)
} }
} }
@ -332,7 +332,7 @@ func migrateToConfigV12(cfg *Configuration) {
// Use new discovery server // Use new discovery server
var newDiscoServers []string var newDiscoServers []string
var useDefault bool var useDefault bool
for _, addr := range cfg.Options.GlobalAnnServers { for _, addr := range cfg.Options.RawGlobalAnnServers {
if addr == "udp4://announce.syncthing.net:22026" { if addr == "udp4://announce.syncthing.net:22026" {
useDefault = true useDefault = true
} else if addr == "udp6://announce-v6.syncthing.net:22026" { } else if addr == "udp6://announce-v6.syncthing.net:22026" {
@ -344,7 +344,7 @@ func migrateToConfigV12(cfg *Configuration) {
if useDefault { if useDefault {
newDiscoServers = append(newDiscoServers, "default") newDiscoServers = append(newDiscoServers, "default")
} }
cfg.Options.GlobalAnnServers = newDiscoServers cfg.Options.RawGlobalAnnServers = newDiscoServers
// Use new multicast group // Use new multicast group
if cfg.Options.LocalAnnMCAddr == "[ff32::5222]:21026" { if cfg.Options.LocalAnnMCAddr == "[ff32::5222]:21026" {

View File

@ -9,12 +9,13 @@ package config
import ( import (
"fmt" "fmt"
"github.com/syncthing/syncthing/lib/rand"
"github.com/syncthing/syncthing/lib/util" "github.com/syncthing/syncthing/lib/util"
) )
type OptionsConfiguration struct { type OptionsConfiguration struct {
ListenAddresses []string `xml:"listenAddress" json:"listenAddresses" default:"default"` RawListenAddresses []string `xml:"listenAddress" json:"listenAddresses" default:"default"`
GlobalAnnServers []string `xml:"globalAnnounceServer" json:"globalAnnounceServers" default:"default" restart:"true"` RawGlobalAnnServers []string `xml:"globalAnnounceServer" json:"globalAnnounceServers" default:"default" restart:"true"`
GlobalAnnEnabled bool `xml:"globalAnnounceEnabled" json:"globalAnnounceEnabled" default:"true" restart:"true"` GlobalAnnEnabled bool `xml:"globalAnnounceEnabled" json:"globalAnnounceEnabled" default:"true" restart:"true"`
LocalAnnEnabled bool `xml:"localAnnounceEnabled" json:"localAnnounceEnabled" default:"true" restart:"true"` LocalAnnEnabled bool `xml:"localAnnounceEnabled" json:"localAnnounceEnabled" default:"true" restart:"true"`
LocalAnnPort int `xml:"localAnnouncePort" json:"localAnnouncePort" default:"21027" restart:"true"` LocalAnnPort int `xml:"localAnnouncePort" json:"localAnnouncePort" default:"21027" restart:"true"`
@ -56,7 +57,7 @@ type OptionsConfiguration struct {
CREnabled bool `xml:"crashReportingEnabled" json:"crashReportingEnabled" default:"true" restart:"true"` CREnabled bool `xml:"crashReportingEnabled" json:"crashReportingEnabled" default:"true" restart:"true"`
StunKeepaliveStartS int `xml:"stunKeepaliveStartS" json:"stunKeepaliveStartS" default:"180"` // 0 for off StunKeepaliveStartS int `xml:"stunKeepaliveStartS" json:"stunKeepaliveStartS" default:"180"` // 0 for off
StunKeepaliveMinS int `xml:"stunKeepaliveMinS" json:"stunKeepaliveMinS" default:"20"` // 0 for off StunKeepaliveMinS int `xml:"stunKeepaliveMinS" json:"stunKeepaliveMinS" default:"20"` // 0 for off
StunServers []string `xml:"stunServer" json:"stunServers" default:"default"` RawStunServers []string `xml:"stunServer" json:"stunServers" default:"default"`
DatabaseTuning Tuning `xml:"databaseTuning" json:"databaseTuning" restart:"true"` DatabaseTuning Tuning `xml:"databaseTuning" json:"databaseTuning" restart:"true"`
DeprecatedUPnPEnabled bool `xml:"upnpEnabled,omitempty" json:"-"` DeprecatedUPnPEnabled bool `xml:"upnpEnabled,omitempty" json:"-"`
@ -69,10 +70,10 @@ type OptionsConfiguration struct {
func (opts OptionsConfiguration) Copy() OptionsConfiguration { func (opts OptionsConfiguration) Copy() OptionsConfiguration {
optsCopy := opts optsCopy := opts
optsCopy.ListenAddresses = make([]string, len(opts.ListenAddresses)) optsCopy.RawListenAddresses = make([]string, len(opts.RawListenAddresses))
copy(optsCopy.ListenAddresses, opts.ListenAddresses) copy(optsCopy.RawListenAddresses, opts.RawListenAddresses)
optsCopy.GlobalAnnServers = make([]string, len(opts.GlobalAnnServers)) optsCopy.RawGlobalAnnServers = make([]string, len(opts.RawGlobalAnnServers))
copy(optsCopy.GlobalAnnServers, opts.GlobalAnnServers) copy(optsCopy.RawGlobalAnnServers, opts.RawGlobalAnnServers)
optsCopy.AlwaysLocalNets = make([]string, len(opts.AlwaysLocalNets)) optsCopy.AlwaysLocalNets = make([]string, len(opts.AlwaysLocalNets))
copy(optsCopy.AlwaysLocalNets, opts.AlwaysLocalNets) copy(optsCopy.AlwaysLocalNets, opts.AlwaysLocalNets)
optsCopy.UnackedNotificationIDs = make([]string, len(opts.UnackedNotificationIDs)) optsCopy.UnackedNotificationIDs = make([]string, len(opts.UnackedNotificationIDs))
@ -97,3 +98,57 @@ func (opts OptionsConfiguration) RequiresRestartOnly() OptionsConfiguration {
func (opts OptionsConfiguration) IsStunDisabled() bool { func (opts OptionsConfiguration) IsStunDisabled() bool {
return opts.StunKeepaliveMinS < 1 || opts.StunKeepaliveStartS < 1 || !opts.NATEnabled return opts.StunKeepaliveMinS < 1 || opts.StunKeepaliveStartS < 1 || !opts.NATEnabled
} }
func (opts OptionsConfiguration) ListenAddresses() []string {
var addresses []string
for _, addr := range opts.RawListenAddresses {
switch addr {
case "default":
addresses = append(addresses, DefaultListenAddresses...)
default:
addresses = append(addresses, addr)
}
}
return util.UniqueTrimmedStrings(addresses)
}
func (opts OptionsConfiguration) StunServers() []string {
var addresses []string
for _, addr := range opts.RawStunServers {
switch addr {
case "default":
defaultPrimaryAddresses := make([]string, len(DefaultPrimaryStunServers))
copy(defaultPrimaryAddresses, DefaultPrimaryStunServers)
rand.Shuffle(defaultPrimaryAddresses)
addresses = append(addresses, defaultPrimaryAddresses...)
defaultSecondaryAddresses := make([]string, len(DefaultSecondaryStunServers))
copy(defaultSecondaryAddresses, DefaultSecondaryStunServers)
rand.Shuffle(defaultSecondaryAddresses)
addresses = append(addresses, defaultSecondaryAddresses...)
default:
addresses = append(addresses, addr)
}
}
addresses = util.UniqueTrimmedStrings(addresses)
return addresses
}
func (opts OptionsConfiguration) GlobalDiscoveryServers() []string {
var servers []string
for _, srv := range opts.RawGlobalAnnServers {
switch srv {
case "default":
servers = append(servers, DefaultDiscoveryServers...)
case "default-v4":
servers = append(servers, DefaultDiscoveryServersV4...)
case "default-v6":
servers = append(servers, DefaultDiscoveryServersV6...)
default:
servers = append(servers, srv)
}
}
return util.UniqueTrimmedStrings(servers)
}

View File

@ -14,9 +14,7 @@ import (
"github.com/syncthing/syncthing/lib/events" "github.com/syncthing/syncthing/lib/events"
"github.com/syncthing/syncthing/lib/osutil" "github.com/syncthing/syncthing/lib/osutil"
"github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/protocol"
"github.com/syncthing/syncthing/lib/rand"
"github.com/syncthing/syncthing/lib/sync" "github.com/syncthing/syncthing/lib/sync"
"github.com/syncthing/syncthing/lib/util"
) )
// The Committer interface is implemented by objects that need to know about // The Committer interface is implemented by objects that need to know about
@ -87,10 +85,6 @@ type Wrapper interface {
IgnoredDevice(id protocol.DeviceID) bool IgnoredDevice(id protocol.DeviceID) bool
IgnoredFolder(device protocol.DeviceID, folder string) bool IgnoredFolder(device protocol.DeviceID, folder string) bool
ListenAddresses() []string
GlobalDiscoveryServers() []string
StunServers() []string
Subscribe(c Committer) Subscribe(c Committer)
Unsubscribe(c Committer) Unsubscribe(c Committer)
} }
@ -108,30 +102,6 @@ type wrapper struct {
requiresRestart uint32 // an atomic bool requiresRestart uint32 // an atomic bool
} }
func (w *wrapper) StunServers() []string {
var addresses []string
for _, addr := range w.cfg.Options.StunServers {
switch addr {
case "default":
defaultPrimaryAddresses := make([]string, len(DefaultPrimaryStunServers))
copy(defaultPrimaryAddresses, DefaultPrimaryStunServers)
rand.Shuffle(defaultPrimaryAddresses)
addresses = append(addresses, defaultPrimaryAddresses...)
defaultSecondaryAddresses := make([]string, len(DefaultSecondaryStunServers))
copy(defaultSecondaryAddresses, DefaultSecondaryStunServers)
rand.Shuffle(defaultSecondaryAddresses)
addresses = append(addresses, defaultSecondaryAddresses...)
default:
addresses = append(addresses, addr)
}
}
addresses = util.UniqueTrimmedStrings(addresses)
return addresses
}
// Wrap wraps an existing Configuration structure and ties it to a file on // Wrap wraps an existing Configuration structure and ties it to a file on
// disk. // disk.
func Wrap(path string, cfg Configuration, evLogger events.Logger) Wrapper { func Wrap(path string, cfg Configuration, evLogger events.Logger) Wrapper {
@ -456,36 +426,6 @@ func (w *wrapper) Save() error {
return nil return nil
} }
func (w *wrapper) GlobalDiscoveryServers() []string {
var servers []string
for _, srv := range w.Options().GlobalAnnServers {
switch srv {
case "default":
servers = append(servers, DefaultDiscoveryServers...)
case "default-v4":
servers = append(servers, DefaultDiscoveryServersV4...)
case "default-v6":
servers = append(servers, DefaultDiscoveryServersV6...)
default:
servers = append(servers, srv)
}
}
return util.UniqueTrimmedStrings(servers)
}
func (w *wrapper) ListenAddresses() []string {
var addresses []string
for _, addr := range w.Options().ListenAddresses {
switch addr {
case "default":
addresses = append(addresses, DefaultListenAddresses...)
default:
addresses = append(addresses, addr)
}
}
return util.UniqueTrimmedStrings(addresses)
}
func (w *wrapper) RequiresRestart() bool { func (w *wrapper) RequiresRestart() bool {
return atomic.LoadUint32(&w.requiresRestart) != 0 return atomic.LoadUint32(&w.requiresRestart) != 0
} }

View File

@ -582,7 +582,7 @@ func (s *service) CommitConfiguration(from, to config.Configuration) bool {
s.listenersMut.Lock() s.listenersMut.Lock()
seen := make(map[string]struct{}) seen := make(map[string]struct{})
for _, addr := range config.Wrap("", to, s.evLogger).ListenAddresses() { for _, addr := range to.Options.ListenAddresses() {
if addr == "" { if addr == "" {
// We can get an empty address if there is an empty listener // We can get an empty address if there is an empty listener
// element in the config, indicating no listeners should be // element in the config, indicating no listeners should be

View File

@ -131,7 +131,7 @@ func (s *Service) serve(ctx context.Context) {
l.Debugf("Starting stun for %s", s) l.Debugf("Starting stun for %s", s)
for _, addr := range s.cfg.StunServers() { for _, addr := range s.cfg.Options().StunServers() {
// This blocks until we hit an exit condition or there are issues with the STUN server. // This blocks until we hit an exit condition or there are issues with the STUN server.
// This returns a boolean signifying if a different STUN server should be tried (oppose to the whole thing // This returns a boolean signifying if a different STUN server should be tried (oppose to the whole thing
// shutting down and this winding itself down. // shutting down and this winding itself down.

View File

@ -262,7 +262,7 @@ func (a *App) startup() error {
a.mainService.Add(connectionsService) a.mainService.Add(connectionsService)
if a.cfg.Options().GlobalAnnEnabled { if a.cfg.Options().GlobalAnnEnabled {
for _, srv := range a.cfg.GlobalDiscoveryServers() { for _, srv := range a.cfg.Options().GlobalDiscoveryServers() {
l.Infoln("Using discovery server", srv) l.Infoln("Using discovery server", srv)
gd, err := discover.NewGlobal(srv, a.cert, connectionsService, a.evLogger) gd, err := discover.NewGlobal(srv, a.cert, connectionsService, a.evLogger)
if err != nil { if err != nil {

View File

@ -192,7 +192,7 @@ func (s *Service) reportData(urVersion int, preview bool) map[string]interface{}
res["deviceUses"] = deviceUses res["deviceUses"] = deviceUses
defaultAnnounceServersDNS, defaultAnnounceServersIP, otherAnnounceServers := 0, 0, 0 defaultAnnounceServersDNS, defaultAnnounceServersIP, otherAnnounceServers := 0, 0, 0
for _, addr := range opts.GlobalAnnServers { for _, addr := range opts.RawGlobalAnnServers {
if addr == "default" || addr == "default-v4" || addr == "default-v6" { if addr == "default" || addr == "default-v4" || addr == "default-v6" {
defaultAnnounceServersDNS++ defaultAnnounceServersDNS++
} else { } else {
@ -208,7 +208,7 @@ func (s *Service) reportData(urVersion int, preview bool) map[string]interface{}
} }
defaultRelayServers, otherRelayServers := 0, 0 defaultRelayServers, otherRelayServers := 0, 0
for _, addr := range s.cfg.ListenAddresses() { for _, addr := range s.cfg.Options().ListenAddresses() {
switch { switch {
case addr == "dynamic+https://relays.syncthing.net/endpoint": case addr == "dynamic+https://relays.syncthing.net/endpoint":
defaultRelayServers++ defaultRelayServers++