From 18f7000d76df69210298ba13544a233c6e52f98e Mon Sep 17 00:00:00 2001 From: Jonathan Arndt Date: Fri, 15 May 2026 13:45:50 -0700 Subject: [PATCH] fix: add udpClient behavior to throttle receive errors and reset upon valid traffic arrival --- src/PepperDash.Core/Comm/GenericUdpClient.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/PepperDash.Core/Comm/GenericUdpClient.cs b/src/PepperDash.Core/Comm/GenericUdpClient.cs index 2c2d0f1c..41792537 100644 --- a/src/PepperDash.Core/Comm/GenericUdpClient.cs +++ b/src/PepperDash.Core/Comm/GenericUdpClient.cs @@ -23,6 +23,7 @@ namespace PepperDash.Core private UdpClient client; private CancellationTokenSource receiveCancellationTokenSource; private bool connectEnabled; + private bool connectionRefusedLogged; private SocketStatus clientStatus = SocketStatus.SOCKET_STATUS_NO_CONNECT; /// @@ -367,6 +368,8 @@ namespace PepperDash.Core if (bytes == null || bytes.Length == 0) continue; + connectionRefusedLogged = false; + var text = Encoding.GetEncoding(28591).GetString(bytes, 0, bytes.Length); this.PrintReceivedBytes(bytes); @@ -385,6 +388,20 @@ namespace PepperDash.Core } catch (NetSocketException ex) { + if (ex.SocketErrorCode == SocketError.ConnectionRefused) + { + if (!connectionRefusedLogged) + { + Debug.Console(1, Debug.ErrorLogLevel.Warning, + "GenericUdpClient '{0}': Remote endpoint refused UDP traffic or is no longer listening", + Key); + connectionRefusedLogged = true; + } + + HandleDisconnected(); + return; + } + Debug.LogMessage(ex, "UDP receive error for {0}", this, Key); if (AutoReconnect)