Merge pull request #5345 from BaronGreenback/IP6Fix

Dual IP4 / IP6 server fails on non-windows platforms

(cherry picked from commit 8615847a8a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
pull/5640/head
dkanada 4 years ago committed by Joshua M. Boniface
parent b99db64f8f
commit 7545b1286b

@ -285,14 +285,25 @@ namespace Jellyfin.Networking.Manager
// No bind address and no exclusions, so listen on all interfaces.
Collection<IPObject> result = new Collection<IPObject>();
if (IsIP4Enabled)
if (IsIP6Enabled && IsIP4Enabled)
{
// Kestrel source code shows it uses Sockets.DualMode - so this also covers IPAddress.Any
result.AddItem(IPAddress.IPv6Any);
}
else if (IsIP4Enabled)
{
result.AddItem(IPAddress.Any);
}
if (IsIP6Enabled)
else if (IsIP6Enabled)
{
result.AddItem(IPAddress.IPv6Any);
// Cannot use IPv6Any as Kestrel will bind to IPv4 addresses.
foreach (var iface in _interfaceAddresses)
{
if (iface.AddressFamily == AddressFamily.InterNetworkV6)
{
result.AddItem(iface.Address);
}
}
}
return result;
@ -414,7 +425,7 @@ namespace Jellyfin.Networking.Manager
}
// There isn't any others, so we'll use the loopback.
result = IsIP6Enabled ? "::" : "127.0.0.1";
result = IsIP6Enabled ? "::1" : "127.0.0.1";
_logger.LogWarning("{Source}: GetBindInterface: Loopback {Result} returned.", source, result);
return result;
}

@ -280,7 +280,7 @@ namespace Jellyfin.Server
bool flagged = false;
foreach (IPObject netAdd in addresses)
{
_logger.LogInformation("Kestrel listening on {0}", netAdd);
_logger.LogInformation("Kestrel listening on {Address}", netAdd.Address == IPAddress.IPv6Any ? "All Addresses" : netAdd);
options.Listen(netAdd.Address, appHost.HttpPort);
if (appHost.ListenWithHttps)
{

Loading…
Cancel
Save