Fix interface address assignment and resolution in SSDP
This commit is contained in:
parent
42498194d9
commit
bedee7922f
|
@ -82,13 +82,14 @@ namespace Emby.Server.Implementations.Net
|
|||
|
||||
try
|
||||
{
|
||||
var interfaceIndex = (int)IPAddress.HostToNetworkOrder(bindInterface.Index);
|
||||
var interfaceIndex = bindInterface.Index;
|
||||
var interfaceIndexSwapped = (int)IPAddress.HostToNetworkOrder(interfaceIndex);
|
||||
|
||||
socket.MulticastLoopback = false;
|
||||
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.PacketInformation, true);
|
||||
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
|
||||
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, interfaceIndex);
|
||||
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, interfaceIndexSwapped);
|
||||
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(multicastAddress, interfaceIndex));
|
||||
socket.Bind(new IPEndPoint(multicastAddress, localPort));
|
||||
|
||||
|
|
|
@ -428,12 +428,12 @@ namespace Rssdp.Infrastructure
|
|||
if (result.ReceivedBytes > 0)
|
||||
{
|
||||
var remoteEndpoint = (IPEndPoint)result.RemoteEndPoint;
|
||||
var localEndpointAddress = result.PacketInformation.Address;
|
||||
var localEndpointAdapter = _networkManager.GetAllBindInterfaces().Where(a => a.Index == result.PacketInformation.Interface).First();
|
||||
|
||||
ProcessMessage(
|
||||
UTF8Encoding.UTF8.GetString(receiveBuffer, 0, result.ReceivedBytes),
|
||||
remoteEndpoint,
|
||||
localEndpointAddress);
|
||||
localEndpointAdapter.Address);
|
||||
}
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
|
|
Loading…
Reference in New Issue
Block a user