proposed patch in #373 is applied. People test. I didnt even know киров@jabber.org can exist. thanks Dimitur Kirov
This commit is contained in:
parent
04ea53ee33
commit
f22c285641
1 changed files with 31 additions and 12 deletions
|
@ -259,8 +259,8 @@ class Connection:
|
||||||
if self.connection:
|
if self.connection:
|
||||||
self.connection.send(common.xmpp.Presence(who, 'subscribed'))
|
self.connection.send(common.xmpp.Presence(who, 'subscribed'))
|
||||||
if who.find("@") <= 0:
|
if who.find("@") <= 0:
|
||||||
self.dispatch('NOTIFY', (prs.getFrom().getStripped(), \
|
self.dispatch('NOTIFY', (prs.getFrom().getStripped().encode('utf8'), \
|
||||||
'offline', 'offline', prs.getFrom().getResource(), prio, \
|
'offline', 'offline', prs.getFrom().getResource().encode('utf8'), prio, \
|
||||||
keyID, None, None, None, None, None, None))
|
keyID, None, None, None, None, None, None))
|
||||||
else:
|
else:
|
||||||
if not status:
|
if not status:
|
||||||
|
@ -268,8 +268,8 @@ class Connection:
|
||||||
self.dispatch('SUBSCRIBE', (who, status))
|
self.dispatch('SUBSCRIBE', (who, status))
|
||||||
elif ptype == 'subscribed':
|
elif ptype == 'subscribed':
|
||||||
jid = prs.getFrom()
|
jid = prs.getFrom()
|
||||||
self.dispatch('SUBSCRIBED', (jid.getStripped(), jid.getResource()))
|
self.dispatch('SUBSCRIBED', (jid.getStripped().encode('utf8'), jid.getResource().encode('utf8')))
|
||||||
self.dispatch('UPDUSER', (jid.getStripped(), jid.getNode(), \
|
self.dispatch('UPDUSER', (jid.getStripped().encode('utf8'), jid.getNode(), \
|
||||||
['General']))
|
['General']))
|
||||||
#BE CAREFUL : no con.updateRosterItem() in a callback
|
#BE CAREFUL : no con.updateRosterItem() in a callback
|
||||||
gajim.log.debug('we are now subscribed to %s' % who)
|
gajim.log.debug('we are now subscribed to %s' % who)
|
||||||
|
@ -284,17 +284,20 @@ class Connection:
|
||||||
if errcode == '409': #conflict : Nick Conflict
|
if errcode == '409': #conflict : Nick Conflict
|
||||||
self.dispatch('ERROR', errmsg)
|
self.dispatch('ERROR', errmsg)
|
||||||
elif errcode == '502': # Internal Timeout:
|
elif errcode == '502': # Internal Timeout:
|
||||||
self.dispatch('NOTIFY', (prs.getFrom().getStripped(),
|
self.dispatch('NOTIFY', (prs.getFrom().getStripped().encode('utf8'),
|
||||||
'error', errmsg, prs.getFrom().getResource(), prio, keyID,
|
'error', errmsg, prs.getFrom().getResource().encode('utf8'), prio, keyID,
|
||||||
prs.getRole(), prs.getAffiliation(), prs.getJid(),
|
prs.getRole(), prs.getAffiliation(), prs.getJid(),
|
||||||
prs.getReason(), prs.getActor(), prs.getStatusCode()))
|
prs.getReason(), prs.getActor(), prs.getStatusCode()))
|
||||||
else:
|
else:
|
||||||
self.dispatch('ERROR_ANSWER', (prs.getFrom().getStripped(), errmsg,
|
self.dispatch('ERROR_ANSWER', (prs.getFrom().getStripped(), errmsg,
|
||||||
errcode))
|
errcode))
|
||||||
if not ptype or ptype == 'unavailable':
|
if not ptype or ptype == 'unavailable':
|
||||||
gajim.logger.write('status', status, prs.getFrom().getStripped(), show)
|
jid = prs.getFrom()
|
||||||
self.dispatch('NOTIFY', (prs.getFrom().getStripped(), show, status,
|
gajim.logger.write('status', status, jid.getStripped().encode('utf8'), show)
|
||||||
prs.getFrom().getResource(), prio, keyID, prs.getRole(),
|
account = prs.getFrom().getStripped().encode('utf8')
|
||||||
|
resource = prs.getFrom().getResource().encode('utf8')
|
||||||
|
self.dispatch('NOTIFY', ( account, show, status,
|
||||||
|
resource, prio, keyID, prs.getRole(),
|
||||||
prs.getAffiliation(), prs.getJid(), prs.getReason(),
|
prs.getAffiliation(), prs.getJid(), prs.getReason(),
|
||||||
prs.getActor(), prs.getStatusCode()))
|
prs.getActor(), prs.getStatusCode()))
|
||||||
# END presenceCB
|
# END presenceCB
|
||||||
|
@ -315,13 +318,17 @@ class Connection:
|
||||||
def _rosterSetCB(self, con, iq_obj):
|
def _rosterSetCB(self, con, iq_obj):
|
||||||
gajim.log.debug('rosterSetCB')
|
gajim.log.debug('rosterSetCB')
|
||||||
for item in iq_obj.getTag('query').getChildren():
|
for item in iq_obj.getTag('query').getChildren():
|
||||||
jid = item.getAttr('jid')
|
jid = item.getAttr('jid').encode('utf8')
|
||||||
name = item.getAttr('name')
|
name = item.getAttr('name')
|
||||||
sub = item.getAttr('subscription')
|
if name:
|
||||||
|
name = name.encode('utf8')
|
||||||
|
sub = item.getAttr('subscription').encode('utf8')
|
||||||
ask = item.getAttr('ask')
|
ask = item.getAttr('ask')
|
||||||
|
if ask:
|
||||||
|
ask = ask.encode('utf8')
|
||||||
groups = []
|
groups = []
|
||||||
for group in item.getTags('group'):
|
for group in item.getTags('group'):
|
||||||
groups.append(group.getData())
|
groups.append(group.getData().encode('utf8'))
|
||||||
self.dispatch('ROSTER_INFO', (jid, name, sub, ask, groups))
|
self.dispatch('ROSTER_INFO', (jid, name, sub, ask, groups))
|
||||||
raise common.xmpp.NodeProcessed
|
raise common.xmpp.NodeProcessed
|
||||||
|
|
||||||
|
@ -502,6 +509,18 @@ class Connection:
|
||||||
roster = self.connection.getRoster().getRaw()
|
roster = self.connection.getRoster().getRaw()
|
||||||
if not roster :
|
if not roster :
|
||||||
roster = {}
|
roster = {}
|
||||||
|
else:
|
||||||
|
for i in roster.keys():
|
||||||
|
props = roster[i]
|
||||||
|
if props.has_key('name') and props['name']:
|
||||||
|
props['name']=props['name'].encode('utf8')
|
||||||
|
if props.has_key('groups') and props['groups']:
|
||||||
|
props['groups']= map(lambda e:e.encode('utf8'),props['groups'])
|
||||||
|
if props.has_key('resources') and props['resources']:
|
||||||
|
props['resources']= map(lambda e:e.encode('utf8'),props['resources'])
|
||||||
|
del roster[i]
|
||||||
|
roster[i.encode('utf8')] = props
|
||||||
|
|
||||||
name = gajim.config.get_per('accounts', self.name, 'name')
|
name = gajim.config.get_per('accounts', self.name, 'name')
|
||||||
hostname = gajim.config.get_per('accounts', self.name, 'hostname')
|
hostname = gajim.config.get_per('accounts', self.name, 'hostname')
|
||||||
if roster.has_key(name + '@' + hostname):
|
if roster.has_key(name + '@' + hostname):
|
||||||
|
|
Loading…
Add table
Reference in a new issue