aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Networking/Manager/NetworkManager.cs
diff options
context:
space:
mode:
authorBaronGreenback <jimcartlidge@yahoo.co.uk>2020-11-24 05:11:02 +0000
committerGitHub <noreply@github.com>2020-11-24 06:11:02 +0100
commit50e375020a580078ed309e2d59cf124d10b4a2ed (patch)
tree05e92eaa8da62f6ec8f94970967570bba8dd9a23 /Jellyfin.Networking/Manager/NetworkManager.cs
parent6676ca4d1b6f8ba2c3582ab916ea9e2f88afae65 (diff)
[Fix] NetworkManager binding to [::] (#4549)
* Autodiscovery enable/disable patch * Fixed [::] issue on bind. Altered test. * Update UdpServerEntryPoint.cs * Update Jellyfin.Networking.Tests.csproj * Update Jellyfin.Networking.Tests.csproj * Update INetworkManager.cs
Diffstat (limited to 'Jellyfin.Networking/Manager/NetworkManager.cs')
-rw-r--r--Jellyfin.Networking/Manager/NetworkManager.cs37
1 files changed, 21 insertions, 16 deletions
diff --git a/Jellyfin.Networking/Manager/NetworkManager.cs b/Jellyfin.Networking/Manager/NetworkManager.cs
index 515ae669a..1a5614b7b 100644
--- a/Jellyfin.Networking/Manager/NetworkManager.cs
+++ b/Jellyfin.Networking/Manager/NetworkManager.cs
@@ -84,7 +84,7 @@ namespace Jellyfin.Networking.Manager
private Collection<IPObject> _internalInterfaces;
/// <summary>
- /// Flag set when no custom LAN has been defined in the config.
+ /// Flag set when no custom LAN has been defined in the configuration.
/// </summary>
private bool _usingPrivateAddresses;
@@ -228,7 +228,7 @@ namespace Jellyfin.Networking.Manager
}
/// <inheritdoc/>
- public Collection<IPObject> CreateIPCollection(string[] values, bool bracketed = false)
+ public Collection<IPObject> CreateIPCollection(string[] values, bool negated = false)
{
Collection<IPObject> col = new Collection<IPObject>();
if (values == null)
@@ -242,21 +242,14 @@ namespace Jellyfin.Networking.Manager
try
{
- if (v.StartsWith('[') && v.EndsWith(']'))
+ if (v.StartsWith('!'))
{
- if (bracketed)
- {
- AddToCollection(col, v[1..^1]);
- }
- }
- else if (v.StartsWith('!'))
- {
- if (bracketed)
+ if (negated)
{
AddToCollection(col, v[1..]);
}
}
- else if (!bracketed)
+ else if (!negated)
{
AddToCollection(col, v);
}
@@ -730,7 +723,7 @@ namespace Jellyfin.Networking.Manager
}
/// <summary>
- /// Parses a string and adds it into the the collection, replacing any interface references.
+ /// Parses a string and adds it into the collection, replacing any interface references.
/// </summary>
/// <param name="col"><see cref="Collection{IPObject}"/>Collection.</param>
/// <param name="token">String value to parse.</param>
@@ -755,7 +748,19 @@ namespace Jellyfin.Networking.Manager
}
else if (TryParse(token, out IPObject obj))
{
- if (!IsIP6Enabled)
+ // Expand if the ip address is "any".
+ if ((obj.Address.Equals(IPAddress.Any) && IsIP4Enabled)
+ || (obj.Address.Equals(IPAddress.IPv6Any) && IsIP6Enabled))
+ {
+ foreach (IPNetAddress iface in _interfaceAddresses)
+ {
+ if (obj.AddressFamily == iface.AddressFamily)
+ {
+ col.AddItem(iface);
+ }
+ }
+ }
+ else if (!IsIP6Enabled)
{
// Remove IP6 addresses from multi-homed IPHosts.
obj.Remove(AddressFamily.InterNetworkV6);
@@ -872,7 +877,7 @@ namespace Jellyfin.Networking.Manager
else
{
var replacement = parts[1].Trim();
- if (string.Equals(parts[0], "remaining", StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(parts[0], "all", StringComparison.OrdinalIgnoreCase))
{
_publishedServerUrls[new IPNetAddress(IPAddress.Broadcast)] = replacement;
}
@@ -956,7 +961,7 @@ namespace Jellyfin.Networking.Manager
{
_logger.LogDebug("Refreshing LAN information.");
- // Get config options.
+ // Get configuration options.
string[] subnets = config.LocalNetworkSubnets;
// Create lists from user settings.