mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
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
|
try
|
||||||
{
|
{
|
||||||
var interfaceIndex = (int)IPAddress.HostToNetworkOrder(bindInterface.Index);
|
var interfaceIndex = bindInterface.Index;
|
||||||
|
var interfaceIndexSwapped = (int)IPAddress.HostToNetworkOrder(interfaceIndex);
|
||||||
|
|
||||||
socket.MulticastLoopback = false;
|
socket.MulticastLoopback = false;
|
||||||
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||||
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.PacketInformation, true);
|
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.PacketInformation, true);
|
||||||
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
|
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.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(multicastAddress, interfaceIndex));
|
||||||
socket.Bind(new IPEndPoint(multicastAddress, localPort));
|
socket.Bind(new IPEndPoint(multicastAddress, localPort));
|
||||||
|
|
||||||
|
@ -428,12 +428,12 @@ namespace Rssdp.Infrastructure
|
|||||||
if (result.ReceivedBytes > 0)
|
if (result.ReceivedBytes > 0)
|
||||||
{
|
{
|
||||||
var remoteEndpoint = (IPEndPoint)result.RemoteEndPoint;
|
var remoteEndpoint = (IPEndPoint)result.RemoteEndPoint;
|
||||||
var localEndpointAddress = result.PacketInformation.Address;
|
var localEndpointAdapter = _networkManager.GetAllBindInterfaces().Where(a => a.Index == result.PacketInformation.Interface).First();
|
||||||
|
|
||||||
ProcessMessage(
|
ProcessMessage(
|
||||||
UTF8Encoding.UTF8.GetString(receiveBuffer, 0, result.ReceivedBytes),
|
UTF8Encoding.UTF8.GetString(receiveBuffer, 0, result.ReceivedBytes),
|
||||||
remoteEndpoint,
|
remoteEndpoint,
|
||||||
localEndpointAddress);
|
localEndpointAdapter.Address);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (ObjectDisposedException)
|
catch (ObjectDisposedException)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user