diff --git a/src/presenceoracle.cpp b/src/presenceoracle.cpp index c6717f3b0aec4c7bbe7ab16e3bb77d596938b767..13b3ca5b8eeb6b62abe50e20d1e54a837fd2e78f 100644 --- a/src/presenceoracle.cpp +++ b/src/presenceoracle.cpp @@ -19,6 +19,7 @@ */ #include "transport/presenceoracle.h" +#include "Swiften/Swiften.h" #include @@ -46,9 +47,10 @@ void PresenceOracle::handleStanzaChannelAvailableChanged(bool available) { void PresenceOracle::handleIncomingPresence(Presence::ref presence) { // ignore presences for some contact, we're checking only presences for the transport itself here. - if (!presence->getTo().getNode().empty()) { + bool isMUC = presence->getPayload() != NULL || *presence->getTo().getNode().c_str() == '#'; + // filter out login/logout presence spam + if (!presence->getTo().getNode().empty() && isMUC == false) return; - } JID bareJID(presence->getFrom().toBare()); if (presence->getType() == Presence::Subscribe) {