diff --git a/Jellyfin.Networking/Manager/NetworkManager.cs b/Jellyfin.Networking/Manager/NetworkManager.cs
index b16dc53903..4b7b87814c 100644
--- a/Jellyfin.Networking/Manager/NetworkManager.cs
+++ b/Jellyfin.Networking/Manager/NetworkManager.cs
@@ -464,35 +464,13 @@ namespace Jellyfin.Networking.Manager
///
public bool IsInLocalNetwork(IPObject address)
{
- if (address == null)
- {
- throw new ArgumentNullException(nameof(address));
- }
-
- if (address.Equals(IPAddress.None))
- {
- return false;
- }
-
- // See conversation at https://github.com/jellyfin/jellyfin/pull/3515.
- if (TrustAllIP6Interfaces && address.AddressFamily == AddressFamily.InterNetworkV6)
- {
- return true;
- }
-
- // As private addresses can be redefined by Configuration.LocalNetworkAddresses
- return address.IsLoopback() || (_lanSubnets.ContainsAddress(address) && !_excludedSubnets.ContainsAddress(address));
+ return IsInLocalNetwork(address.Address);
}
///
public bool IsInLocalNetwork(string address)
{
- if (IPHost.TryParse(address, out IPHost ep))
- {
- return _lanSubnets.ContainsAddress(ep) && !_excludedSubnets.ContainsAddress(ep);
- }
-
- return false;
+ return IPHost.TryParse(address, out IPHost ipHost) && IsInLocalNetwork(ipHost);
}
///
@@ -503,6 +481,11 @@ namespace Jellyfin.Networking.Manager
throw new ArgumentNullException(nameof(address));
}
+ if (address.Equals(IPAddress.None))
+ {
+ return false;
+ }
+
// See conversation at https://github.com/jellyfin/jellyfin/pull/3515.
if (TrustAllIP6Interfaces && address.AddressFamily == AddressFamily.InterNetworkV6)
{
@@ -510,7 +493,7 @@ namespace Jellyfin.Networking.Manager
}
// As private addresses can be redefined by Configuration.LocalNetworkAddresses
- return _lanSubnets.ContainsAddress(address) && !_excludedSubnets.ContainsAddress(address);
+ return IPAddress.IsLoopback(address) || (_lanSubnets.ContainsAddress(address) && !_excludedSubnets.ContainsAddress(address));
}
///
diff --git a/MediaBrowser.Common/Net/IPObject.cs b/MediaBrowser.Common/Net/IPObject.cs
index bd5368882e..3a5187bc3d 100644
--- a/MediaBrowser.Common/Net/IPObject.cs
+++ b/MediaBrowser.Common/Net/IPObject.cs
@@ -65,7 +65,7 @@ namespace MediaBrowser.Common.Net
address = address.MapToIPv4();
}
- if (IsLoopback(address))
+ if (IPAddress.IsLoopback(address))
{
return (address, prefixLength);
}
@@ -102,31 +102,6 @@ namespace MediaBrowser.Common.Net
return (new IPAddress(addressBytes), prefixLength);
}
- ///
- /// Tests to see if the ip address is a Loopback address.
- ///
- /// Value to test.
- /// True if it is.
- public static bool IsLoopback(IPAddress address)
- {
- if (address == null)
- {
- throw new ArgumentNullException(nameof(address));
- }
-
- if (!address.Equals(IPAddress.None))
- {
- if (address.IsIPv4MappedToIPv6)
- {
- address = address.MapToIPv4();
- }
-
- return address.Equals(IPAddress.Loopback) || address.Equals(IPAddress.IPv6Loopback);
- }
-
- return false;
- }
-
///
/// Tests to see if the ip address is an IP6 address.
///
@@ -295,7 +270,7 @@ namespace MediaBrowser.Common.Net
/// True if it is.
public virtual bool IsLoopback()
{
- return IsLoopback(Address);
+ return IPAddress.IsLoopback(Address);
}
///