Просмотр исходного кода

lib/connections: Fix race (fixes #4177)

Audrius Butkevicius 8 лет назад
Родитель
Сommit
9667a0a618
1 измененных файлов с 3 добавлено и 2 удалено
  1. 3 2
      lib/connections/kcp_listen.go

+ 3 - 2
lib/connections/kcp_listen.go

@@ -187,7 +187,6 @@ func (t *kcpListener) stunRenewal(listener net.PacketConn) {
 	client := stun.NewClientWithConnection(listener)
 	client := stun.NewClientWithConnection(listener)
 	client.SetSoftwareName("syncthing")
 	client.SetSoftwareName("syncthing")
 
 
-	var uri url.URL
 	var natType stun.NATType
 	var natType stun.NATType
 	var extAddr *stun.Host
 	var extAddr *stun.Host
 	var err error
 	var err error
@@ -227,10 +226,12 @@ func (t *kcpListener) stunRenewal(listener net.PacketConn) {
 
 
 			for {
 			for {
 				changed := false
 				changed := false
-				uri = *t.uri
+
+				uri := *t.uri
 				uri.Host = extAddr.TransportAddr()
 				uri.Host = extAddr.TransportAddr()
 
 
 				t.mut.Lock()
 				t.mut.Lock()
+
 				if t.address == nil || t.address.String() != uri.String() {
 				if t.address == nil || t.address.String() != uri.String() {
 					l.Infof("%s resolved external address %s (via %s)", t.uri, uri.String(), addr)
 					l.Infof("%s resolved external address %s (via %s)", t.uri, uri.String(), addr)
 					t.address = &uri
 					t.address = &uri