diff --git a/lib/model/model.go b/lib/model/model.go index 3167de7b5..45c0dad3b 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -164,6 +164,7 @@ var ( errDeviceUnknown = errors.New("unknown device") errDevicePaused = errors.New("device is paused") errDeviceIgnored = errors.New("device is ignored") + errDeviceRemoved = errors.New("device has been removed") ErrFolderPaused = errors.New("folder is paused") errFolderNotRunning = errors.New("folder is not running") errFolderMissing = errors.New("no such folder") @@ -2482,11 +2483,14 @@ func (m *model) CommitConfiguration(from, to config.Configuration) bool { m.evLogger.Log(events.DeviceResumed, map[string]string{"device": deviceID.String()}) } } + removedDevices := make([]protocol.DeviceID, 0, len(fromDevices)) m.fmut.Lock() for deviceID := range fromDevices { delete(m.deviceStatRefs, deviceID) + removedDevices = append(removedDevices, deviceID) } m.fmut.Unlock() + m.closeConns(removedDevices, errDeviceRemoved) m.globalRequestLimiter.setCapacity(1024 * to.Options.MaxConcurrentIncomingRequestKiB()) m.folderIOLimiter.setCapacity(to.Options.MaxFolderConcurrency())