Skip to content

Commit 105721d

Browse files
More sensible writeable state timeout
Fixes #105.
1 parent 9221d2c commit 105721d

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ public class SocketFrameHandler : IFrameHandler
5353
{
5454
// Timeout in seconds to wait for a clean socket close.
5555
public const int SOCKET_CLOSING_TIMEOUT = 1;
56+
// Socket poll timeout in ms. If the socket does not
57+
// become writeable in this amount of time, we throw
58+
// an exception.
59+
protected int m_writeableStateTimeout = 30000;
5660

5761
public NetworkBinaryReader m_reader;
5862
public TcpClient m_socket;
@@ -143,6 +147,7 @@ public int Timeout
143147
{
144148
// make sure the socket timeout is greater than heartbeat interval
145149
m_socket.ReceiveTimeout = value * 4;
150+
m_writeableStateTimeout = value * 4;
146151
}
147152
}
148153
#pragma warning disable 0168
@@ -218,7 +223,7 @@ public void WriteFrame(Frame frame)
218223
{
219224
lock (m_writer)
220225
{
221-
m_socket.Client.Poll(-1, SelectMode.SelectWrite);
226+
m_socket.Client.Poll(m_writeableStateTimeout, SelectMode.SelectWrite);
222227
frame.WriteTo(m_writer);
223228
m_writer.Flush();
224229
}
@@ -228,7 +233,7 @@ public void WriteFrameSet(IList<Frame> frames)
228233
{
229234
lock (m_writer)
230235
{
231-
m_socket.Client.Poll(-1, SelectMode.SelectWrite);
236+
m_socket.Client.Poll(m_writeableStateTimeout, SelectMode.SelectWrite);
232237
foreach(var f in frames)
233238
{
234239
f.WriteTo(m_writer);

0 commit comments

Comments
 (0)