changeset be0b7f53098f in /home/hg/repos/gajim
branches:
details:http://hg.gajim.org/gajim?cmd=changeset;node=be0b7f53098f
description: discover server of our contacts on startup if it's not already done.
diffstat:
src/common/connection_handlers.py | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diffs (37 lines):
diff -r ae97933e9b7f -r be0b7f53098f src/common/connection_handlers.py
--- a/src/common/connection_handlers.py Sun Jun 02 21:02:33 2013 +0200
+++ b/src/common/connection_handlers.py Sun Jun 02 22:02:43 2013 +0200
@@ -33,6 +33,7 @@
import sys
import operator
import hashlib
+import gobject
from time import (altzone, daylight, gmtime, localtime, mktime, strftime,
time as time_time, timezone, tzname)
@@ -559,6 +560,7 @@
self.discover_ft_proxies()
gajim.nec.push_incoming_event(RosterReceivedEvent(None,
conn=self))
+ gobject.timeout_add_seconds(10, self.discover_servers)
elif self.awaiting_answers[id_][0] == PRIVACY_ARRIVED:
if iq_obj.getType() != 'error':
self.privacy_rules_supported = True
@@ -2063,6 +2065,17 @@
gajim.proxy65_manager.resolve(proxy, self.connection, our_jid,
testit=testit)
+ def discover_servers(self):
+ if not self.connection:
+ return
+ servers = []
+ for c in gajim.contacts.iter_contacts(self.name):
+ s = gajim.get_server_from_jid(c.jid)
+ if s not in servers and s not in gajim.transport_type:
+ servers.append(s)
+ for s in servers:
+ self.discoverInfo(s)
+
def _on_roster_set(self, roster):
gajim.nec.push_incoming_event(RosterReceivedEvent(None, conn=self,
xmpp_roster=roster))
changeset ae97933e9b7f in /home/hg/repos/gajim
branches:
details:http://hg.gajim.org/gajim?cmd=changeset;node=ae97933e9b7f
description: cache jabber servers too in trnasports_cache table so that they are not considered as transports. Fixes #7360
diffstat:
src/common/connection.py | 5 ++++-
src/common/logger.py | 7 ++++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diffs (50 lines):
diff -r 4bb338fce36f -r ae97933e9b7f src/common/connection.py
--- a/src/common/connection.py Sun May 26 12:58:19 2013 +0200
+++ b/src/common/connection.py Sun Jun 02 21:02:33 2013 +0200
@@ -1845,11 +1845,14 @@
if 'category' in identity and identity['category'] in ('gateway',
'headline') and 'type' in identity:
transport_type = identity['type']
+ if 'category' in identity and identity['category'] == 'server' and \
+ 'type' in identity and identity['type'] == 'im':
+ transport_type = 'jabber' # it's a jabber server
if 'category' in identity and identity['category'] == 'conference' \
and 'type' in identity and identity['type'] == 'text':
is_muc = True
- if transport_type and obj.fjid not in gajim.transport_type:
+ if transport_type != '' and obj.fjid not in gajim.transport_type:
gajim.transport_type[obj.fjid] = transport_type
gajim.logger.save_transport_type(obj.fjid, transport_type)
diff -r 4bb338fce36f -r ae97933e9b7f src/common/logger.py
--- a/src/common/logger.py Sun May 26 12:58:19 2013 +0200
+++ b/src/common/logger.py Sun Jun 02 21:02:33 2013 +0200
@@ -92,7 +92,8 @@
self.TYPE_RSS,
self.TYPE_WEATHER,
self.TYPE_MRIM,
- ) = range(14)
+ self.TYPE_NO_TRANSPORT,
+ ) = range(15)
(
self.SUBSCRIPTION_NONE,
@@ -339,6 +340,8 @@
return constants.TYPE_WEATHER
if type_ == 'mrim':
return constants.TYPE_MRIM
+ if type_ == 'jabber':
+ return constants.TYPE_NO_TRANSPORT
return None
def convert_api_values_to_human_transport_type(self, type_id):
@@ -373,6 +376,8 @@
return 'weather'
if type_id == constants.TYPE_MRIM:
return 'mrim'
+ if type_id == constants.TYPE_NO_TRANSPORT:
+ return 'jabber'
def convert_human_subscription_values_to_db_api_values(self, sub):
"""