summaryrefslogtreecommitdiff
path: root/csharp/src/Ice/Network.cs
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2018-03-23 16:44:18 +0100
committerBenoit Foucher <benoit@zeroc.com>2018-03-23 16:44:18 +0100
commit0832b460643da92a6b1d6614aa25143594d051bb (patch)
tree384882a715634cb78d3f6c87220b2ab34e26a236 /csharp/src/Ice/Network.cs
parentFixed Objective-C Xcode test warning, improved Slice setACM documentation (diff)
downloadice-0832b460643da92a6b1d6614aa25143594d051bb.tar.bz2
ice-0832b460643da92a6b1d6614aa25143594d051bb.tar.xz
ice-0832b460643da92a6b1d6614aa25143594d051bb.zip
Disabled Windows fast path loopback (ICE-8763)
Diffstat (limited to 'csharp/src/Ice/Network.cs')
-rw-r--r--csharp/src/Ice/Network.cs41
1 files changed, 26 insertions, 15 deletions
diff --git a/csharp/src/Ice/Network.cs b/csharp/src/Ice/Network.cs
index 0981ebadbba..fee3a313700 100644
--- a/csharp/src/Ice/Network.cs
+++ b/csharp/src/Ice/Network.cs
@@ -242,7 +242,13 @@ namespace IceInternal
{
setTcpNoDelay(socket);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 1);
- setTcpLoopbackFastPath(socket);
+ //
+ // FIX: the fast path loopback appears to cause issues with
+ // connection closure when it's enabled. Sometime, a peer
+ // doesn't receive the TCP/IP connection closure (RST) from
+ // the other peer and it ends up hanging. See bug #6093.
+ //
+ //setTcpLoopbackFastPath(socket);
}
catch(SocketException ex)
{
@@ -320,20 +326,25 @@ namespace IceInternal
}
}
- public static void setTcpLoopbackFastPath(Socket socket)
- {
- const int SIO_LOOPBACK_FAST_PATH = (-1744830448);
-
- byte[] OptionInValue = BitConverter.GetBytes(1);
- try
- {
- socket.IOControl(SIO_LOOPBACK_FAST_PATH, OptionInValue, null);
- }
- catch(Exception)
- {
- // Expected on platforms that do not support TCP Loopback Fast Path
- }
- }
+ //
+ // FIX: the fast path loopback appears to cause issues with
+ // connection closure when it's enabled. Sometime, a peer
+ // doesn't receive the TCP/IP connection closure (RST) from
+ // the other peer and it ends up hanging. See bug #6093.
+ //
+ // public static void setTcpLoopbackFastPath(Socket socket)
+ // {
+ // const int SIO_LOOPBACK_FAST_PATH = (-1744830448);
+ // byte[] OptionInValue = BitConverter.GetBytes(1);
+ // try
+ // {
+ // socket.IOControl(SIO_LOOPBACK_FAST_PATH, OptionInValue, null);
+ // }
+ // catch(Exception)
+ // {
+ // // Expected on platforms that do not support TCP Loopback Fast Path
+ // }
+ // }
public static void setBlock(Socket socket, bool block)
{