added packet slicing for large broadcast chat items, and output warning when chat of serialised item is too big. Also fixed a couple of bugs in the handling of chat packets

This commit is contained in:
csoler 2016-05-26 20:33:24 -04:00
parent 1b5d31ff7f
commit 59aef8ab7b
2 changed files with 39 additions and 34 deletions

View File

@ -127,7 +127,8 @@ void p3ChatService::sendPublicChat(const std::string &msg)
std::cerr << std::endl;
#endif
if (*it == ownId) {
if (*it == ownId)
{
//mHistoryMgr->addMessage(false, RsPeerId(), ownId, ci);
ChatMessage message;
initChatMessage(ci, message);
@ -136,7 +137,8 @@ void p3ChatService::sendPublicChat(const std::string &msg)
RsServer::notify()->notifyChatMessage(message);
mHistoryMgr->addMessage(message);
}
sendItem(ci);
else
checkSizeAndSendMessage(ci);
}
}
@ -567,10 +569,10 @@ uint32_t p3ChatService::getMaxMessageSecuritySize(int type)
{
switch (type)
{
case RS_CHAT_TYPE_PUBLIC:
case RS_CHAT_TYPE_LOBBY:
return MAX_MESSAGE_SECURITY_SIZE;
case RS_CHAT_TYPE_PUBLIC:
case RS_CHAT_TYPE_PRIVATE:
case RS_CHAT_TYPE_DISTANT:
return 0; // unlimited

View File

@ -58,7 +58,10 @@ bool RsServiceSerialiser::serialise(RsItem *i, void *data, uint32_t *pktsize)
return false; /* not enough space */
if (tlvsize > getRsPktMaxSize())
{
std::cerr << "(EE) Serialised packet is too big. Maximum allowed size is " << getRsPktMaxSize() << ". Serialised size is " << tlvsize << ". Please tune your service to correctly split packets" << std::endl;
return false; /* packet too big */
}
*pktsize = tlvsize;