summaryrefslogtreecommitdiff
path: root/csharp/src/Ice/Network.cs
diff options
context:
space:
mode:
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)
{