From 161a7988902ffad8327e8c4891772f7b016cdbfb 2018-02-01 18:30:52 From: me@boku.ru Date: 2018-02-01 18:30:52 Subject: [PATCH] Use the default JID resource for the sender when forming carbons --- diff --git a/include/transport/Buddy.h b/include/transport/Buddy.h index 11c16bb9d0ec30edebf332cdc9be53f2e5361f47..69899021c8ae78ac9baefe7e7e91e8f7d23744f8 100644 --- a/include/transport/Buddy.h +++ b/include/transport/Buddy.h @@ -25,6 +25,9 @@ #include "Swiften/Elements/VCard.h" #include "Swiften/Elements/Presence.h" +//Default resource name which contacts use +#define JID_DEFAULT_RESOURCE "bot" + namespace Transport { class RosterManager; diff --git a/libtransport/Buddy.cpp b/libtransport/Buddy.cpp index d5161622426baec877e543bfe174edc7394be08b..7c95e9bbbac474b2c7922785b4ef9903b971e89e 100644 --- a/libtransport/Buddy.cpp +++ b/libtransport/Buddy.cpp @@ -49,7 +49,7 @@ void Buddy::sendPresence() { void Buddy::generateJID() { m_jid = Swift::JID(); - m_jid = Swift::JID(getSafeName(), m_rosterManager->getUser()->getComponent()->getJID().toString(), "bot"); + m_jid = Swift::JID(getSafeName(), m_rosterManager->getUser()->getComponent()->getJID().toString(), JID_DEFAULT_RESOURCE); } void Buddy::setID(long id) { diff --git a/libtransport/Conversation.cpp b/libtransport/Conversation.cpp index a42515c1e6814284061522ad9a5654b5b9900af6..7ae742e48478716e992f131dbe7217b8dd6cd23e 100644 --- a/libtransport/Conversation.cpp +++ b/libtransport/Conversation.cpp @@ -241,9 +241,13 @@ void Conversation::handleMessage(SWIFTEN_SHRPTR_NAMESPACE::shared_ptrgetFrom(); - message->setFrom(message->getTo()); - message->setTo(from); + Swift::JID from = message->getTo(); + if (from.getResource().empty()) { + //If no resource is specified, set the same that is used for legacy network contacts + from = Swift::JID(from.getNode(), from.getDomain(), JID_DEFAULT_RESOURCE); + } + message->setTo(message->getFrom()); + message->setFrom(from); //Carbons should be sent to every resource directly. //Even if we tried to send to bare jid, the server would at best route it