zeromq / netmq

A 100% native C# implementation of ZeroMQ for .NET
Other
2.93k stars 744 forks source link

Poller thorws exception when signal fails on Recv() when resource temporarily unavailable #1086

Closed tmatthey closed 2 months ago

tmatthey commented 2 months ago

Environment

NetMQ Version:    4.0.1.13
Operating System:  Windows 10
.NET Version:  standard 2.0

Expected behaviour

NetMQ.Core.Mailbox.TryRecv should never throw.

Actual behaviour

Unhandled exception. System.Net.Sockets.SocketException (11): Resource temporarily unavailable
   at System.Net.Sockets.Socket.Receive(Byte[] buffer)
   at NetMQ.Core.Utils.Signaler.Recv()
   at NetMQ.Core.Mailbox.TryRecv(Int32 timeout, Command& command)
   at NetMQ.Core.SocketBase.ProcessCommands(Int32 timeout, Boolean throttle, CancellationToken cancellationToken)
   at NetMQ.Core.SocketBase.GetSocketOption(ZmqSocketOption option)
   at NetMQ.NetMQSelector.Select(Item[] items, Int32 itemsCount, Int64 timeout)
   at NetMQ.NetMQPoller.RunPoller()
   at NetMQ.NetMQPoller.Run(SynchronizationContext syncContext)
   at NetMQ.NetMQPoller.Run()
   at System.Threading.Thread.StartCallback()

Steps to reproduce the behaviour