diff options
| author | Joshua M. Boniface <joshua@boniface.me> | 2026-03-27 13:33:12 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-27 13:33:12 -0400 |
| commit | 0ba41754d8ef67d1932270cb43760a6168f4d8f8 (patch) | |
| tree | 879082ac8cfdbdbd4f0a902eae4a7f8db5d5e899 | |
| parent | 9c09e7113e9eaadcf691e0fae68256a940a8b989 (diff) | |
| parent | 146681f0ba927b6c2d1e392a2b157a28c36e1a6b (diff) | |
Merge pull request #15841 from JanzenJohn/feat/fix-ipv6-crash
fix crashes on devices that don't support ipv6
| -rw-r--r-- | Jellyfin.Server/ServerSetupApp/SetupServer.cs | 2 | ||||
| -rw-r--r-- | src/Jellyfin.Networking/Manager/NetworkManager.cs | 11 |
2 files changed, 11 insertions, 2 deletions
diff --git a/Jellyfin.Server/ServerSetupApp/SetupServer.cs b/Jellyfin.Server/ServerSetupApp/SetupServer.cs index 4340969a30..1aa39f97b6 100644 --- a/Jellyfin.Server/ServerSetupApp/SetupServer.cs +++ b/Jellyfin.Server/ServerSetupApp/SetupServer.cs @@ -162,7 +162,7 @@ public sealed class SetupServer : IDisposable { var knownBindInterfaces = NetworkManager.GetInterfacesCore(_loggerFactory.CreateLogger<SetupServer>(), config.EnableIPv4, config.EnableIPv6); knownBindInterfaces = NetworkManager.FilterBindSettings(config, knownBindInterfaces.ToList(), config.EnableIPv4, config.EnableIPv6); - var bindInterfaces = NetworkManager.GetAllBindInterfaces(false, _configurationManager, knownBindInterfaces, config.EnableIPv4, config.EnableIPv6); + var bindInterfaces = NetworkManager.GetAllBindInterfaces(_loggerFactory.CreateLogger<NetworkManager>(), false, _configurationManager, knownBindInterfaces, config.EnableIPv4, config.EnableIPv6); Extensions.WebHostBuilderExtensions.SetupJellyfinWebServer( bindInterfaces, config.InternalHttpPort, diff --git a/src/Jellyfin.Networking/Manager/NetworkManager.cs b/src/Jellyfin.Networking/Manager/NetworkManager.cs index a9136aad48..8277ce54bb 100644 --- a/src/Jellyfin.Networking/Manager/NetworkManager.cs +++ b/src/Jellyfin.Networking/Manager/NetworkManager.cs @@ -747,12 +747,13 @@ public class NetworkManager : INetworkManager, IDisposable /// <inheritdoc/> public IReadOnlyList<IPData> GetAllBindInterfaces(bool individualInterfaces = false) { - return NetworkManager.GetAllBindInterfaces(individualInterfaces, _configurationManager, _interfaces, IsIPv4Enabled, IsIPv6Enabled); + return NetworkManager.GetAllBindInterfaces(_logger, individualInterfaces, _configurationManager, _interfaces, IsIPv4Enabled, IsIPv6Enabled); } /// <summary> /// Reads the jellyfin configuration of the configuration manager and produces a list of interfaces that should be bound. /// </summary> + /// <param name="logger">Logger to use for messages.</param> /// <param name="individualInterfaces">Defines that only known interfaces should be used.</param> /// <param name="configurationManager">The ConfigurationManager.</param> /// <param name="knownInterfaces">The known interfaces that gets returned if possible or instructed.</param> @@ -760,6 +761,7 @@ public class NetworkManager : INetworkManager, IDisposable /// <param name="readIpv6">Include IPV6 type interfaces.</param> /// <returns>A list of ip address of which jellyfin should bind to.</returns> public static IReadOnlyList<IPData> GetAllBindInterfaces( + ILogger<NetworkManager> logger, bool individualInterfaces, IConfigurationManager configurationManager, IReadOnlyList<IPData> knownInterfaces, @@ -773,6 +775,13 @@ public class NetworkManager : INetworkManager, IDisposable return knownInterfaces; } + // TODO: remove when upgrade to dotnet 11 is done + if (readIpv6 && !Socket.OSSupportsIPv6) + { + logger.LogWarning("IPv6 Unsupported by OS, not listening on IPv6"); + readIpv6 = false; + } + // No bind address and no exclusions, so listen on all interfaces. var result = new List<IPData>(); if (readIpv4 && readIpv6) |
