Skip to content

Commit 4daf62e

Browse files
author
Emile Joubert
committed
Prevent multiple socket closes slightly differently
1 parent ff0138f commit 4daf62e

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

projects/client/RabbitMQ.Client/src/client/impl/SocketFrameHandler_0_9.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public class SocketFrameHandler_0_9 : IFrameHandler
5959
public TcpClient m_socket;
6060
public NetworkBinaryReader m_reader;
6161
public NetworkBinaryWriter m_writer;
62+
private bool m_closed = false;
63+
private Object m_semaphore = new object();
6264

6365
public SocketFrameHandler_0_9(AmqpTcpEndpoint endpoint)
6466
{
@@ -150,8 +152,15 @@ public void WriteFrame(Frame frame)
150152

151153
public void Close()
152154
{
153-
m_socket.LingerState = new LingerOption(true, SOCKET_CLOSING_TIMEOUT);
154-
m_socket.Close();
155+
lock (m_semaphore)
156+
{
157+
if (!m_closed)
158+
{
159+
m_socket.LingerState = new LingerOption(true, SOCKET_CLOSING_TIMEOUT);
160+
m_socket.Close();
161+
m_closed = true;
162+
}
163+
}
155164
}
156165
}
157166
}

0 commit comments

Comments
 (0)