summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Frei <freisim93@gmail.com>2021-07-03 18:26:55 +0200
committerGitHub <noreply@github.com>2021-07-03 18:26:55 +0200
commit1921533c4cae1873d3cd63a28a590075ac7a48fc (patch)
tree0fc7d07d1a29708b0c186dad035c4fd56acd59cf
parent89e762fd6e4a7593d909cae5da189e1b88f38d31 (diff)
lib/connections: Fully dial resumed devices (#7798)
-rw-r--r--lib/connections/service.go18
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/connections/service.go b/lib/connections/service.go
index 8613626ce8..3848b26168 100644
--- a/lib/connections/service.go
+++ b/lib/connections/service.go
@@ -786,13 +786,23 @@ func (s *service) CommitConfiguration(from, to config.Configuration) bool {
func (s *service) checkAndSignalConnectLoopOnUpdatedDevices(from, to config.Configuration) {
oldDevices := from.DeviceMap()
+ dial := false
+ s.dialNowDevicesMut.Lock()
for _, dev := range to.Devices {
- oldDev, ok := oldDevices[dev.DeviceID]
- if !ok || !util.EqualStrings(oldDev.Addresses, dev.Addresses) {
- s.scheduleDialNow()
- break
+ if dev.Paused {
+ continue
}
+ if oldDev, ok := oldDevices[dev.DeviceID]; !ok || oldDev.Paused {
+ s.dialNowDevices[dev.DeviceID] = struct{}{}
+ dial = true
+ } else if !util.EqualStrings(oldDev.Addresses, dev.Addresses) {
+ dial = true
+ }
+ }
+ if dial {
+ s.scheduleDialNow()
}
+ s.dialNowDevicesMut.Unlock()
}
func (s *service) scheduleDialNow() {