diff --git a/Lidgren.Network/NetClient.cs b/Lidgren.Network/NetClient.cs index d1b63b8..1cde783 100644 --- a/Lidgren.Network/NetClient.cs +++ b/Lidgren.Network/NetClient.cs @@ -128,7 +128,7 @@ namespace Lidgren.Network if (serverConnection == null) { LogWarning("Cannot send message, no server connection!"); - return NetSendResult.Failed; + return NetSendResult.FailedNotConnected; } return serverConnection.SendMessage(msg, method, 0); @@ -143,7 +143,7 @@ namespace Lidgren.Network if (serverConnection == null) { LogWarning("Cannot send message, no server connection!"); - return NetSendResult.Failed; + return NetSendResult.FailedNotConnected; } return serverConnection.SendMessage(msg, method, sequenceChannel); diff --git a/Lidgren.Network/NetConnection.cs b/Lidgren.Network/NetConnection.cs index b849ea9..4d2d968 100644 --- a/Lidgren.Network/NetConnection.cs +++ b/Lidgren.Network/NetConnection.cs @@ -292,6 +292,9 @@ namespace Lidgren.Network // called by SendMessage() and NetPeer.SendMessage; ie. may be user thread internal NetSendResult EnqueueMessage(NetOutgoingMessage msg, NetDeliveryMethod method, int sequenceChannel) { + if (m_status != NetConnectionStatus.Connected) + return NetSendResult.FailedNotConnected; + NetMessageType tp = (NetMessageType)((int)method + sequenceChannel); msg.m_messageType = tp; diff --git a/Lidgren.Network/NetPeer.Send.cs b/Lidgren.Network/NetPeer.Send.cs index 95c7696..e125400 100644 --- a/Lidgren.Network/NetPeer.Send.cs +++ b/Lidgren.Network/NetPeer.Send.cs @@ -55,6 +55,8 @@ namespace Lidgren.Network else { // message must be fragmented! + if (recipient.m_status != NetConnectionStatus.Connected) + return NetSendResult.FailedNotConnected; SendFragmentedMessage(msg, new NetConnection[] { recipient }, method, sequenceChannel); return NetSendResult.Queued; // could be different for each connection; Queued is "most true" } @@ -110,11 +112,8 @@ namespace Lidgren.Network continue; } NetSendResult res = conn.EnqueueMessage(msg, method, sequenceChannel); - if (res == NetSendResult.Dropped) - { - LogDebug(msg + " dropped immediately due to full queues"); + if (res != NetSendResult.Queued && res != NetSendResult.Sent) Interlocked.Decrement(ref msg.m_recyclingCount); - } } } else diff --git a/Lidgren.Network/NetSendResult.cs b/Lidgren.Network/NetSendResult.cs index e63d247..f8a526b 100644 --- a/Lidgren.Network/NetSendResult.cs +++ b/Lidgren.Network/NetSendResult.cs @@ -8,9 +8,9 @@ namespace Lidgren.Network public enum NetSendResult { /// - /// Message failed to enqueue; for example if there's no connection in place + /// Message failed to enqueue because there is no connection /// - Failed = 0, + FailedNotConnected = 0, /// /// Message was immediately sent