aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordkanada <dkanada@users.noreply.github.com>2020-06-20 03:04:24 +0900
committerGitHub <noreply@github.com>2020-06-20 03:04:24 +0900
commite8e5208fbd9484a1b37eed5dece524f108886fe0 (patch)
treeb1caae97efa052b25b1c4796cf013108aea2ddd8
parent62d86293eba077b864afae837e1f4c5c48ff91e7 (diff)
parent46276acc22f4676cbdf83c799a6343e4f9856e57 (diff)
Merge pull request #3360 from Bond-009/fix-3359
Fix Task that ignores cancellation request
-rw-r--r--Emby.Server.Implementations/Udp/UdpServer.cs11
1 files changed, 9 insertions, 2 deletions
diff --git a/Emby.Server.Implementations/Udp/UdpServer.cs b/Emby.Server.Implementations/Udp/UdpServer.cs
index bf8a436b4..73fcbcec3 100644
--- a/Emby.Server.Implementations/Udp/UdpServer.cs
+++ b/Emby.Server.Implementations/Udp/UdpServer.cs
@@ -101,11 +101,18 @@ namespace Emby.Server.Implementations.Udp
{
while (!cancellationToken.IsCancellationRequested)
{
+ var infiniteTask = Task.Delay(-1, cancellationToken);
try
{
- var result = await _udpSocket.ReceiveFromAsync(_receiveBuffer, SocketFlags.None, _endpoint).ConfigureAwait(false);
+ var task = _udpSocket.ReceiveFromAsync(_receiveBuffer, SocketFlags.None, _endpoint);
+ await Task.WhenAny(task, infiniteTask).ConfigureAwait(false);
- cancellationToken.ThrowIfCancellationRequested();
+ if (!task.IsCompleted)
+ {
+ return;
+ }
+
+ var result = task.Result;
var text = Encoding.UTF8.GetString(_receiveBuffer, 0, result.ReceivedBytes);
if (text.Contains("who is JellyfinServer?", StringComparison.OrdinalIgnoreCase))