From c1ea49c339dffff1e4ae0dfe775f8dba2aa548c2 Mon Sep 17 00:00:00 2001 From: andre-slashwhy Date: Fri, 8 Aug 2025 08:47:59 +0200 Subject: [PATCH 1/2] Use the cancellation token to properly cancel the UdpClient.ReceiveAsync() task --- Zeroconf/NetworkInterface.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zeroconf/NetworkInterface.cs b/Zeroconf/NetworkInterface.cs index 8dcdc97d..46bf27ac 100644 --- a/Zeroconf/NetworkInterface.cs +++ b/Zeroconf/NetworkInterface.cs @@ -130,7 +130,7 @@ async Task NetworkRequestAsync(byte[] requestBytes, { while (!Volatile.Read(ref shouldCancel)) { - var res = await client.ReceiveAsync() + var res = await client.ReceiveAsync(cancellationToken) .ConfigureAwait(false); onResponse(res.RemoteEndPoint.Address, res.Buffer); From a8a60d9c0c795d1e65f47887f09631f3533ab978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Franke?= Date: Fri, 8 Aug 2025 10:06:36 +0200 Subject: [PATCH 2/2] Only use the cancellationToken overload for .NET 6 and above --- Zeroconf/NetworkInterface.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Zeroconf/NetworkInterface.cs b/Zeroconf/NetworkInterface.cs index 46bf27ac..331683ae 100644 --- a/Zeroconf/NetworkInterface.cs +++ b/Zeroconf/NetworkInterface.cs @@ -130,8 +130,13 @@ async Task NetworkRequestAsync(byte[] requestBytes, { while (!Volatile.Read(ref shouldCancel)) { +#if NET6_0_OR_GREATER var res = await client.ReceiveAsync(cancellationToken) .ConfigureAwait(false); +#else + var res = await client.ReceiveAsync() + .ConfigureAwait(false); +#endif onResponse(res.RemoteEndPoint.Address, res.Buffer); }