From 51edbbfd26a715bf63aeae33fb9073fca3aa5967 Mon Sep 17 00:00:00 2001 From: WofWca Date: Sat, 7 Sep 2024 14:39:20 +0400 Subject: [PATCH] fix(proxy): maybe memory leak on failed NAT check Maybe related: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40243 --- proxy/lib/snowflake.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/proxy/lib/snowflake.go b/proxy/lib/snowflake.go index a127b10..dd53f19 100644 --- a/proxy/lib/snowflake.go +++ b/proxy/lib/snowflake.go @@ -817,6 +817,11 @@ func (sf *SnowflakeProxy) checkNATType(config webrtc.Configuration, probeURL str if err != nil { return fmt.Errorf("Error making WebRTC connection: %w", err) } + defer func() { + if err := pc.Close(); err != nil { + log.Printf("Probetest: error calling pc.Close: %v", err) + } + }() offer := pc.LocalDescription() log.Printf("Probetest offer: \n\t%s", strings.ReplaceAll(offer.SDP, "\n", "\n\t")) @@ -874,8 +879,5 @@ func (sf *SnowflakeProxy) checkNATType(config webrtc.Configuration, probeURL str log.Printf("NAT Type measurement: %v -> %v\n", prevNATType, getCurrentNATType()) - if err := pc.Close(); err != nil { - log.Printf("error calling pc.Close: %v", err) - } return nil }