diff --git a/libtransport/NetworkPluginServer.cpp b/libtransport/NetworkPluginServer.cpp index ee90304b1f290845a292bc740c77e4aef71759a8..6871ededbacd682a43e22215396d6f324460ba70 100644 --- a/libtransport/NetworkPluginServer.cpp +++ b/libtransport/NetworkPluginServer.cpp @@ -996,7 +996,11 @@ void NetworkPluginServer::handleRoomListPayload(const std::string &data) { m_component->getFrontend()->clearRoomList(); for (int i = 0; i < payload.room_size() && i < payload.name_size(); i++) { - m_component->getFrontend()->addRoomToRoomList(Swift::JID::getEscapedNode(payload.room(i)) + "@" + m_component->getJID().toString(), payload.name(i)); + std::string legacyName = payload.room(i); + if (legacyName.find_last_of("@") != std::string::npos) { + legacyName.replace(legacyName.find_last_of("@"), 1, "%"); // OK + } + m_component->getFrontend()->addRoomToRoomList(Swift::JID::getEscapedNode(legacyName) + "@" + m_component->getJID().toString(), payload.name(i)); } } #if HAVE_SWIFTEN_3