aboutsummaryrefslogtreecommitdiff
path: root/Emby.Common.Implementations/Net
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-12-05 13:47:07 -0500
committerGitHub <noreply@github.com>2016-12-05 13:47:07 -0500
commitd0af746823d93cb9a3089138532045af7b2dc37e (patch)
tree0777537bc850ad9a65d421dd528b04aadc2726c6 /Emby.Common.Implementations/Net
parent7486aca52606e880c6891715449a313fbb84b4b6 (diff)
parent9accc3b025c7071779efbd4fb3dd8ef2b17a6039 (diff)
Merge pull request #2330 from MediaBrowser/dev
update recording fields
Diffstat (limited to 'Emby.Common.Implementations/Net')
-rw-r--r--Emby.Common.Implementations/Net/SocketFactory.cs33
1 files changed, 25 insertions, 8 deletions
diff --git a/Emby.Common.Implementations/Net/SocketFactory.cs b/Emby.Common.Implementations/Net/SocketFactory.cs
index 124252097..79310e017 100644
--- a/Emby.Common.Implementations/Net/SocketFactory.cs
+++ b/Emby.Common.Implementations/Net/SocketFactory.cs
@@ -33,18 +33,35 @@ namespace Emby.Common.Implementations.Net
public ISocket CreateSocket(IpAddressFamily family, MediaBrowser.Model.Net.SocketType socketType, MediaBrowser.Model.Net.ProtocolType protocolType, bool dualMode)
{
- var addressFamily = family == IpAddressFamily.InterNetwork
- ? AddressFamily.InterNetwork
- : AddressFamily.InterNetworkV6;
+ try
+ {
+ var addressFamily = family == IpAddressFamily.InterNetwork
+ ? AddressFamily.InterNetwork
+ : AddressFamily.InterNetworkV6;
- var socket = new Socket(addressFamily, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
+ var socket = new Socket(addressFamily, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
- if (dualMode)
- {
- socket.DualMode = true;
+ if (dualMode)
+ {
+ socket.DualMode = true;
+ }
+
+ return new NetSocket(socket, _logger);
}
+ catch (SocketException ex)
+ {
+ if (dualMode)
+ {
+ _logger.Error("Error creating dual mode socket: {0}. Will retry with ipv4-only.", ex.SocketErrorCode);
+
+ if (ex.SocketErrorCode == SocketError.AddressFamilyNotSupported)
+ {
+ return CreateSocket(IpAddressFamily.InterNetwork, socketType, protocolType, false);
+ }
+ }
- return new NetSocket(socket, _logger);
+ throw;
+ }
}
#region ISocketFactory Members