aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2023-02-17 18:24:13 +0100
committerShadowghost <Ghost_of_Stone@web.de>2023-02-17 18:24:13 +0100
commitbedee7922f3be0cd5d1f4f687e9766c1217e39e7 (patch)
treee0a5daa21f49b15aa72b78a7fadb451520b94fb8
parent42498194d9a4069b8cdeb9446f2714f74e3169de (diff)
Fix interface address assignment and resolution in SSDP
-rw-r--r--Emby.Server.Implementations/Net/SocketFactory.cs5
-rw-r--r--RSSDP/SsdpCommunicationsServer.cs4
2 files changed, 5 insertions, 4 deletions
diff --git a/Emby.Server.Implementations/Net/SocketFactory.cs b/Emby.Server.Implementations/Net/SocketFactory.cs
index d134d948a..51e92953d 100644
--- a/Emby.Server.Implementations/Net/SocketFactory.cs
+++ b/Emby.Server.Implementations/Net/SocketFactory.cs
@@ -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));
diff --git a/RSSDP/SsdpCommunicationsServer.cs b/RSSDP/SsdpCommunicationsServer.cs
index 6ae260d55..f70a598fb 100644
--- a/RSSDP/SsdpCommunicationsServer.cs
+++ b/RSSDP/SsdpCommunicationsServer.cs
@@ -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)