From b22ca735a895f0cfab6d520ad21339b3c9559293 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Wed, 14 Jul 2021 12:34:39 -0700 Subject: [PATCH 1/3] Catch exceptions from UdpClient.Recieve Common occurrance: SocketException: Connection was closed by remote host --- Open.Nat/Discovery/Searcher.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Open.Nat/Discovery/Searcher.cs b/Open.Nat/Discovery/Searcher.cs index b409fc6..5551612 100644 --- a/Open.Nat/Discovery/Searcher.cs +++ b/Open.Nat/Discovery/Searcher.cs @@ -101,10 +101,18 @@ private void Receive(CancellationToken cancelationToken) var localHost = ((IPEndPoint)client.Client.LocalEndPoint).Address; var receivedFrom = new IPEndPoint(IPAddress.None, 0); - var buffer = client.Receive(ref receivedFrom); - var device = AnalyseReceivedResponse(localHost, buffer, receivedFrom); + try + { + var buffer = client.Receive(ref receivedFrom); + var device = AnalyseReceivedResponse(localHost, buffer, receivedFrom); - if (device != null) RaiseDeviceFound(device); + if (device != null) RaiseDeviceFound(device); + } + catch(Exception e) + { + NatDiscoverer.TraceSource.LogError("Error receiving {0} - Details:", GetType().Name); + NatDiscoverer.TraceSource.LogError(e.ToString()); + } } } From 0c5099278870a09a37593bafc9922b5a47284a60 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Mon, 10 Jan 2022 14:07:07 -0800 Subject: [PATCH 2/3] Made requested changes Moved try/catch to Search's while loop Used tabs, not spaces Removed unnecessary line --- Open.Nat/Discovery/Searcher.cs | 37 +++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/Open.Nat/Discovery/Searcher.cs b/Open.Nat/Discovery/Searcher.cs index 5551612..4fe67d4 100644 --- a/Open.Nat/Discovery/Searcher.cs +++ b/Open.Nat/Discovery/Searcher.cs @@ -51,8 +51,15 @@ public Task> Search(CancellationToken cancelationToken) NatDiscoverer.TraceSource.LogInfo("Searching for: {0}", GetType().Name); while (!cancelationToken.IsCancellationRequested) { - Discover(cancelationToken); - Receive(cancelationToken); + try + { + Discover(cancelationToken); + Receive(cancelationToken); + } + catch (Exception e) + { + NatDiscoverer.TraceSource.LogError(e.ToString()); + } } CloseUdpClients(); }, cancelationToken) @@ -66,8 +73,15 @@ await Task.Factory.StartNew(_ => NatDiscoverer.TraceSource.LogInfo("Searching for: {0}", GetType().Name); while (!cancelationToken.IsCancellationRequested) { - Discover(cancelationToken); - Receive(cancelationToken); + try + { + Discover(cancelationToken); + Receive(cancelationToken); + } + catch (Exception e) + { + NatDiscoverer.TraceSource.LogError(e.ToString()); + } } CloseUdpClients(); }, null, cancelationToken); @@ -101,18 +115,9 @@ private void Receive(CancellationToken cancelationToken) var localHost = ((IPEndPoint)client.Client.LocalEndPoint).Address; var receivedFrom = new IPEndPoint(IPAddress.None, 0); - try - { - var buffer = client.Receive(ref receivedFrom); - var device = AnalyseReceivedResponse(localHost, buffer, receivedFrom); - - if (device != null) RaiseDeviceFound(device); - } - catch(Exception e) - { - NatDiscoverer.TraceSource.LogError("Error receiving {0} - Details:", GetType().Name); - NatDiscoverer.TraceSource.LogError(e.ToString()); - } + var buffer = client.Receive(ref receivedFrom); + var device = AnalyseReceivedResponse(localHost, buffer, receivedFrom); + if (device != null) RaiseDeviceFound(device); } } From b1f4d12e963f7de4c84467c9afa2c01063a5e64d Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Mon, 10 Jan 2022 14:07:55 -0800 Subject: [PATCH 3/3] restored new line --- Open.Nat/Discovery/Searcher.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Open.Nat/Discovery/Searcher.cs b/Open.Nat/Discovery/Searcher.cs index 4fe67d4..cb9b2e6 100644 --- a/Open.Nat/Discovery/Searcher.cs +++ b/Open.Nat/Discovery/Searcher.cs @@ -117,6 +117,7 @@ private void Receive(CancellationToken cancelationToken) var receivedFrom = new IPEndPoint(IPAddress.None, 0); var buffer = client.Receive(ref receivedFrom); var device = AnalyseReceivedResponse(localHost, buffer, receivedFrom); + if (device != null) RaiseDeviceFound(device); } }