def sendPresence(pytrans, to, fro, show=None, status=None, priority=None, ptype=None, avatarHash=None, nickname=None, payload=[]):
# Strip the resource off any presence subscribes (as per XMPP RFC 3921 Section 5.1.6)
# Makes eJabberd behave :)
- if ptype == "subscribe":
+ if ptype in ("subscribe", "subscribed", "unsubscribe", "unsubscribed"):
to = jid.intern(to).userhost()
+ fro = jid.intern(fro).userhost()
el = Element((None, "presence"))
el.attributes["to"] = to
error.attributes["type"] = etype
error.attributes["code"] = str(utils.errorCodeMap[condition])
desc = error.addElement(condition)
- desc.attributes["xmlns"] = "urn:ietf:params:xml:ns:xmpp-stanzas"
+ desc.attributes["xmlns"] = disco.XMPP_STANZAS
text = error.addElement("text")
- text.attributes["xmlns"] = "urn:ietf:params:xml:ns:xmpp-stanzas"
+ text.attributes["xmlns"] = disco.XMPP_STANZAS
text.addContent(explanation)
if(body and len(body) > 0):
b = el.addElement("body")
ptype = el.getAttribute("type")
if ptype and (ptype.startswith("subscribe") or ptype.startswith("unsubscribe")):
LogEvent(INFO, self.jabberID, "Parsed subscription presence packet")
- self.subscriptionReceived(toj.userhost(), ptype)
- elif ptype == "probe":
- LogEvent(INFO, self.jabberID, "Parsed presence probe")
- self.contactList.getContact(toj.userhost()).sendPresence(fro)
+ self.subscriptionReceived(fro, toj.userhost(), ptype)
else:
status = None
show = None
show = child.__str__()
elif(child.name == "priority"):
priority = child.__str__()
- elif(child.defaultUri == disco.XVCARDUPDATE):
+ elif(child.uri == disco.XVCARDUPDATE):
avatarHash = " "
for child2 in child.elements():
if(child2.name == "photo"):
""" Override this method to be notified when presence is received """
pass
- def subscriptionReceived(self, source, subtype):
+ def subscriptionReceived(self, source, dest, subtype):
""" Override this method to be notified when a subscription packet is received """
pass