diff --git a/src/networkpluginserver.cpp b/src/networkpluginserver.cpp index 0c133a2c65241eb4210b2d38f28d518d7acda6f1..a7efd8fb011db300fe3851b34296bd6d153a113a 100644 --- a/src/networkpluginserver.cpp +++ b/src/networkpluginserver.cpp @@ -56,6 +56,8 @@ #else #include "sys/wait.h" #include "sys/signal.h" +#include +#include #include "popt.h" #endif @@ -1192,7 +1194,7 @@ void NetworkPluginServer::handleRoomJoined(User *user, const Swift::JID &who, co user->getConversationManager()->addConversation(conv); conv->onMessageToSend.connect(boost::bind(&NetworkPluginServer::handleMessageReceived, this, _1, _2)); conv->setNickname(nickname); - conv->setJID(who); + conv->addJID(who); } void NetworkPluginServer::handleRoomLeft(User *user, const std::string &r) { @@ -1301,6 +1303,22 @@ void NetworkPluginServer::handleMessageReceived(NetworkConversation *conv, boost send(c->connection, message); return; } + + if (!msg->getSubject().empty()) { + pbnetwork::ConversationMessage m; + m.set_username(conv->getConversationManager()->getUser()->getJID().toBare()); + m.set_buddyname(conv->getLegacyName()); + m.set_message(msg->getSubject()); + + std::string message; + m.SerializeToString(&message); + + WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_ROOM_SUBJECT_CHANGED); + + Backend *c = (Backend *) conv->getConversationManager()->getUser()->getData(); + send(c->connection, message); + return; + } std::string xhtml;