From 9667a0a618a7a5bf407292800554d5eabc9f604b Mon Sep 17 00:00:00 2001 From: Audrius Butkevicius Date: Wed, 7 Jun 2017 10:16:14 +0200 Subject: [PATCH] lib/connections: Fix race (fixes #4177) --- lib/connections/kcp_listen.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/connections/kcp_listen.go b/lib/connections/kcp_listen.go index c1f4f0bc8..b4a1fc485 100644 --- a/lib/connections/kcp_listen.go +++ b/lib/connections/kcp_listen.go @@ -187,7 +187,6 @@ func (t *kcpListener) stunRenewal(listener net.PacketConn) { client := stun.NewClientWithConnection(listener) client.SetSoftwareName("syncthing") - var uri url.URL var natType stun.NATType var extAddr *stun.Host var err error @@ -227,10 +226,12 @@ func (t *kcpListener) stunRenewal(listener net.PacketConn) { for { changed := false - uri = *t.uri + + uri := *t.uri uri.Host = extAddr.TransportAddr() t.mut.Lock() + if t.address == nil || t.address.String() != uri.String() { l.Infof("%s resolved external address %s (via %s)", t.uri, uri.String(), addr) t.address = &uri