From 96425ce8dba13b3c9221c492fdb7805df1a95953 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Sun, 19 Jun 2011 10:09:49 +0200 Subject: [PATCH] Asnwer to VCards without to attribute --- spectrum/src/sample.cfg | 4 ++-- src/vcardresponder.cpp | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index 586c55eb..6d512fb9 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 315f71ba..b28bb071 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;