Explorar o código

lib/model: Fix lock order

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3823
AudriusButkevicius %!s(int64=9) %!d(string=hai) anos
pai
achega
aa3ef49dd7
Modificáronse 1 ficheiros con 2 adicións e 1 borrados
  1. 2 1
      lib/model/model.go

+ 2 - 1
lib/model/model.go

@@ -1347,10 +1347,11 @@ func (m *Model) AddConnection(conn connections.Connection, hello protocol.HelloR
 	l.Infof(`Device %s client is "%s %s" named "%s"`, deviceID, hello.ClientName, hello.ClientVersion, hello.DeviceName)
 	l.Infof(`Device %s client is "%s %s" named "%s"`, deviceID, hello.ClientName, hello.ClientVersion, hello.DeviceName)
 
 
 	conn.Start()
 	conn.Start()
+	m.pmut.Unlock()
 
 
+	// Acquires fmut, so has to be done outside of pmut.
 	cm := m.generateClusterConfig(deviceID)
 	cm := m.generateClusterConfig(deviceID)
 	conn.ClusterConfig(cm)
 	conn.ClusterConfig(cm)
-	m.pmut.Unlock()
 
 
 	device, ok := m.cfg.Devices()[deviceID]
 	device, ok := m.cfg.Devices()[deviceID]
 	if ok && (device.Name == "" || m.cfg.Options().OverwriteRemoteDevNames) {
 	if ok && (device.Name == "" || m.cfg.Options().OverwriteRemoteDevNames) {