|
|
@ -7,6 +7,7 @@ using System.Threading;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using MediaBrowser.Controller;
|
|
|
|
using MediaBrowser.Controller;
|
|
|
|
using MediaBrowser.Model.ApiClient;
|
|
|
|
using MediaBrowser.Model.ApiClient;
|
|
|
|
|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Emby.Server.Implementations.Udp
|
|
|
|
namespace Emby.Server.Implementations.Udp
|
|
|
@ -21,6 +22,12 @@ namespace Emby.Server.Implementations.Udp
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
private readonly ILogger _logger;
|
|
|
|
private readonly ILogger _logger;
|
|
|
|
private readonly IServerApplicationHost _appHost;
|
|
|
|
private readonly IServerApplicationHost _appHost;
|
|
|
|
|
|
|
|
private readonly IConfiguration _config;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Address Override Configuration Key
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
public const string AddressOverrideConfigKey = "AutoDiscoverAddressOverride";
|
|
|
|
|
|
|
|
|
|
|
|
private Socket _udpSocket;
|
|
|
|
private Socket _udpSocket;
|
|
|
|
private IPEndPoint _endpoint;
|
|
|
|
private IPEndPoint _endpoint;
|
|
|
@ -31,15 +38,26 @@ namespace Emby.Server.Implementations.Udp
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// Initializes a new instance of the <see cref="UdpServer" /> class.
|
|
|
|
/// Initializes a new instance of the <see cref="UdpServer" /> class.
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
public UdpServer(ILogger logger, IServerApplicationHost appHost)
|
|
|
|
public UdpServer(ILogger logger, IServerApplicationHost appHost, IConfiguration configuration)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_logger = logger;
|
|
|
|
_logger = logger;
|
|
|
|
_appHost = appHost;
|
|
|
|
_appHost = appHost;
|
|
|
|
|
|
|
|
_config = configuration;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private async Task RespondToV2Message(string messageText, EndPoint endpoint, CancellationToken cancellationToken)
|
|
|
|
private async Task RespondToV2Message(string messageText, EndPoint endpoint, CancellationToken cancellationToken)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var localUrl = await _appHost.GetLocalApiUrl(cancellationToken).ConfigureAwait(false);
|
|
|
|
string localUrl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(_config[AddressOverrideConfigKey]))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
localUrl = _config[AddressOverrideConfigKey];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
localUrl = await _appHost.GetLocalApiUrl(cancellationToken).ConfigureAwait(false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(localUrl))
|
|
|
|
if (!string.IsNullOrEmpty(localUrl))
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -105,7 +123,7 @@ namespace Emby.Server.Implementations.Udp
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (SocketException ex)
|
|
|
|
catch (SocketException ex)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_logger.LogError(ex, "Failed to receive data drom socket");
|
|
|
|
_logger.LogError(ex, "Failed to receive data from socket");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (OperationCanceledException)
|
|
|
|
catch (OperationCanceledException)
|
|
|
|
{
|
|
|
|
{
|
|
|
|