diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index 586c55ebb3323a6372b2c01f5bbe70ccf04e08d6..6d512fb99b8904606250bcd43b23928fff277b18 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -11,8 +11,8 @@ backend_port=10001 users_per_backend=2 backend=../../backends/libpurple/spectrum_libpurple_backend #backend=../../backends/libircclient-qt/spectrum_libircclient-qt_backend -protocol=prpl-jabber -#protocol=prpl-msn +#protocol=prpl-jabber +protocol=prpl-msn #protocol=prpl-icq [database] 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;