changeset 89f0828cd6be in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=89f0828cd6be
description: handle jid errors
diffstat:
src/common/connection_handlers.py | 60 ++++++++++++++++++++++++-----
1 files changed, 49 insertions(+), 11 deletions(-)
diffs (145 lines):
diff -r f587ef9ef128 -r 89f0828cd6be src/common/connection_handlers.py
--- a/src/common/connection_handlers.py Tue Jul 07 19:17:28 2009 +0200
+++ b/src/common/connection_handlers.py Wed Jul 08 21:41:40 2009 +0200
@@ -758,7 +758,7 @@
if 'jid' not in attr:
continue
try:
- helpers.parse_jid(attr['jid'])
+ attr['jid'] = helpers.parse_jid(attr['jid'])
except common.helpers.InvalidFormat:
# jid is not conform
continue
@@ -1150,7 +1150,10 @@
storage = query.getTag('storage')
metas = storage.getTags('meta')
for meta in metas:
- jid =
helpers.parse_jid(meta.getAttr('jid'))
+ try:
+ jid =
helpers.parse_jid(meta.getAttr('jid'))
+ except common.helpers.InvalidFormat:
+ continue
tag = meta.getAttr('tag')
data = {'jid': jid}
order = meta.getAttr('order')
@@ -1518,13 +1521,17 @@
print_status =
conf.getTagData('print_status')
if not print_status:
print_status =
conf.getTagData('show_status')
- bm = {'name': conf.getAttr('name'),
+ try:
+ bm = {'name':
conf.getAttr('name'),
'jid':
helpers.parse_jid(conf.getAttr('jid')),
'autojoin':
autojoin_val,
'minimize':
minimize_val,
'password':
conf.getTagData('password'),
'nick':
conf.getTagData('nick'),
'print_status':
print_status}
+ except common.helpers.InvalidFormat:
+ log.warn('Invalid JID: %s,
ignoring it' % conf.getAttr('jid'))
+ continue
self.bookmarks.append(bm)
self.dispatch('BOOKMARKS', self.bookmarks)
@@ -1539,14 +1546,22 @@
# http://www.xmpp.org/extensions/xep-0145.html
notes = storage.getTags('note')
for note in notes:
- jid =
helpers.parse_jid(note.getAttr('jid'))
+ try:
+ jid =
helpers.parse_jid(note.getAttr('jid'))
+ except common.helpers.InvalidFormat:
+ log.warn('Invalid JID: %s,
ignoring it' % note.getAttr('jid'))
+ continue
annotation = note.getData()
self.annotations[jid] = annotation
def _rosterSetCB(self, con, iq_obj):
log.debug('rosterSetCB')
for item in iq_obj.getTag('query').getChildren():
- jid = helpers.parse_jid(item.getAttr('jid'))
+ try:
+ jid = helpers.parse_jid(item.getAttr('jid'))
+ except common.helpers.InvalidFormat:
+ log.warn('Invalid JID: %s, ignoring it' %
item.getAttr('jid'))
+ continue
name = item.getAttr('name')
sub = item.getAttr('subscription')
ask = item.getAttr('ask')
@@ -1785,7 +1800,11 @@
action = 'add'
for item in msg.getTag('x',
namespace=common.xmpp.NS_ROSTERX).getChildren():
- jid = helpers.parse_jid(item.getAttr('jid'))
+ try:
+ jid = helpers.parse_jid(item.getAttr('jid'))
+ except common.helpers.InvalidFormat:
+ log.warn('Invalid JID: %s, ignoring it' %
item.getAttr('jid'))
+ continue
name = item.getAttr('name')
groups=[]
for group in item.getTags('group'):
@@ -1832,7 +1851,11 @@
if addressTag and jid == gajim.get_jid_from_account(self.name):
address = addressTag.getTag('address', attrs={'type':
'ofrom'})
if address:
- frm = helpers.parse_jid(address.getAttr('jid'))
+ try:
+ frm =
helpers.parse_jid(address.getAttr('jid'))
+ except common.helpers.InvalidFormat:
+ log.warn('Invalid JID: %s, ignoring it'
% address.getAttr('jid'))
+ return
jid = gajim.get_jid_without_resource(frm)
# invitations
@@ -1850,7 +1873,11 @@
xtags = msg.getTags('x')
for xtag in xtags:
if xtag.getNamespace() == common.xmpp.NS_CONFERENCE and
not invite:
- room_jid =
helpers.parse_jid(xtag.getAttr('jid'))
+ try:
+ room_jid =
helpers.parse_jid(xtag.getAttr('jid'))
+ except common.helpers.InvalidFormat:
+ log.warn('Invalid JID: %s, ignoring it'
% xtag.getAttr('jid'))
+ continue
is_continued = False
if xtag.getTag('continue'):
is_continued = True
@@ -2050,7 +2077,11 @@
def dispatch_invite_message(self, invite, frm):
item = invite.getTag('invite')
- jid_from = helpers.parse_jid(item.getAttr('from'))
+ try:
+ jid_from = helpers.parse_jid(item.getAttr('from'))
+ except common.helpers.InvalidFormat:
+ log.warn('Invalid JID: %s, ignoring it' %
item.getAttr('from'))
+ return
reason = item.getTagData('reason')
item = invite.getTag('password')
password = invite.getTagData('password')
@@ -2254,7 +2285,10 @@
r = destroy.getTagData('reason')
if r:
reason += ' (%s)' % r
- jid =
helpers.parse_jid(destroy.getAttr('jid'))
+ try:
+ jid =
helpers.parse_jid(destroy.getAttr('jid'))
+ except common.helpers.InvalidFormat:
+ pass
if jid:
reason += '\n' + _('You can
join this room instead: %s') % jid
statusCode = ['destroyed']
@@ -2401,7 +2435,11 @@
users_dict = {}
for item in items:
if item.has_attr('jid') and
item.has_attr('affiliation'):
- jid = helpers.parse_jid(item.getAttr('jid'))
+ try:
+ jid =
helpers.parse_jid(item.getAttr('jid'))
+ except common.helpers.InvalidFormat:
+ log.warn('Invalid JID: %s, ignoring it'
% item.getAttr('jid'))
+ return
affiliation = item.getAttr('affiliation')
users_dict[jid] = {'affiliation': affiliation}
if item.has_attr('nick'):
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits