瀏覽代碼

lib/connections: Fully dial resumed devices (#7798)

Simon Frei 4 年之前
父節點
當前提交
1921533c4c
共有 1 個文件被更改,包括 14 次插入4 次删除
  1. 14 4
      lib/connections/service.go

+ 14 - 4
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) {
 func (s *service) checkAndSignalConnectLoopOnUpdatedDevices(from, to config.Configuration) {
 	oldDevices := from.DeviceMap()
 	oldDevices := from.DeviceMap()
+	dial := false
+	s.dialNowDevicesMut.Lock()
 	for _, dev := range to.Devices {
 	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() {
 func (s *service) scheduleDialNow() {