Catch exceptions in auto discovery (#11252)
This commit is contained in:
parent
000395e036
commit
ed82d79647
|
@ -78,28 +78,36 @@ public sealed class AutoDiscoveryHost : BackgroundService
|
|||
|
||||
private async Task ListenForAutoDiscoveryMessage(IPAddress address, CancellationToken cancellationToken)
|
||||
{
|
||||
using var udpClient = new UdpClient(new IPEndPoint(address, PortNumber));
|
||||
udpClient.MulticastLoopback = false;
|
||||
|
||||
while (!cancellationToken.IsCancellationRequested)
|
||||
try
|
||||
{
|
||||
try
|
||||
using var udpClient = new UdpClient(new IPEndPoint(address, PortNumber));
|
||||
udpClient.MulticastLoopback = false;
|
||||
|
||||
while (!cancellationToken.IsCancellationRequested)
|
||||
{
|
||||
var result = await udpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
|
||||
var text = Encoding.UTF8.GetString(result.Buffer);
|
||||
if (text.Contains("who is JellyfinServer?", StringComparison.OrdinalIgnoreCase))
|
||||
try
|
||||
{
|
||||
await RespondToV2Message(udpClient, result.RemoteEndPoint, cancellationToken).ConfigureAwait(false);
|
||||
var result = await udpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
|
||||
var text = Encoding.UTF8.GetString(result.Buffer);
|
||||
if (text.Contains("who is JellyfinServer?", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
await RespondToV2Message(udpClient, result.RemoteEndPoint, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
catch (SocketException ex)
|
||||
{
|
||||
_logger.LogError(ex, "Failed to receive data from socket");
|
||||
}
|
||||
}
|
||||
catch (SocketException ex)
|
||||
{
|
||||
_logger.LogError(ex, "Failed to receive data from socket");
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
_logger.LogDebug("Broadcast socket operation cancelled");
|
||||
}
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
_logger.LogDebug("Broadcast socket operation cancelled");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Exception in this function will prevent the background service from restarting in-process.
|
||||
_logger.LogError(ex, "Unable to bind to {Address}:{Port}", address, PortNumber);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user