diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-10-17 12:32:57 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-17 12:32:57 -0400 |
| commit | fb9db5c3c36eca578369cb398c36efd6a15bbea9 (patch) | |
| tree | 98e41f78dd5d7c474ce763157eb3503a165088ed /MediaBrowser.Server.Implementations/EntryPoints | |
| parent | f8a248ffd805b810e90bc5ec0619e53f49ebcae5 (diff) | |
| parent | b0147c32f9122c6ce695d2919176ed8b50b94fda (diff) | |
Merge pull request #2240 from MediaBrowser/beta
Beta
Diffstat (limited to 'MediaBrowser.Server.Implementations/EntryPoints')
| -rw-r--r-- | MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs b/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs index 1021d8823..3274231ee 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs @@ -122,43 +122,55 @@ namespace MediaBrowser.Server.Implementations.EntryPoints var identifier = string.IsNullOrWhiteSpace(usn) ? nt : usn; - if (info.Location != null && !_usnsHandled.Contains(identifier)) + if (info.Location == null) { + return; + } + + lock (_usnsHandled) + { + if (_usnsHandled.Contains(identifier)) + { + return; + } _usnsHandled.Add(identifier); + } - _logger.Debug("Calling Nat.Handle on " + identifier); + _logger.Debug("Calling Nat.Handle on " + identifier); - IPAddress address; - if (IPAddress.TryParse(info.Location.Host, out address)) - { - // The Handle method doesn't need the port - var endpoint = new IPEndPoint(address, info.Location.Port); + IPAddress address; + if (IPAddress.TryParse(info.Location.Host, out address)) + { + // The Handle method doesn't need the port + var endpoint = new IPEndPoint(address, info.Location.Port); - IPAddress localAddress = null; + IPAddress localAddress = null; - try - { - var localAddressString = await _appHost.GetLocalApiUrl().ConfigureAwait(false); + try + { + var localAddressString = await _appHost.GetLocalApiUrl().ConfigureAwait(false); - if (!IPAddress.TryParse(localAddressString, out localAddress)) - { - return; - } - } - catch + if (!IPAddress.TryParse(localAddressString, out localAddress)) { return; } - - NatUtility.Handle(localAddress, info, endpoint, NatProtocol.Upnp); } + catch + { + return; + } + + NatUtility.Handle(localAddress, info, endpoint, NatProtocol.Upnp); } } private void ClearCreatedRules(object state) { _createdRules = new List<string>(); - _usnsHandled = new List<string>(); + lock (_usnsHandled) + { + _usnsHandled.Clear(); + } } void NatUtility_UnhandledException(object sender, UnhandledExceptionEventArgs e) |
