Added logging and broadcast = true

Not intended for merge into the fork.
This commit is contained in:
BaronGreenback 2020-06-24 14:31:17 +01:00
parent 2486e48097
commit 5b0c182908
3 changed files with 27 additions and 7 deletions

View File

@ -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

View File

@ -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);
} }
} }

View File

@ -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,13 +377,13 @@ 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];
@ -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.