From: Michael Marley Date: Sat, 6 Sep 2014 02:16:05 +0000 (-0400) Subject: Do not emit messages if storing them in the DB failed X-Git-Tag: 0.11.0~7^2 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=a4bcc707aed42a8be43848068d82cb0ef2b43d0e Do not emit messages if storing them in the DB failed If a message is not stored in the database, then some of its IDs (networkId at least) will be invalid. If this message is sent to clients, it will cause a nameless empty buffer to appear in the desktop client and will cause Quasseldroid to crash (of course.) Better behavior would be to simply not emit the message, since it can't be displayed properly anyway. --- diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index d28ddfba..ace622fc 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -321,8 +321,8 @@ void CoreSession::processMessages() bufferInfo = Core::bufferInfo(user(), rawMsg.networkId, BufferInfo::StatusBuffer, ""); } Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); - Core::storeMessage(msg); - emit displayMsg(msg); + if(Core::storeMessage(msg)) + emit displayMsg(msg); } else { QHash > bufferInfoCache; @@ -364,10 +364,11 @@ void CoreSession::processMessages() messages << msg; } - Core::storeMessages(messages); - // FIXME: extend protocol to a displayMessages(MessageList) - for (int i = 0; i < messages.count(); i++) { - emit displayMsg(messages[i]); + if(Core::storeMessages(messages)) { + // FIXME: extend protocol to a displayMessages(MessageList) + for (int i = 0; i < messages.count(); i++) { + emit displayMsg(messages[i]); + } } } _processMessages = false;