Kestrel workaround

This commit is contained in:
BaronGreenback 2021-03-01 23:42:04 +00:00
parent dedc94ec91
commit 5942948714
2 changed files with 16 additions and 5 deletions

View File

@ -285,14 +285,25 @@ namespace Jellyfin.Networking.Manager
// No bind address and no exclusions, so listen on all interfaces. // No bind address and no exclusions, so listen on all interfaces.
Collection<IPObject> result = new Collection<IPObject>(); 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); result.AddItem(IPAddress.Any);
} }
else if (IsIP6Enabled)
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; return result;

View File

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