Author: asterix Date: 2007-01-16 23:36:41 +0100 (Tue, 16 Jan 2007) New Revision: 7847
Modified: trunk/src/common/connection.py trunk/src/common/helpers.py trunk/src/config.py Log: handle correltly SRV and registration on IDN servers. fixes #2898
Modified: trunk/src/common/connection.py =================================================================== --- trunk/src/common/connection.py 2007-01-16 19:19:08 UTC (rev 7846) +++ trunk/src/common/connection.py 2007-01-16 22:36:41 UTC (rev 7847) @@ -350,7 +350,7 @@ self._hostname = hostname if use_srv: # add request for srv query to the resolve, on result '_on_resolve' will be called - gajim.resolver.resolve('_xmpp-client._tcp.' + h.encode('utf-8'), self._on_resolve) + gajim.resolver.resolve('_xmpp-client._tcp.' + helpers.unicode_to_ACE(h), self._on_resolve) else: self._on_resolve('', [])
Modified: trunk/src/common/helpers.py =================================================================== --- trunk/src/common/helpers.py 2007-01-16 19:19:08 UTC (rev 7846) +++ trunk/src/common/helpers.py 2007-01-16 22:36:41 UTC (rev 7847) @@ -25,6 +25,7 @@ import select import sha from encodings.punycode import punycode_encode +from encodings import idna
import gajim from i18n import Q_ @@ -85,6 +86,14 @@
return prep(*decompose_jid(jidstring))
+def unicode_to_ACE(host): + '''convert IDN (Internationalized Domain Names) to ACE (ASCII-compatible encoding)''' + labels = idna.dots.split(host) + converted_labels = [] + for label in labels: + converted_labels.append(idna.ToASCII(label)) + return ".".join(converted_labels) + def parse_resource(resource): '''Perform stringprep on resource and return it''' if resource:
Modified: trunk/src/config.py =================================================================== --- trunk/src/config.py 2007-01-16 19:19:08 UTC (rev 7846) +++ trunk/src/config.py 2007-01-16 22:36:41 UTC (rev 7847) @@ -2991,9 +2991,9 @@ '.') dialogs.ErrorDialog(pritext, sectext) return - server = widgets['server_comboboxentry'].child.get_text() + server = widgets['server_comboboxentry'].child.get_text().decode('utf-8') savepass = widgets['save_password_checkbutton'].get_active() - password = widgets['pass1_entry'].get_text() + password = widgets['pass1_entry'].get_text().decode('utf-8')
if not self.modify: if password == '':