Turns out that Lidgren.Network/NetPeer.Internal.cs had calls to
uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;m_socket.IOControl((int)SIO_UDP_CONNRESET, new byte[] { Convert.ToByte(false) }, null);
which can't properly function on OS X, mono has a bug which prevents the exception being thrown properly like it is on Linux or Windows, if SIO_UDP_CONNRESET is called.
What would normally happen on OS X without this fix is SIGABRT in mono and it would then dump a stack trace. (purely because the exception wasn't thrown)
I've added checks which work fine on Linux, mac and windows.
This adds support for the following features:
Turns out that Lidgren.Network/NetPeer.Internal.cs had calls to
uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;
m_socket.IOControl((int)SIO_UDP_CONNRESET, new byte[] { Convert.ToByte(false) }, null);
which can't properly function on OS X, mono has a bug which prevents the exception being thrown properly like it is on Linux or Windows, if SIO_UDP_CONNRESET is called.
What would normally happen on OS X without this fix is SIGABRT in mono and it would then dump a stack trace. (purely because the exception wasn't thrown)
I've added checks which work fine on Linux, mac and windows.
Tested on: