Hello,

Today I was trying to get ENet running on Linux using Mono and C#, and discovered that ENet does not correctly retry on EAGAIN and EINTR. Mono uses signals to start garbage collections, so not handling these causes spurious failures of enet_host_service and other methods using sockets. I can write a patch for this no problem, but there's one detail I'd like input on first.

enet_socket_wait is sent a timeout. If I retry poll/select, the timeout will be wrong. So, my thought is, introduce a new return value -2 on enet_socket_wait to indicate 'error, but retry'. Functions using the normal ENet convention of < 0 for error will behave as they did before. enet_host_service can then be coded to properly retry with correct timeout. Still, this is an (minor) API change so I thought I'd ask before coding it all up.

All other socket functions can just retry on their own, since there's no timing aspect. This'd all affect unix.c mostly and protocol.c slightly.

Thanks

James

_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss

Reply via email to