mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-31 12:58:28 +01:00
Remove IpAddressInfo and IpEndPointInfo classes
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Net;
|
||||
using System.Net;
|
||||
|
||||
namespace Rssdp
|
||||
{
|
||||
@@ -11,12 +8,12 @@ namespace Rssdp
|
||||
/// </summary>
|
||||
public sealed class DeviceAvailableEventArgs : EventArgs
|
||||
{
|
||||
public IpAddressInfo LocalIpAddress { get; set; }
|
||||
public IPAddress LocalIpAddress { get; set; }
|
||||
|
||||
#region Fields
|
||||
|
||||
private readonly DiscoveredSsdpDevice _DiscoveredDevice;
|
||||
private readonly bool _IsNewlyDiscovered;
|
||||
private readonly bool _IsNewlyDiscovered;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -29,34 +26,34 @@ namespace Rssdp
|
||||
/// <param name="isNewlyDiscovered">A boolean value indicating whether or not this device came from the cache. See <see cref="IsNewlyDiscovered"/> for more detail.</param>
|
||||
/// <exception cref="ArgumentNullException">Thrown if the <paramref name="discoveredDevice"/> parameter is null.</exception>
|
||||
public DeviceAvailableEventArgs(DiscoveredSsdpDevice discoveredDevice, bool isNewlyDiscovered)
|
||||
{
|
||||
if (discoveredDevice == null) throw new ArgumentNullException(nameof(discoveredDevice));
|
||||
{
|
||||
if (discoveredDevice == null) throw new ArgumentNullException(nameof(discoveredDevice));
|
||||
|
||||
_DiscoveredDevice = discoveredDevice;
|
||||
_IsNewlyDiscovered = isNewlyDiscovered;
|
||||
}
|
||||
_DiscoveredDevice = discoveredDevice;
|
||||
_IsNewlyDiscovered = isNewlyDiscovered;
|
||||
}
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region Public Properties
|
||||
#region Public Properties
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if the device was discovered due to an alive notification, or a search and was not already in the cache. Returns false if the item came from the cache but matched the current search request.
|
||||
/// </summary>
|
||||
public bool IsNewlyDiscovered
|
||||
{
|
||||
get { return _IsNewlyDiscovered; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Returns true if the device was discovered due to an alive notification, or a search and was not already in the cache. Returns false if the item came from the cache but matched the current search request.
|
||||
/// </summary>
|
||||
public bool IsNewlyDiscovered
|
||||
{
|
||||
get { return _IsNewlyDiscovered; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A reference to a <see cref="DiscoveredSsdpDevice"/> instance containing the discovered details and allowing access to the full device description.
|
||||
/// </summary>
|
||||
public DiscoveredSsdpDevice DiscoveredDevice
|
||||
{
|
||||
get { return _DiscoveredDevice; }
|
||||
}
|
||||
{
|
||||
get { return _DiscoveredDevice; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Net;
|
||||
|
||||
namespace Rssdp.Infrastructure
|
||||
{
|
||||
@@ -40,13 +40,13 @@ namespace Rssdp.Infrastructure
|
||||
/// <summary>
|
||||
/// Sends a message to a particular address (uni or multicast) and port.
|
||||
/// </summary>
|
||||
Task SendMessage(byte[] messageData, IpEndPointInfo destination, IpAddressInfo fromLocalIpAddress, CancellationToken cancellationToken);
|
||||
Task SendMessage(byte[] messageData, IPEndPoint destination, IPAddress fromLocalIpAddress, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Sends a message to the SSDP multicast address and port.
|
||||
/// </summary>
|
||||
Task SendMulticastMessage(string message, IpAddressInfo fromLocalIpAddress, CancellationToken cancellationToken);
|
||||
Task SendMulticastMessage(string message, int sendCount, IpAddressInfo fromLocalIpAddress, CancellationToken cancellationToken);
|
||||
Task SendMulticastMessage(string message, IPAddress fromLocalIpAddress, CancellationToken cancellationToken);
|
||||
Task SendMulticastMessage(string message, int sendCount, IPAddress fromLocalIpAddress, CancellationToken cancellationToken);
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Net;
|
||||
|
||||
namespace Rssdp.Infrastructure
|
||||
{
|
||||
@@ -16,18 +12,18 @@ namespace Rssdp.Infrastructure
|
||||
#region Fields
|
||||
|
||||
private readonly HttpRequestMessage _Message;
|
||||
private readonly IpEndPointInfo _ReceivedFrom;
|
||||
private readonly IPEndPoint _ReceivedFrom;
|
||||
|
||||
#endregion
|
||||
|
||||
public IpAddressInfo LocalIpAddress { get; private set; }
|
||||
public IPAddress LocalIpAddress { get; private set; }
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Full constructor.
|
||||
/// </summary>
|
||||
public RequestReceivedEventArgs(HttpRequestMessage message, IpEndPointInfo receivedFrom, IpAddressInfo localIpAddress)
|
||||
public RequestReceivedEventArgs(HttpRequestMessage message, IPEndPoint receivedFrom, IPAddress localIpAddress)
|
||||
{
|
||||
_Message = message;
|
||||
_ReceivedFrom = receivedFrom;
|
||||
@@ -49,7 +45,7 @@ namespace Rssdp.Infrastructure
|
||||
/// <summary>
|
||||
/// The <see cref="UdpEndPoint"/> the request came from.
|
||||
/// </summary>
|
||||
public IpEndPointInfo ReceivedFrom
|
||||
public IPEndPoint ReceivedFrom
|
||||
{
|
||||
get { return _ReceivedFrom; }
|
||||
}
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Net;
|
||||
|
||||
namespace Rssdp.Infrastructure
|
||||
{
|
||||
@@ -14,12 +10,12 @@ namespace Rssdp.Infrastructure
|
||||
public sealed class ResponseReceivedEventArgs : EventArgs
|
||||
{
|
||||
|
||||
public IpAddressInfo LocalIpAddress { get; set; }
|
||||
public IPAddress LocalIpAddress { get; set; }
|
||||
|
||||
#region Fields
|
||||
|
||||
private readonly HttpResponseMessage _Message;
|
||||
private readonly IpEndPointInfo _ReceivedFrom;
|
||||
private readonly IPEndPoint _ReceivedFrom;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -28,7 +24,7 @@ namespace Rssdp.Infrastructure
|
||||
/// <summary>
|
||||
/// Full constructor.
|
||||
/// </summary>
|
||||
public ResponseReceivedEventArgs(HttpResponseMessage message, IpEndPointInfo receivedFrom)
|
||||
public ResponseReceivedEventArgs(HttpResponseMessage message, IPEndPoint receivedFrom)
|
||||
{
|
||||
_Message = message;
|
||||
_ReceivedFrom = receivedFrom;
|
||||
@@ -49,7 +45,7 @@ namespace Rssdp.Infrastructure
|
||||
/// <summary>
|
||||
/// The <see cref="UdpEndPoint"/> the response came from.
|
||||
/// </summary>
|
||||
public IpEndPointInfo ReceivedFrom
|
||||
public IPEndPoint ReceivedFrom
|
||||
{
|
||||
get { return _ReceivedFrom; }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
@@ -163,7 +164,7 @@ namespace Rssdp.Infrastructure
|
||||
/// <summary>
|
||||
/// Sends a message to a particular address (uni or multicast) and port.
|
||||
/// </summary>
|
||||
public async Task SendMessage(byte[] messageData, IpEndPointInfo destination, IpAddressInfo fromLocalIpAddress, CancellationToken cancellationToken)
|
||||
public async Task SendMessage(byte[] messageData, IPEndPoint destination, IPAddress fromLocalIpAddress, CancellationToken cancellationToken)
|
||||
{
|
||||
if (messageData == null) throw new ArgumentNullException(nameof(messageData));
|
||||
|
||||
@@ -186,7 +187,7 @@ namespace Rssdp.Infrastructure
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SendFromSocket(ISocket socket, byte[] messageData, IpEndPointInfo destination, CancellationToken cancellationToken)
|
||||
private async Task SendFromSocket(ISocket socket, byte[] messageData, IPEndPoint destination, CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -206,7 +207,7 @@ namespace Rssdp.Infrastructure
|
||||
}
|
||||
}
|
||||
|
||||
private List<ISocket> GetSendSockets(IpAddressInfo fromLocalIpAddress, IpEndPointInfo destination)
|
||||
private List<ISocket> GetSendSockets(IPAddress fromLocalIpAddress, IPEndPoint destination)
|
||||
{
|
||||
EnsureSendSocketCreated();
|
||||
|
||||
@@ -215,24 +216,24 @@ namespace Rssdp.Infrastructure
|
||||
var sockets = _sendSockets.Where(i => i.LocalIPAddress.AddressFamily == fromLocalIpAddress.AddressFamily);
|
||||
|
||||
// Send from the Any socket and the socket with the matching address
|
||||
if (fromLocalIpAddress.AddressFamily == IpAddressFamily.InterNetwork)
|
||||
if (fromLocalIpAddress.AddressFamily == AddressFamily.InterNetwork)
|
||||
{
|
||||
sockets = sockets.Where(i => i.LocalIPAddress.Equals(IpAddressInfo.Any) || fromLocalIpAddress.Equals(i.LocalIPAddress));
|
||||
sockets = sockets.Where(i => i.LocalIPAddress.Equals(IPAddress.Any) || fromLocalIpAddress.Equals(i.LocalIPAddress));
|
||||
|
||||
// If sending to the loopback address, filter the socket list as well
|
||||
if (destination.IpAddress.Equals(IpAddressInfo.Loopback))
|
||||
if (destination.Address.Equals(IPAddress.Loopback))
|
||||
{
|
||||
sockets = sockets.Where(i => i.LocalIPAddress.Equals(IpAddressInfo.Any) || i.LocalIPAddress.Equals(IpAddressInfo.Loopback));
|
||||
sockets = sockets.Where(i => i.LocalIPAddress.Equals(IPAddress.Any) || i.LocalIPAddress.Equals(IPAddress.Loopback));
|
||||
}
|
||||
}
|
||||
else if (fromLocalIpAddress.AddressFamily == IpAddressFamily.InterNetworkV6)
|
||||
else if (fromLocalIpAddress.AddressFamily == AddressFamily.InterNetworkV6)
|
||||
{
|
||||
sockets = sockets.Where(i => i.LocalIPAddress.Equals(IpAddressInfo.IPv6Any) || fromLocalIpAddress.Equals(i.LocalIPAddress));
|
||||
sockets = sockets.Where(i => i.LocalIPAddress.Equals(IPAddress.IPv6Any) || fromLocalIpAddress.Equals(i.LocalIPAddress));
|
||||
|
||||
// If sending to the loopback address, filter the socket list as well
|
||||
if (destination.IpAddress.Equals(IpAddressInfo.IPv6Loopback))
|
||||
if (destination.Address.Equals(IPAddress.IPv6Loopback))
|
||||
{
|
||||
sockets = sockets.Where(i => i.LocalIPAddress.Equals(IpAddressInfo.IPv6Any) || i.LocalIPAddress.Equals(IpAddressInfo.IPv6Loopback));
|
||||
sockets = sockets.Where(i => i.LocalIPAddress.Equals(IPAddress.IPv6Any) || i.LocalIPAddress.Equals(IPAddress.IPv6Loopback));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,7 +241,7 @@ namespace Rssdp.Infrastructure
|
||||
}
|
||||
}
|
||||
|
||||
public Task SendMulticastMessage(string message, IpAddressInfo fromLocalIpAddress, CancellationToken cancellationToken)
|
||||
public Task SendMulticastMessage(string message, IPAddress fromLocalIpAddress, CancellationToken cancellationToken)
|
||||
{
|
||||
return SendMulticastMessage(message, SsdpConstants.UdpResendCount, fromLocalIpAddress, cancellationToken);
|
||||
}
|
||||
@@ -248,7 +249,7 @@ namespace Rssdp.Infrastructure
|
||||
/// <summary>
|
||||
/// Sends a message to the SSDP multicast address and port.
|
||||
/// </summary>
|
||||
public async Task SendMulticastMessage(string message, int sendCount, IpAddressInfo fromLocalIpAddress, CancellationToken cancellationToken)
|
||||
public async Task SendMulticastMessage(string message, int sendCount, IPAddress fromLocalIpAddress, CancellationToken cancellationToken)
|
||||
{
|
||||
if (message == null) throw new ArgumentNullException(nameof(message));
|
||||
|
||||
@@ -263,12 +264,13 @@ namespace Rssdp.Infrastructure
|
||||
// SSDP spec recommends sending messages multiple times (not more than 3) to account for possible packet loss over UDP.
|
||||
for (var i = 0; i < sendCount; i++)
|
||||
{
|
||||
await SendMessageIfSocketNotDisposed(messageData, new IpEndPointInfo
|
||||
{
|
||||
IpAddress = new IpAddressInfo(SsdpConstants.MulticastLocalAdminAddress, IpAddressFamily.InterNetwork),
|
||||
Port = SsdpConstants.MulticastPort
|
||||
|
||||
}, fromLocalIpAddress, cancellationToken).ConfigureAwait(false);
|
||||
await SendMessageIfSocketNotDisposed(
|
||||
messageData,
|
||||
new IPEndPoint(
|
||||
IPAddress.Parse(SsdpConstants.MulticastLocalAdminAddress),
|
||||
SsdpConstants.MulticastPort),
|
||||
fromLocalIpAddress,
|
||||
cancellationToken).ConfigureAwait(false);
|
||||
|
||||
await Task.Delay(100, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
@@ -336,7 +338,7 @@ namespace Rssdp.Infrastructure
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private Task SendMessageIfSocketNotDisposed(byte[] messageData, IpEndPointInfo destination, IpAddressInfo fromLocalIpAddress, CancellationToken cancellationToken)
|
||||
private Task SendMessageIfSocketNotDisposed(byte[] messageData, IPEndPoint destination, IPAddress fromLocalIpAddress, CancellationToken cancellationToken)
|
||||
{
|
||||
var sockets = _sendSockets;
|
||||
if (sockets != null)
|
||||
@@ -364,13 +366,13 @@ namespace Rssdp.Infrastructure
|
||||
{
|
||||
var sockets = new List<ISocket>();
|
||||
|
||||
sockets.Add(_SocketFactory.CreateSsdpUdpSocket(IpAddressInfo.Any, _LocalPort));
|
||||
sockets.Add(_SocketFactory.CreateSsdpUdpSocket(IPAddress.Any, _LocalPort));
|
||||
|
||||
if (_enableMultiSocketBinding)
|
||||
{
|
||||
foreach (var address in _networkManager.GetLocalIpAddresses(_config.Configuration.IgnoreVirtualInterfaces))
|
||||
{
|
||||
if (address.AddressFamily == IpAddressFamily.InterNetworkV6)
|
||||
if (address.AddressFamily == AddressFamily.InterNetworkV6)
|
||||
{
|
||||
// Not support IPv6 right now
|
||||
continue;
|
||||
@@ -439,7 +441,7 @@ namespace Rssdp.Infrastructure
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessMessage(string data, IpEndPointInfo endPoint, IpAddressInfo receivedOnLocalIpAddress)
|
||||
private void ProcessMessage(string data, IPEndPoint endPoint, IPAddress receivedOnLocalIpAddress)
|
||||
{
|
||||
// Responses start with the HTTP version, prefixed with HTTP/ while
|
||||
// requests start with a method which can vary and might be one we haven't
|
||||
@@ -481,7 +483,7 @@ namespace Rssdp.Infrastructure
|
||||
}
|
||||
}
|
||||
|
||||
private void OnRequestReceived(HttpRequestMessage data, IpEndPointInfo remoteEndPoint, IpAddressInfo receivedOnLocalIpAddress)
|
||||
private void OnRequestReceived(HttpRequestMessage data, IPEndPoint remoteEndPoint, IPAddress receivedOnLocalIpAddress)
|
||||
{
|
||||
//SSDP specification says only * is currently used but other uri's might
|
||||
//be implemented in the future and should be ignored unless understood.
|
||||
@@ -496,7 +498,7 @@ namespace Rssdp.Infrastructure
|
||||
handlers(this, new RequestReceivedEventArgs(data, remoteEndPoint, receivedOnLocalIpAddress));
|
||||
}
|
||||
|
||||
private void OnResponseReceived(HttpResponseMessage data, IpEndPointInfo endPoint, IpAddressInfo localIpAddress)
|
||||
private void OnResponseReceived(HttpResponseMessage data, IPEndPoint endPoint, IPAddress localIpAddress)
|
||||
{
|
||||
var handlers = this.ResponseReceived;
|
||||
if (handlers != null)
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using Rssdp.Infrastructure;
|
||||
|
||||
namespace Rssdp
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Net;
|
||||
|
||||
namespace Rssdp.Infrastructure
|
||||
{
|
||||
@@ -213,7 +210,7 @@ namespace Rssdp.Infrastructure
|
||||
/// Raises the <see cref="DeviceAvailable"/> event.
|
||||
/// </summary>
|
||||
/// <seealso cref="DeviceAvailable"/>
|
||||
protected virtual void OnDeviceAvailable(DiscoveredSsdpDevice device, bool isNewDevice, IpAddressInfo localIpAddress)
|
||||
protected virtual void OnDeviceAvailable(DiscoveredSsdpDevice device, bool isNewDevice, IPAddress localIpAddress)
|
||||
{
|
||||
if (this.IsDisposed) return;
|
||||
|
||||
@@ -295,7 +292,7 @@ namespace Rssdp.Infrastructure
|
||||
|
||||
#region Discovery/Device Add
|
||||
|
||||
private void AddOrUpdateDiscoveredDevice(DiscoveredSsdpDevice device, IpAddressInfo localIpAddress)
|
||||
private void AddOrUpdateDiscoveredDevice(DiscoveredSsdpDevice device, IPAddress localIpAddress)
|
||||
{
|
||||
bool isNewDevice = false;
|
||||
lock (_Devices)
|
||||
@@ -316,7 +313,7 @@ namespace Rssdp.Infrastructure
|
||||
DeviceFound(device, isNewDevice, localIpAddress);
|
||||
}
|
||||
|
||||
private void DeviceFound(DiscoveredSsdpDevice device, bool isNewDevice, IpAddressInfo localIpAddress)
|
||||
private void DeviceFound(DiscoveredSsdpDevice device, bool isNewDevice, IPAddress localIpAddress)
|
||||
{
|
||||
if (!NotificationTypeMatchesFilter(device)) return;
|
||||
|
||||
@@ -357,7 +354,7 @@ namespace Rssdp.Infrastructure
|
||||
return _CommunicationsServer.SendMulticastMessage(message, null, cancellationToken);
|
||||
}
|
||||
|
||||
private void ProcessSearchResponseMessage(HttpResponseMessage message, IpAddressInfo localIpAddress)
|
||||
private void ProcessSearchResponseMessage(HttpResponseMessage message, IPAddress localIpAddress)
|
||||
{
|
||||
if (!message.IsSuccessStatusCode) return;
|
||||
|
||||
@@ -378,7 +375,7 @@ namespace Rssdp.Infrastructure
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessNotificationMessage(HttpRequestMessage message, IpAddressInfo localIpAddress)
|
||||
private void ProcessNotificationMessage(HttpRequestMessage message, IPAddress localIpAddress)
|
||||
{
|
||||
if (String.Compare(message.Method.Method, "Notify", StringComparison.OrdinalIgnoreCase) != 0) return;
|
||||
|
||||
@@ -389,7 +386,7 @@ namespace Rssdp.Infrastructure
|
||||
ProcessByeByeNotification(message);
|
||||
}
|
||||
|
||||
private void ProcessAliveNotification(HttpRequestMessage message, IpAddressInfo localIpAddress)
|
||||
private void ProcessAliveNotification(HttpRequestMessage message, IPAddress localIpAddress)
|
||||
{
|
||||
var location = GetFirstHeaderUriValue("Location", message);
|
||||
if (location != null)
|
||||
|
||||
@@ -2,13 +2,10 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Net;
|
||||
using MediaBrowser.Common.Net;
|
||||
using Rssdp;
|
||||
|
||||
namespace Rssdp.Infrastructure
|
||||
{
|
||||
@@ -199,7 +196,12 @@ namespace Rssdp.Infrastructure
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessSearchRequest(string mx, string searchTarget, IpEndPointInfo remoteEndPoint, IpAddressInfo receivedOnlocalIpAddress, CancellationToken cancellationToken)
|
||||
private void ProcessSearchRequest(
|
||||
string mx,
|
||||
string searchTarget,
|
||||
IPEndPoint remoteEndPoint,
|
||||
IPAddress receivedOnlocalIpAddress,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
if (String.IsNullOrEmpty(searchTarget))
|
||||
{
|
||||
@@ -258,7 +260,7 @@ namespace Rssdp.Infrastructure
|
||||
foreach (var device in deviceList)
|
||||
{
|
||||
if (!_sendOnlyMatchedHost ||
|
||||
_networkManager.IsInSameSubnet(device.ToRootDevice().Address, remoteEndPoint.IpAddress, device.ToRootDevice().SubnetMask))
|
||||
_networkManager.IsInSameSubnet(device.ToRootDevice().Address, remoteEndPoint.Address, device.ToRootDevice().SubnetMask))
|
||||
{
|
||||
SendDeviceSearchResponses(device, remoteEndPoint, receivedOnlocalIpAddress, cancellationToken);
|
||||
}
|
||||
@@ -276,7 +278,11 @@ namespace Rssdp.Infrastructure
|
||||
return _Devices.Union(_Devices.SelectManyRecursive<SsdpDevice>((d) => d.Devices));
|
||||
}
|
||||
|
||||
private void SendDeviceSearchResponses(SsdpDevice device, IpEndPointInfo endPoint, IpAddressInfo receivedOnlocalIpAddress, CancellationToken cancellationToken)
|
||||
private void SendDeviceSearchResponses(
|
||||
SsdpDevice device,
|
||||
IPEndPoint endPoint,
|
||||
IPAddress receivedOnlocalIpAddress,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
bool isRootDevice = (device as SsdpRootDevice) != null;
|
||||
if (isRootDevice)
|
||||
@@ -296,7 +302,13 @@ namespace Rssdp.Infrastructure
|
||||
return String.Format("{0}::{1}", udn, fullDeviceType);
|
||||
}
|
||||
|
||||
private async void SendSearchResponse(string searchTarget, SsdpDevice device, string uniqueServiceName, IpEndPointInfo endPoint, IpAddressInfo receivedOnlocalIpAddress, CancellationToken cancellationToken)
|
||||
private async void SendSearchResponse(
|
||||
string searchTarget,
|
||||
SsdpDevice device,
|
||||
string uniqueServiceName,
|
||||
IPEndPoint endPoint,
|
||||
IPAddress receivedOnlocalIpAddress,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var rootDevice = device.ToRootDevice();
|
||||
|
||||
@@ -333,7 +345,7 @@ namespace Rssdp.Infrastructure
|
||||
//WriteTrace(String.Format("Sent search response to " + endPoint.ToString()), device);
|
||||
}
|
||||
|
||||
private bool IsDuplicateSearchRequest(string searchTarget, IpEndPointInfo endPoint)
|
||||
private bool IsDuplicateSearchRequest(string searchTarget, IPEndPoint endPoint)
|
||||
{
|
||||
var isDuplicateRequest = false;
|
||||
|
||||
@@ -556,7 +568,7 @@ namespace Rssdp.Infrastructure
|
||||
|
||||
private class SearchRequest
|
||||
{
|
||||
public IpEndPointInfo EndPoint { get; set; }
|
||||
public IPEndPoint EndPoint { get; set; }
|
||||
public DateTime Received { get; set; }
|
||||
public string SearchTarget { get; set; }
|
||||
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using Rssdp.Infrastructure;
|
||||
using MediaBrowser.Model.Net;
|
||||
using System.Net;
|
||||
|
||||
namespace Rssdp
|
||||
{
|
||||
@@ -56,12 +52,12 @@ namespace Rssdp
|
||||
/// <summary>
|
||||
/// Gets or sets the Address used to check if the received message from same interface with this device/tree. Required.
|
||||
/// </summary>
|
||||
public IpAddressInfo Address { get; set; }
|
||||
public IPAddress Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the SubnetMask used to check if the received message from same interface with this device/tree. Required.
|
||||
/// </summary>
|
||||
public IpAddressInfo SubnetMask { get; set; }
|
||||
public IPAddress SubnetMask { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The base URL to use for all relative url's provided in other propertise (and those of child devices). Optional.
|
||||
|
||||
Reference in New Issue
Block a user