summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/xep_0153/vcard_avatar.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2012-08-13 11:09:35 -0700
committerLance Stout <lancestout@gmail.com>2012-08-13 11:09:35 -0700
commit92be0514504747811af0b4f160fe8f2b63bf454d (patch)
tree3715438f2d70bbcc4e35f33abcc0784c2ae8b7b1 /sleekxmpp/plugins/xep_0153/vcard_avatar.py
parent779c258e2797d3dbcaf9eb5f4c7636b4d76ff0e7 (diff)
downloadslixmpp-92be0514504747811af0b4f160fe8f2b63bf454d.tar.gz
slixmpp-92be0514504747811af0b4f160fe8f2b63bf454d.tar.bz2
slixmpp-92be0514504747811af0b4f160fe8f2b63bf454d.tar.xz
slixmpp-92be0514504747811af0b4f160fe8f2b63bf454d.zip
Handle Iq errors/timeouts in XEP-0153 hash reset.
Diffstat (limited to 'sleekxmpp/plugins/xep_0153/vcard_avatar.py')
-rw-r--r--sleekxmpp/plugins/xep_0153/vcard_avatar.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/sleekxmpp/plugins/xep_0153/vcard_avatar.py b/sleekxmpp/plugins/xep_0153/vcard_avatar.py
index d940ead1..c74713e5 100644
--- a/sleekxmpp/plugins/xep_0153/vcard_avatar.py
+++ b/sleekxmpp/plugins/xep_0153/vcard_avatar.py
@@ -12,6 +12,7 @@ import threading
from sleekxmpp import JID
from sleekxmpp.stanza import Presence
+from sleekxmpp.exceptions import XMPPError
from sleekxmpp.xmlstream import register_stanza_plugin
from sleekxmpp.xmlstream.matcher import StanzaPath
from sleekxmpp.xmlstream.handler import Callback
@@ -103,15 +104,18 @@ class XEP_0153(BasePlugin):
if own_jid:
self.xmpp.roster[jid].send_last_presence()
- iq = self.xmpp['xep_0054'].get_vcard(jid=jid.bare, ifrom=ifrom)
+ try:
+ iq = self.xmpp['xep_0054'].get_vcard(jid=jid.bare, ifrom=ifrom)
- data = iq['vcard_temp']['PHOTO']['BINVAL']
- if not data:
- new_hash = ''
- else:
- new_hash = hashlib.sha1(data).hexdigest()
+ data = iq['vcard_temp']['PHOTO']['BINVAL']
+ if not data:
+ new_hash = ''
+ else:
+ new_hash = hashlib.sha1(data).hexdigest()
- self.api['set_hash'](jid, args=new_hash)
+ self.api['set_hash'](jid, args=new_hash)
+ except XMPPError:
+ log.debug('Could not retrieve vCard for %s' % jid)
def _recv_presence(self, pres):
if not pres.match('presence/vcard_temp_update'):