From 3a6ebb84824299be9c9c29e0e7657684c1b42ace Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Mon, 20 Jun 2022 19:36:45 +0200 Subject: [PATCH] lib/config, lib/model: Warn about two-way introducer (fixes #8393) (#8395) --- lib/config/deviceconfiguration.go | 8 ++++++++ lib/model/model.go | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/lib/config/deviceconfiguration.go b/lib/config/deviceconfiguration.go index 3a85b0933..65011f3b7 100644 --- a/lib/config/deviceconfiguration.go +++ b/lib/config/deviceconfiguration.go @@ -7,6 +7,7 @@ package config import ( + "fmt" "sort" ) @@ -65,3 +66,10 @@ func deduplicateObservedFoldersToMap(input []ObservedFolder) map[string]Observed return output } + +func (cfg *DeviceConfiguration) Description() string { + if cfg.Name == "" { + return fmt.Sprintf("%s", cfg.DeviceID.Short()) + } + return fmt.Sprintf("%s (%s)", cfg.Name, cfg.DeviceID.Short()) +} diff --git a/lib/model/model.go b/lib/model/model.go index 0aa529985..042a69d3d 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -1198,6 +1198,13 @@ func (m *model) ClusterConfig(deviceID protocol.DeviceID, cm protocol.ClusterCon ccDeviceInfos[folder.ID] = info } + for _, info := range ccDeviceInfos { + if deviceCfg.Introducer && info.local.Introducer { + l.Warnf("Remote %v is an introducer to us, and we are to them - only one should be introducer to the other, see https://docs.syncthing.net/users/introducer.html", deviceCfg.Description()) + } + break + } + // Needs to happen outside of the fmut, as can cause CommitConfiguration if deviceCfg.AutoAcceptFolders { w, _ := m.cfg.Modify(func(cfg *config.Configuration) {