diff --git a/src/user.cpp b/src/user.cpp index de4823a0a75174022f6aec7e23f6283325bd3937..5452ddc420f35b6832814fe798453038c9b99457 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -115,11 +115,12 @@ void User::handlePresence(Swift::Presence::ref presence) { Swift::Presence::ref highest = m_presenceOracle->getHighestPriorityPresence(m_jid.toBare()); if (highest) { - highest->setTo(presence->getFrom().toBare()); - highest->setFrom(m_component->getJID()); - m_component->getStanzaChannel()->sendPresence(highest); - LOG4CXX_INFO(logger, m_jid.toString() << ": Changing legacy network presence to " << highest->getType()); - onPresenceChanged(highest); + Swift::Presence::ref response = Swift::Presence::create(highest); + response->setTo(presence->getFrom().toBare()); + response->setFrom(m_component->getJID()); + m_component->getStanzaChannel()->sendPresence(response); + LOG4CXX_INFO(logger, m_jid.toString() << ": Changing legacy network presence to " << response->getType()); + onPresenceChanged(response); } else { Swift::Presence::ref response = Swift::Presence::create();