Browse Source

Use StartNewMessage / EndAndQueueMessage to prevent assert with zero size messages. Closes #478.

Lasse Öörni 11 years ago
parent
commit
3032244467
1 changed files with 21 additions and 1 deletions
  1. 21 1
      Source/Engine/Network/Connection.cpp

+ 21 - 1
Source/Engine/Network/Connection.cpp

@@ -100,7 +100,27 @@ void Connection::SendMessage(int msgID, bool reliable, bool inOrder, const unsig
         return;
         return;
     }
     }
     
     
-    connection_->SendMessage(msgID, reliable, inOrder, 0, contentID, (const char*)data, numBytes);
+    if (numBytes && !data)
+    {
+        LOGERROR("Null pointer supplied for network message data");
+        return;
+    }
+    
+    kNet::NetworkMessage *msg = connection_->StartNewMessage(msgID, numBytes);
+    if (!msg)
+    {
+        LOGERROR("Can not start new network message");
+        return;
+    }
+    
+    msg->reliable = reliable;
+    msg->inOrder = inOrder;
+    msg->priority = 0;
+    msg->contentID = contentID;
+    if (numBytes)
+        memcpy(msg->data, data, numBytes);
+    
+    connection_->EndAndQueueMessage(msg);
 }
 }
 
 
 void Connection::SendRemoteEvent(StringHash eventType, bool inOrder, const VariantMap& eventData)
 void Connection::SendRemoteEvent(StringHash eventType, bool inOrder, const VariantMap& eventData)