diff --git a/SteamTransport/Client.cs b/SteamTransport/Client.cs index ede8e194..507fc650 100644 --- a/SteamTransport/Client.cs +++ b/SteamTransport/Client.cs @@ -75,7 +75,10 @@ public class Client fixed (byte* pData = segment.Array) { var result = SteamNetworkingSockets.SendMessageToConnection(_conn, (IntPtr)(pData + segment.Offset), (uint)segment.Count, Util.MirrorChannel2SendFlag(channelId), out _); - _transport.OnClientDataSent?.Invoke(segment, channelId); + if (result == EResult.k_EResultOK) + _transport.OnClientDataSent?.Invoke(segment, channelId); + else + _transport.OnClientError?.Invoke(TransportError.InvalidSend, $"send returned {result}"); } } } @@ -100,6 +103,8 @@ public class Client public void Flush() { var result = SteamNetworkingSockets.FlushMessagesOnConnection(_conn); + if (result != EResult.k_EResultOK) + _transport.OnClientError?.Invoke(TransportError.Unexpected, $"flush returned {result}"); } public void Close() diff --git a/SteamTransport/Server.cs b/SteamTransport/Server.cs index 3c756f10..1508d08e 100644 --- a/SteamTransport/Server.cs +++ b/SteamTransport/Server.cs @@ -69,7 +69,10 @@ public class Server fixed (byte* pData = segment.Array) { var result = SteamNetworkingSockets.SendMessageToConnection(conn, (IntPtr)(pData + segment.Offset), (uint)segment.Count, Util.MirrorChannel2SendFlag(channelId), out _); - _transport.OnServerDataSent?.Invoke(connectionId, segment, channelId); + if (result == EResult.k_EResultOK) + _transport.OnServerDataSent?.Invoke(connectionId, segment, channelId); + else + _transport.OnServerError?.Invoke(connectionId, TransportError.InvalidSend, $"send returned {result}"); } } } @@ -100,6 +103,8 @@ public class Server foreach (var conn in _conns) { var result = SteamNetworkingSockets.FlushMessagesOnConnection(conn); + if (result != EResult.k_EResultOK) + _transport.OnServerError?.Invoke((int)conn.m_HSteamNetConnection, TransportError.Unexpected, $"flush returned {result}"); } }