diff --git a/src/vcardresponder.cpp b/src/vcardresponder.cpp index 315f71ba1f69b2646aa928c6d53c7bc5b5e16328..b28bb071d7cc8cdd518c01495b25a5d6af053da1 100644 --- a/src/vcardresponder.cpp +++ b/src/vcardresponder.cpp @@ -27,6 +27,7 @@ #include "transport/user.h" #include "transport/usermanager.h" #include "transport/rostermanager.h" +#include "transport/transport.h" using namespace Swift; using namespace boost; @@ -60,13 +61,20 @@ bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID& return false; } - std::string name = to.getUnescapedNode(); + Swift::JID to_ = to; + + std::string name = to_.getUnescapedNode(); + if (name.empty()) { + to_ = user->getComponent()->getJID(); + std::string name = to_.getUnescapedNode(); + } + if (name.find_last_of("%") != std::string::npos) { name.replace(name.find_last_of("%"), 1, "@"); } m_queries[m_id].from = from; - m_queries[m_id].to = to; + m_queries[m_id].to = to_; m_queries[m_id].id = id; onVCardRequired(user, name, m_id++); return true;