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