diff options
author | Lance Stout <lancestout@gmail.com> | 2012-08-13 11:09:35 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2012-08-13 11:09:35 -0700 |
commit | 92be0514504747811af0b4f160fe8f2b63bf454d (patch) | |
tree | 3715438f2d70bbcc4e35f33abcc0784c2ae8b7b1 /sleekxmpp/plugins/xep_0153/vcard_avatar.py | |
parent | 779c258e2797d3dbcaf9eb5f4c7636b4d76ff0e7 (diff) | |
download | slixmpp-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.py | 18 |
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'): |