From 7a485ef4d0d74313bff8c9c7b2ee2dcb5c4a75e9 Mon Sep 17 00:00:00 2001 From: mathieui Date: Mon, 6 Aug 2012 15:38:09 +0200 Subject: Add a common.safeJID function, and use it everywhere --- src/bookmark.py | 4 +-- src/common.py | 7 ++++ src/contact.py | 9 ++--- src/core.py | 82 ++++++++++++++---------------------------- src/roster.py | 11 +++--- src/tabs.py | 108 ++++++++++++++++++++------------------------------------ src/windows.py | 7 ++-- 7 files changed, 88 insertions(+), 140 deletions(-) diff --git a/src/bookmark.py b/src/bookmark.py index 95f42dd8..8d84022d 100644 --- a/src/bookmark.py +++ b/src/bookmark.py @@ -3,7 +3,7 @@ import logging from sys import version_info from sleekxmpp.plugins.xep_0048 import * -from core import JID +from common import safeJID from config import config log = logging.getLogger(__name__) @@ -204,7 +204,7 @@ def get_local(): return rooms = rooms.split(':') for room in rooms: - jid = JID(room) + jid = safeJID(room) if jid.bare == '': continue if jid.resource != '': diff --git a/src/common.py b/src/common.py index aae5928c..46306cdb 100644 --- a/src/common.py +++ b/src/common.py @@ -10,6 +10,7 @@ various useful functions """ from datetime import datetime, timedelta +from sleekxmpp import JID, InvalidJID import base64 import os import mimetypes @@ -265,3 +266,9 @@ def parse_command_args_to_alias(arg, strto): else: var_num = True return dest + +def safeJID(*args, **kwargs): + try: + return JID(*args, **kwargs) + except InvalidJID: + return JID('') diff --git a/src/contact.py b/src/contact.py index b8963a71..7111b1da 100644 --- a/src/contact.py +++ b/src/contact.py @@ -13,7 +13,8 @@ the roster. import logging log = logging.getLogger(__name__) -from sleekxmpp.xmlstream import JID +from sleekxmpp import JID +from common import safeJID class Resource(object): """ @@ -24,7 +25,7 @@ class Resource(object): """ data: the dict to use as a source """ - self._jid = JID(jid) # Full jid + self._jid = safeJID(jid) # Full jid self._data = data @property @@ -110,7 +111,7 @@ class Contact(object): return self.__item['subscription'] def __contains__(self, value): - return value in self.__item.resources or JID(value).resource in self.__item.resources + return value in self.__item.resources or safeJID(value).resource in self.__item.resources def __len__(self): """Number of resources""" @@ -122,7 +123,7 @@ class Contact(object): def __getitem__(self, key): """Return the corresponding Resource object, or None""" - res = JID(key).resource + res = safeJID(key).resource resources = self.__item.resources item = resources.get(res, None) or resources.get(key, None) return Resource(key, item) if item else None diff --git a/src/core.py b/src/core.py index 06f7f1cb..5368ff93 100644 --- a/src/core.py +++ b/src/core.py @@ -25,6 +25,7 @@ import singleton import collections from sleekxmpp import JID, InvalidJID +from common import safeJID from sleekxmpp.xmlstream.stanzabase import StanzaBase from sleekxmpp.xmlstream.handler import Callback @@ -624,7 +625,7 @@ class Core(object): If none already exist, and create is "True", we create it and return it. Otherwise, we return None """ - jid = JID(jid) + jid = safeJID(jid) # We first check if we have a conversation opened with this precise resource conversation = self.get_tab_by_name(jid.full, tabs.ConversationTab) if not conversation: @@ -1343,7 +1344,7 @@ class Core(object): if self.current_tab() == start: break else: - while nb not in JID(self.current_tab().get_name()).user: + while nb not in safeJID(self.current_tab().get_name()).user: self.tabs.append(self.tabs.pop(0)) if self.current_tab() is start: break @@ -1352,7 +1353,7 @@ class Core(object): def completion_win(self, the_input): """Completion for /win""" - l = [JID(tab.get_name()).user for tab in self.tabs] + l = [safeJID(tab.get_name()).user for tab in self.tabs] l.remove('') return the_input.auto_completion(l, ' ', quotify=False) @@ -1365,14 +1366,11 @@ class Core(object): if len(arg) > 1: return self.command_help('list') elif arg: - try: - server = JID(arg[0]).server - except InvalidJID: - server = JID('') + server = safeJID(arg[0]).server else: if not isinstance(self.current_tab(), tabs.MucTab): return self.information('Please provide a server', 'Error') - server = JID(self.current_tab().get_name()).server + server = safeJID(self.current_tab().get_name()).server list_tab = tabs.MucListTab(server) self.add_tab(list_tab, True) self.xmpp.plugin['xep_0030'].get_items(jid=server, block=False, callback=list_tab.on_muc_list_item_received) @@ -1383,7 +1381,7 @@ class Core(object): for tab in self.tabs: # TODO, also from an history if isinstance(tab, tabs.MucTab) and\ tab.get_name() not in muc_serv_list: - muc_serv_list.append(JID(tab.get_name()).server) + muc_serv_list.append(safeJID(tab.get_name()).server) if muc_serv_list: return the_input.auto_completion(muc_serv_list, ' ', quotify=False) @@ -1403,10 +1401,7 @@ class Core(object): args = common.shell_split(arg) if len(args) < 1: return self.command_help('version') - try: - jid = JID(args[0]) - except InvalidJID: - jid = JID('') + jid = safeJID(args[0]) if jid.resource or jid not in roster: self.xmpp.plugin['xep_0092'].get_version(jid, callback=callback) elif jid in roster: @@ -1434,13 +1429,10 @@ class Core(object): tab = self.current_tab() if not isinstance(tab, tabs.MucTab) and not isinstance(tab, tabs.PrivateTab): return - room = JID(tab.get_name()).bare + room = safeJID(tab.get_name()).bare nick = tab.own_nick else: - try: - info = JID(args[0]) - except InvalidJID: - info = JID('') + info = safeJID(args[0]) if info.resource == '': default = os.environ.get('USER') if os.environ.get('USER') else 'poezio' nick = config.get('default_nick', '') @@ -1462,7 +1454,7 @@ class Core(object): # check if the current room's name has a server if isinstance(self.current_tab(), tabs.MucTab) and\ self.current_tab().get_name().find('@') != -1: - room += '@%s' % JID(self.current_tab().get_name()).domain + room += '@%s' % safeJID(self.current_tab().get_name()).domain else: # no server could be found, print a message and return self.information(_("You didn't specify a server for the room you want to join"), 'Error') return @@ -1512,10 +1504,7 @@ class Core(object): if len(txt.split()) != 2: # we are not on the 1st argument of the command line return False - try: - jid = JID(txt.split()[1]) - except InvalidJID: - jid = JID('') + jid = safeJID(txt.split()[1]) if jid.server: if jid.resource or jid.full.endswith('/'): # we are writing the resource: complete the node @@ -1540,7 +1529,7 @@ class Core(object): serv_list = [] for tab in self.tabs: if isinstance(tab, tabs.MucTab): - serv_list.append('%s@%s'% (jid.user, JID(tab.get_name()).host)) + serv_list.append('%s@%s'% (jid.user, safeJID(tab.get_name()).host)) serv_list.extend(list(self.pending_invites.keys())) the_input.auto_completion(serv_list, '') return True @@ -1572,10 +1561,7 @@ class Core(object): self.information('Bookmarks added and saved.', 'Info') return else: - try: - info = JID(args[0]) - except InvalidJID: - return self.information('Invalid JID.', 'Error') + info = safeJID(args[0]) if info.resource != '': nick = info.resource roomname = info.bare @@ -1608,12 +1594,9 @@ class Core(object): n += 1 if len(args) == 1: - jid = JID('') + jid = safeJID('') else: - try: - jid = JID(args[1]) - except InvalidJID: - jid = JID('') + jid = safeJID(args[1]) if len(args) > 2: return if jid.server and (jid.resource or jid.full.endswith('/')): @@ -1673,10 +1656,7 @@ class Core(object): self.information("Could not add the bookmarks.", "Info") return else: - try: - info = JID(args[0]) - except InvalidJID: - return self.information('Invalid JID.', 'Error') + info = safeJID(args[0]) if info.resource != '': nick = info.resource roomname = info.bare @@ -1717,12 +1697,9 @@ class Core(object): n += 1 if len(args) == 1: - jid = JID('') + jid = safeJID('') else: - try: - jid = JID(args[1]) - except InvalidJID: - jid = JID('') + jid = safeJID(args[1]) if len(args) == 2: return the_input.auto_completion(['true', 'false'], '') @@ -1869,12 +1846,12 @@ class Core(object): message = args[1] else: if isinstance(tab, tabs.MucTab): - domain = JID(tab.get_name()).domain + domain = safeJID(tab.get_name()).domain else: self.information(_("No server specified"), "Error") return for tab in self.tabs: - if isinstance(tab, tabs.MucTab) and JID(tab.get_name()).domain == domain: + if isinstance(tab, tabs.MucTab) and safeJID(tab.get_name()).domain == domain: if tab.joined: muc.leave_groupchat(tab.core.xmpp, tab.get_name(), tab.own_nick, message) tab.joined = False @@ -1891,7 +1868,7 @@ class Core(object): serv_list = [] for tab in self.tabs: if isinstance(tab, tabs.MucTab): - serv = JID(tab.get_name()).server + serv = safeJID(tab.get_name()).server if not serv in serv_list: serv_list.append(serv) return the_input.auto_completion(serv_list, ' ') @@ -1910,7 +1887,7 @@ class Core(object): seconds = iq['last_activity']['seconds'] status = iq['last_activity']['status'] from_ = iq['from'] - if not JID(from_).user: + if not safeJID(from_).user: msg = 'The uptime of %s is %s.' % ( from_, common.parse_secs_to_str(seconds)) @@ -1920,11 +1897,7 @@ class Core(object): common.parse_secs_to_str(seconds), (' and his/her last status was %s' % status) if status else '',) self.information(msg, 'Info') - try: - jid = JID(arg) - except InvalidJID: - self.information('No valid JID given', 'Error') - return + jid = safeJID(arg) self.xmpp.plugin['xep_0012'].get_last_activity(jid, block=False, callback=callback) def completion_activity(self, the_input): @@ -1961,10 +1934,7 @@ class Core(object): args = common.shell_split(arg) if not len(args): return - try: - jid = JID(args[0]) - except InvalidJID: - jid = JID('') + jid = safeJID(args[0]) if jid.bare not in self.pending_invites: return reason = args[1] if len(args) > 1 else '' @@ -1987,7 +1957,7 @@ class Core(object): """/invitations""" build = "" for invite in self.pending_invites: - build += "%s by %s" % (invite, JID(self.pending_invites[invite]).bare) + build += "%s by %s" % (invite, safeJID(self.pending_invites[invite]).bare) if self.pending_invites: build = "You are invited to the following rooms:\n" + build else: diff --git a/src/roster.py b/src/roster.py index af3c3563..adf0fd2a 100644 --- a/src/roster.py +++ b/src/roster.py @@ -17,7 +17,8 @@ from contact import Contact from roster_sorting import SORTING_METHODS, GROUP_SORTING_METHODS from os import path as p -from sleekxmpp.xmlstream.stanzabase import JID +from common import safeJID +from sleekxmpp import JID from sleekxmpp.exceptions import IqError @@ -48,7 +49,7 @@ class Roster(object): def __getitem__(self, key): """Get a Contact from his bare JID""" - key = JID(key).bare + key = safeJID(key).bare if key in self.contacts and self.contacts[key] is not None: return self.contacts[key] if key in self.jids(): @@ -62,7 +63,7 @@ class Roster(object): def __delitem__(self, jid): """Remove a contact from the roster""" - jid = JID(jid).bare + jid = safeJID(jid).bare contact = self[jid] if not contact: return @@ -85,7 +86,7 @@ class Roster(object): def __contains__(self, key): """True if the bare jid is in the roster, false otherwise""" - return JID(key).bare in self.jids() + return safeJID(key).bare in self.jids() @property def jid(self): @@ -120,7 +121,7 @@ class Roster(object): def jids(self): """List of the contact JIDS""" - return [key for key in self.__node.keys() if JID(key).server not in self.blacklist and key != self.jid] + return [key for key in self.__node.keys() if safeJID(key).server not in self.blacklist and key != self.jid] def get_contacts(self): """ diff --git a/src/tabs.py b/src/tabs.py index 1cc924b8..9e9e55ba 100644 --- a/src/tabs.py +++ b/src/tabs.py @@ -39,6 +39,7 @@ import multiuserchat as muc from theming import get_theme +from common import safeJID from sleekxmpp import JID, InvalidJID from sleekxmpp.xmlstream import matcher from sleekxmpp.xmlstream.handler import Callback @@ -804,13 +805,10 @@ class MucTab(ChatTab): if not arg: return self.core.command_help('version') if arg in [user.nick for user in self.users]: - jid = JID(self.name) + jid = safeJID(self.name) jid.resource = arg else: - try: - jid = JID(arg) - except InvalidJID: - jid = JID('') + jid = safeJID(arg) self.core.xmpp.plugin['xep_0092'].get_version(jid, callback=callback) def command_nick(self, arg): @@ -1147,7 +1145,7 @@ class MucTab(ChatTab): def get_nick(self): if config.getl('show_muc_jid', 'true') == 'false': - return JID(self.name).user + return safeJID(self.name).user return self.name def get_text_window(self): @@ -1200,7 +1198,7 @@ class MucTab(ChatTab): self.core.events.trigger('muc_join', presence, self) if from_nick == self.own_nick: self.joined = True - roster.blacklist.add(JID(from_room).server) + roster.blacklist.add(safeJID(from_room).server) if self.get_name() in self.core.initial_joins: self.core.initial_joins.remove(self.get_name()) self._state = 'normal' @@ -1297,7 +1295,7 @@ class MucTab(ChatTab): self.own_nick = new_nick # also change our nick in all private discussion of this room for _tab in self.core.tabs: - if isinstance(_tab, PrivateTab) and JID(_tab.get_name()).bare == self.name: + if isinstance(_tab, PrivateTab) and safeJID(_tab.get_name()).bare == self.name: _tab.own_nick = new_nick user.change_nick(new_nick) color = user.color[0] if config.get_by_tabname('display_user_color_in_join_part', '', self.general_jid, True) == 'true' else 3 @@ -1579,7 +1577,7 @@ class PrivateTab(ChatTab): self.commands['close'] = (self.command_unquery, _("Usage: /close\nClose: Close the tab."), None) self.commands['version'] = (self.command_version, _('Usage: /version\nVersion: Get the software version of the current interlocutor (usually its XMPP client and Operating System).'), None) self.resize() - self.parent_muc = self.core.get_tab_by_name(JID(name).bare, MucTab) + self.parent_muc = self.core.get_tab_by_name(safeJID(name).bare, MucTab) self.on = True self.update_commands() self.update_keys() @@ -1689,7 +1687,7 @@ class PrivateTab(ChatTab): if arg: self.parent_muc.command_info(arg) else: - user = JID(self.name).resource + user = safeJID(self.name).resource self.parent_muc.command_info(user) def resize(self): @@ -1719,7 +1717,7 @@ class PrivateTab(ChatTab): return self.name def get_nick(self): - return JID(self.name).resource + return safeJID(self.name).resource def on_input(self, key, raw): if not raw and key in self.key_func: @@ -1729,7 +1727,7 @@ class PrivateTab(ChatTab): if not self.on: return False empty_after = self.input.get_text() == '' or (self.input.get_text().startswith('/') and not self.input.get_text().startswith('//')) - tab = self.core.get_tab_by_name(JID(self.name).bare, MucTab) + tab = self.core.get_tab_by_name(safeJID(self.name).bare, MucTab) if tab and tab.joined: self.send_composing_chat_state(empty_after) return False @@ -1738,7 +1736,7 @@ class PrivateTab(ChatTab): self.state = 'normal' self.text_win.remove_line_separator() self.text_win.add_line_separator(self._text_buffer) - tab = self.core.get_tab_by_name(JID(self.name).bare, MucTab) + tab = self.core.get_tab_by_name(safeJID(self.name).bare, MucTab) if tab and tab.joined and config.get_by_tabname( 'send_chat_states', 'true', self.general_jid, True) == 'true'\ and not self.input.get_text() and self.on: @@ -1747,7 +1745,7 @@ class PrivateTab(ChatTab): def on_gain_focus(self): self.state = 'current' curses.curs_set(1) - tab = self.core.get_tab_by_name(JID(self.name).bare, MucTab) + tab = self.core.get_tab_by_name(safeJID(self.name).bare, MucTab) if tab and tab.joined and config.get_by_tabname( 'send_chat_states', 'true', self.general_jid, True) == 'true'\ and not self.input.get_text() and self.on: @@ -1768,7 +1766,7 @@ class PrivateTab(ChatTab): display a message. """ self.add_message('\x193}%(old)s\x19%(info_col)s} is now known as \x193}%(new)s' % {'old':old_nick, 'new':new_nick, 'info_col': get_theme().COLOR_INFORMATION_TEXT[0]}) - new_jid = JID(self.name).bare+'/'+new_nick + new_jid = safeJID(self.name).bare+'/'+new_nick self.name = new_jid def user_left(self, status_message, from_nick): @@ -1789,7 +1787,7 @@ class PrivateTab(ChatTab): The user (or at least someone with the same nick) came back in the MUC """ self.activate() - tab = self.core.get_tab_by_name(JID(self.name).bare, MucTab) + tab = self.core.get_tab_by_name(safeJID(self.name).bare, MucTab) color = 3 if tab and config.get_by_tabname('display_user_color_in_join_part', '', self.general_jid, True): user = tab.get_user_by_name(nick) @@ -1910,10 +1908,7 @@ class RosterInfoTab(Tab): item = self.roster_win.selected_row if arg: - try: - jid = JID(arg) - except InvalidJID: - jid = JID('') + jid = safeJID(arg) elif isinstance(item, Contact): jid = item.bare_jid elif isinstance(item, Resource): @@ -1939,10 +1934,7 @@ class RosterInfoTab(Tab): item = self.roster_win.selected_row if arg: - try: - jid = JID(arg) - except InvalidJID: - jid = JID('') + jid = safeJID(arg) elif isinstance(item, Contact): jid = item.bare_jid elif isinstance(item, Resource): @@ -2062,10 +2054,7 @@ class RosterInfoTab(Tab): self.core.information('No subscription to deny') return else: - try: - jid = JID(arg).bare - except InvalidJID: - jid = JID('') + jid = safeJID(arg).bare if not jid in [jid for jid in roster.jids()]: self.core.information('No subscription to deny') return @@ -2079,10 +2068,7 @@ class RosterInfoTab(Tab): Add the specified JID to the roster, and set automatically accept the reverse subscription """ - try: - jid = JID(JID(args.strip()).bare) - except InvalidJID: - return self.core.information('Invalid JID.', 'Error') + jid = safeJID(safeJID(args.strip()).bare) if not jid: self.core.information(_('No JID specified'), 'Error') return @@ -2097,10 +2083,7 @@ class RosterInfoTab(Tab): args = common.shell_split(arg) if not args: return self.core.command_help('name') - try: - jid = JID(args[0]).bare - except InvalidJID: - jid = JID('') + jid = safeJID(args[0]).bare name = args[1] if len(args) == 2 else '' contact = roster[jid] @@ -2120,10 +2103,7 @@ class RosterInfoTab(Tab): args = common.shell_split(args) if len(args) != 2: return - try: - jid = JID(args[0]).bare - except InvalidJID: - jid = JID('') + jid = safeJID(args[0]).bare group = args[1] contact = roster[jid] @@ -2154,10 +2134,7 @@ class RosterInfoTab(Tab): args = common.shell_split(arg) if len(args) != 3: return self.core.command_help('groupmove') - try: - jid = JID(args[0]).bare - except InvalidJID: - jid = JID('') + jid = safeJID(args[0]).bare group_from = args[1] group_to = args[2] @@ -2203,10 +2180,7 @@ class RosterInfoTab(Tab): args = common.shell_split(args) if len(args) != 2: return - try: - jid = JID(args[0]).bare - except InvalidJID: - jid = JID('') + jid = safeJID(args[0]).bare group = args[1] contact = roster[jid] @@ -2235,10 +2209,7 @@ class RosterInfoTab(Tab): from its presence, and cancel its subscription to our. """ if args.strip(): - try: - jid = JID(args.strip()).bare - except InvalidJID: - jid = JID('') + jid = safeJID(args.strip()).bare else: item = self.roster_win.selected_row if isinstance(item, Contact): @@ -2299,7 +2270,7 @@ class RosterInfoTab(Tab): def completion_remove(self, the_input): """ - From with any JID presence in the roster + Completion for /remove """ jids = [jid for jid in roster.jids()] return the_input.auto_completion(jids, '', quotify=False) @@ -2395,10 +2366,7 @@ class RosterInfoTab(Tab): self.core.information('No subscription to accept') return else: - try: - jid = JID(arg).bare - except InvalidJID: - jid = JID('') + jid = safeJID(arg).bare contact = roster[jid] if contact is None: return @@ -2607,7 +2575,7 @@ class RosterInfoTab(Tab): if isinstance(selected_row, Contact): jid = selected_row.bare_jid elif isinstance(selected_row, Resource): - jid = JID(selected_row.jid).bare + jid = safeJID(selected_row.jid).bare else: return self.on_slash() @@ -2682,7 +2650,7 @@ class ConversationTab(ChatTab): @property def general_jid(self): - return JID(self.get_name()).bare + return safeJID(self.get_name()).bare @staticmethod def add_information_element(plugin_name, callback): @@ -2719,7 +2687,7 @@ class ConversationTab(ChatTab): msg['attention'] = True self.core.events.trigger('conversation_say_after', msg, self) msg.send() - logger.log_message(JID(self.get_name()).bare, self.core.own_nick, line) + logger.log_message(safeJID(self.get_name()).bare, self.core.own_nick, line) self.cancel_paused_delay() self.text_win.refresh() self.input.refresh() @@ -2742,7 +2710,7 @@ class ConversationTab(ChatTab): status = iq['last_activity']['status'] from_ = iq['from'] msg = '\x19%s}The last activity of %s was %s ago%s' - if not JID(from_).user: + if not safeJID(from_).user: msg = '\x19%s}The uptime of %s is %s.' % ( get_theme().COLOR_INFORMATION_TEXT[0], from_, @@ -2760,7 +2728,7 @@ class ConversationTab(ChatTab): def command_info(self, arg): contact = roster[self.get_name()] - jid = JID(self.get_name()) + jid = safeJID(self.get_name()) if jid.resource: resource = contact[jid.full] else: @@ -2808,7 +2776,7 @@ class ConversationTab(ChatTab): if arg: return self.core.command_version(arg) jid = self.name - jid = JID(jid) + jid = safeJID(jid) if not jid.resource: if jid in roster: resource = roster[jid].get_highest_priority_resource() @@ -2837,7 +2805,7 @@ class ConversationTab(ChatTab): self.input.refresh() def refresh_info_header(self): - self.info_header.refresh(self.get_name(), roster[self.get_name()] or JID(self.get_name()).user, + self.info_header.refresh(self.get_name(), roster[self.get_name()] or safeJID(self.get_name()).user, self.text_win, self.chatstate, ConversationTab.additional_informations) self.input.refresh() @@ -2845,7 +2813,7 @@ class ConversationTab(ChatTab): return self.name def get_nick(self): - jid = JID(self.name) + jid = safeJID(self.name) contact = roster[jid.bare] if contact: return contact.name or jid.user @@ -2863,7 +2831,7 @@ class ConversationTab(ChatTab): def on_lose_focus(self): contact = roster[self.get_name()] - jid = JID(self.get_name()) + jid = safeJID(self.get_name()) if contact: if jid.resource: resource = contact[jid.full] @@ -2880,7 +2848,7 @@ class ConversationTab(ChatTab): def on_gain_focus(self): contact = roster[self.get_name()] - jid = JID(self.get_name()) + jid = safeJID(self.get_name()) if contact: if jid.resource: resource = contact[jid.full] @@ -3009,7 +2977,7 @@ class MucListTab(Tab): if iq['type'] == 'error': self.set_error(iq['error']['type'], iq['error']['code'], iq['error']['text']) return - items = [{'node-part': JID(item[0]).user if JID(item[0]).server == self.name else JID(item[0]).bare, + items = [{'node-part': safeJID(item[0]).user if safeJID(item[0]).server == self.name else safeJID(item[0]).bare, 'jid': item[0], 'name': item[2] or '' ,'users': ''} for item in iq['disco_items'].get_items()] self.listview.add_lines(items) @@ -3293,7 +3261,7 @@ def jid_and_name_match(contact, txt): """ if not txt: return True - if txt in JID(contact.bare_jid).user: + if txt in safeJID(contact.bare_jid).user: return True if txt in contact.name: return True @@ -3306,7 +3274,7 @@ def jid_and_name_match_slow(contact, txt): """ if not txt: return True # Everything matches when search is empty - user = JID(contact.bare_jid).user + user = safeJID(contact.bare_jid).user if diffmatch(txt, user): return True if contact.name and diffmatch(txt, contact.name): diff --git a/src/windows.py b/src/windows.py index c2a77411..6e1fd9ec 100644 --- a/src/windows.py +++ b/src/windows.py @@ -29,6 +29,7 @@ from roster import RosterGroup from poopt import cut_text from sleekxmpp import JID +from common import safeJID import core import wcwidth @@ -431,7 +432,7 @@ class PrivateInfoWin(InfoWin): self._refresh() def write_room_name(self, name): - jid = JID(name) + jid = safeJID(name) room_name, nick = jid.bare, jid.resource self.addstr(nick, to_curses_attr(get_theme().COLOR_PRIVATE_NAME)) txt = ' from room %s' % room_name @@ -464,7 +465,7 @@ class ConversationInfoWin(InfoWin): # from someone not in our roster. In this case, we display # only the maximum information from the message we can get. log.debug('Refresh: %s',self.__class__.__name__) - jid = JID(jid) + jid = safeJID(jid) if contact: if jid.resource: resource = contact[jid.full] @@ -539,7 +540,7 @@ class ConversationStatusMessageWin(InfoWin): def refresh(self, jid, contact): log.debug('Refresh: %s',self.__class__.__name__) - jid = JID(jid) + jid = safeJID(jid) if contact: if jid.resource: resource = contact[jid.full] -- cgit v1.2.3