Added logging and broadcast = true
Not intended for merge into the fork.
This commit is contained in:
parent
2486e48097
commit
5b0c182908
|
@ -4,6 +4,7 @@ using System;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using MediaBrowser.Model.Net;
|
using MediaBrowser.Model.Net;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Net
|
namespace Emby.Server.Implementations.Net
|
||||||
{
|
{
|
||||||
|
@ -67,7 +68,7 @@ namespace Emby.Server.Implementations.Net
|
||||||
/// <param name="multicastTimeToLive">The multicast time to live value for the acceptSocket.</param>
|
/// <param name="multicastTimeToLive">The multicast time to live value for the acceptSocket.</param>
|
||||||
/// <param name="localPort">The number of the local port to bind to.</param>
|
/// <param name="localPort">The number of the local port to bind to.</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public ISocket CreateUdpMulticastSocket(string ipAddress, int multicastTimeToLive, int localPort)
|
public ISocket CreateUdpMulticastSocket(string ipAddress, int multicastTimeToLive, int localPort, ILogger _logger)
|
||||||
{
|
{
|
||||||
if (ipAddress == null)
|
if (ipAddress == null)
|
||||||
{
|
{
|
||||||
|
@ -89,6 +90,8 @@ namespace Emby.Server.Implementations.Net
|
||||||
throw new ArgumentException("localPort cannot be less than zero.", nameof(localPort));
|
throw new ArgumentException("localPort cannot be less than zero.", nameof(localPort));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_logger.LogError("Created");
|
||||||
|
|
||||||
var retVal = new Socket(AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
|
var retVal = new Socket(AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -100,6 +103,8 @@ namespace Emby.Server.Implementations.Net
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_logger.LogError("Exclusive false");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// seeing occasional exceptions thrown on qnap
|
// seeing occasional exceptions thrown on qnap
|
||||||
|
@ -110,8 +115,14 @@ namespace Emby.Server.Implementations.Net
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_logger.LogError("Reused");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
retVal.EnableBroadcast = true; // CHANGE
|
||||||
|
|
||||||
|
_logger.LogError("Broadcast");
|
||||||
|
|
||||||
// retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
|
// retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
|
||||||
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
|
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
|
||||||
|
|
||||||
|
@ -120,6 +131,8 @@ namespace Emby.Server.Implementations.Net
|
||||||
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(ipAddress), localIp));
|
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(ipAddress), localIp));
|
||||||
retVal.MulticastLoopback = true;
|
retVal.MulticastLoopback = true;
|
||||||
|
|
||||||
|
_logger.LogError("Sorted");
|
||||||
|
|
||||||
return new UdpSocket(retVal, localPort, localIp);
|
return new UdpSocket(retVal, localPort, localIp);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#pragma warning disable CS1591
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Net
|
namespace MediaBrowser.Model.Net
|
||||||
{
|
{
|
||||||
|
@ -22,7 +23,9 @@ namespace MediaBrowser.Model.Net
|
||||||
/// <param name="ipAddress">The multicast IP address to bind to.</param>
|
/// <param name="ipAddress">The multicast IP address to bind to.</param>
|
||||||
/// <param name="multicastTimeToLive">The multicast time to live value. Actually a maximum number of network hops for UDP packets.</param>
|
/// <param name="multicastTimeToLive">The multicast time to live value. Actually a maximum number of network hops for UDP packets.</param>
|
||||||
/// <param name="localPort">The local port to bind to.</param>
|
/// <param name="localPort">The local port to bind to.</param>
|
||||||
|
/// <param name="logger"></param>
|
||||||
/// <returns>A <see cref="ISocket"/> implementation.</returns>
|
/// <returns>A <see cref="ISocket"/> implementation.</returns>
|
||||||
ISocket CreateUdpMulticastSocket(string ipAddress, int multicastTimeToLive, int localPort);
|
ISocket CreateUdpMulticastSocket(string ipAddress, int multicastTimeToLive, int localPort, ILogger logger);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -338,9 +338,12 @@ namespace Rssdp.Infrastructure
|
||||||
|
|
||||||
private ISocket ListenForBroadcastsAsync()
|
private ISocket ListenForBroadcastsAsync()
|
||||||
{
|
{
|
||||||
var socket = _SocketFactory.CreateUdpMulticastSocket(SsdpConstants.MulticastLocalAdminAddress, _MulticastTtl, SsdpConstants.MulticastPort);
|
var socket = _SocketFactory.CreateUdpMulticastSocket(SsdpConstants.MulticastLocalAdminAddress, _MulticastTtl, SsdpConstants.MulticastPort, _logger);
|
||||||
|
|
||||||
_ = ListenToSocketInternal(socket);
|
// TODO: remove this try and logging - testing purposes only.
|
||||||
|
_logger.LogError("Socket Created.");
|
||||||
|
|
||||||
|
_ = ListenToSocketInternal(socket, _logger);
|
||||||
|
|
||||||
return socket;
|
return socket;
|
||||||
}
|
}
|
||||||
|
@ -374,16 +377,16 @@ namespace Rssdp.Infrastructure
|
||||||
|
|
||||||
foreach (var socket in sockets)
|
foreach (var socket in sockets)
|
||||||
{
|
{
|
||||||
_ = ListenToSocketInternal(socket);
|
_ = ListenToSocketInternal(socket, _logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
return sockets;
|
return sockets;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ListenToSocketInternal(ISocket socket)
|
private async Task ListenToSocketInternal(ISocket socket, ILogger logger)
|
||||||
{
|
{
|
||||||
var cancelled = false;
|
var cancelled = false;
|
||||||
var receiveBuffer = new byte[8192];
|
var receiveBuffer = new byte[8192];
|
||||||
|
|
||||||
while (!cancelled && !IsDisposed)
|
while (!cancelled && !IsDisposed)
|
||||||
{
|
{
|
||||||
|
@ -393,6 +396,7 @@ namespace Rssdp.Infrastructure
|
||||||
|
|
||||||
if (result.ReceivedBytes > 0)
|
if (result.ReceivedBytes > 0)
|
||||||
{
|
{
|
||||||
|
_logger.LogError("processing...");
|
||||||
// Strange cannot convert compiler error here if I don't explicitly
|
// Strange cannot convert compiler error here if I don't explicitly
|
||||||
// assign or cast to Action first. Assignment is easier to read,
|
// assign or cast to Action first. Assignment is easier to read,
|
||||||
// so went with that.
|
// so went with that.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user