diff --git a/src/discoinforesponder.cpp b/src/discoinforesponder.cpp index 448ec17dec382b2951ac2b7178d91952185aa635..d3ea87da1ac785aa543bceb80e0505a59a7bf880 100644 --- a/src/discoinforesponder.cpp +++ b/src/discoinforesponder.cpp @@ -39,28 +39,31 @@ namespace Transport { DiscoInfoResponder::DiscoInfoResponder(Swift::IQRouter *router, Config *config) : Swift::GetResponder(router) { m_config = config; - m_config->onBackendConfigUpdated.connect(boost::bind(&DiscoInfoResponder::updateBuddyFeatures, this)); + m_config->onBackendConfigUpdated.connect(boost::bind(&DiscoInfoResponder::updateFeatures, this)); m_buddyInfo = NULL; m_transportInfo.addIdentity(DiscoInfo::Identity(CONFIG_STRING(m_config, "identity.name"), CONFIG_STRING(m_config, "identity.category"), CONFIG_STRING(m_config, "identity.type"))); - std::list features; - features.push_back("jabber:iq:register"); - features.push_back("jabber:iq:gateway"); - features.push_back("jabber:iq:private"); - features.push_back("http://jabber.org/protocol/disco#info"); - features.push_back("http://jabber.org/protocol/commands"); - setTransportFeatures(features); - - updateBuddyFeatures(); + updateFeatures(); } DiscoInfoResponder::~DiscoInfoResponder() { delete m_buddyInfo; } -void DiscoInfoResponder::updateBuddyFeatures() { +void DiscoInfoResponder::updateFeatures() { + std::list features2; + features2.push_back("jabber:iq:register"); + features2.push_back("jabber:iq:gateway"); + features2.push_back("jabber:iq:private"); + features2.push_back("http://jabber.org/protocol/disco#info"); + features2.push_back("http://jabber.org/protocol/commands"); + if (CONFIG_BOOL_DEFAULTED(m_config, "features.muc", false)) { + features2.push_back("http://jabber.org/protocol/muc"); + } + setTransportFeatures(features2); + std::list features; features.push_back("http://jabber.org/protocol/disco#items"); features.push_back("http://jabber.org/protocol/disco#info");