diff --git a/pyxmpp/resolver.py b/pyxmpp/resolver.py index 528252e..19a6f8d 100644 --- a/pyxmpp/resolver.py +++ b/pyxmpp/resolver.py @@ -31,7 +31,6 @@ import dns.name import dns.exception import random -from encodings import idna import logging from .exceptions import DNSError, UnexpectedCNAMEError @@ -136,7 +135,8 @@ def resolve_srv(domain, service, proto="tcp"): for a in service_aliases[service]: names_to_try.append(u"_%s._%s.%s" % (a,proto,domain)) for name in names_to_try: - name = idna.ToASCII(name) + if isinstance(name, unicode): + name = name.encode("idna") try: r = dns.resolver.query(name, 'SRV') except dns.exception.DNSException, err: @@ -188,7 +188,8 @@ def getaddrinfo(host, port, family = None, return [(AF_INET, socktype, proto, host, (host, port))] if ipv6_re.match(host) and family in (AF_UNSPEC, AF_INET6): return [(AF_INET6, socktype, proto, host, (host, port))] - host=idna.ToASCII(host) + if isinstance(host, unicode): + host = host.encode("idna") rtypes = [] if family in (AF_UNSPEC, AF_INET6): rtypes.append(("AAAA", AF_INET6)) diff --git a/pyxmpp/sasl/digest_md5.py b/pyxmpp/sasl/digest_md5.py index 23de678..c964c38 100644 --- a/pyxmpp/sasl/digest_md5.py +++ b/pyxmpp/sasl/digest_md5.py @@ -338,8 +338,8 @@ def _make_response(self,charset,realms,nonce): params.append('qop=auth') serv_type=self.password_manager.get_serv_type().encode("us-ascii") - host=self.password_manager.get_serv_host().encode("us-ascii") - serv_name=self.password_manager.get_serv_name().encode("us-ascii") + host=self.password_manager.get_serv_host().encode("idna") + serv_name=self.password_manager.get_serv_name().encode("utf-8") if serv_name and serv_name != host: digest_uri="%s/%s/%s" % (serv_type,host,serv_name) diff --git a/pyxmpp/streambase.py b/pyxmpp/streambase.py index b70d573..df7ea12 100644 --- a/pyxmpp/streambase.py +++ b/pyxmpp/streambase.py @@ -36,7 +36,7 @@ from pyxmpp import xmlextra from pyxmpp.expdict import ExpiringDictionary -from pyxmpp.utils import to_utf8 +from pyxmpp.utils import to_utf8, from_utf8 from pyxmpp.stanza import Stanza from pyxmpp.error import StreamErrorNode from pyxmpp.iq import Iq @@ -184,7 +184,7 @@ def connect(self,addr,port,service=None,to=None): def _connect(self, addr, port, service = None, to = None): """Same as `Stream.connect` but assume `self.lock` is acquired.""" if to is None: - to = str(addr) + to = from_utf8(addr) allow_cname = True if service is not None: self.state_change("resolving srv", (addr, service)) @@ -239,7 +239,7 @@ def _connect(self, addr, port, service = None, to = None): self.addr=addr self.port=port - self._connect_socket(s,to) + self._connect_socket(s, to) self.last_keepalive=time.time() def accept(self,sock,myname): @@ -354,9 +354,9 @@ def stream_start(self,doc): to_from_mismatch=0 if self.initiator: self.stream_id=r.prop("id") - peer=r.prop("from") + peer = from_utf8(r.prop("from")) if peer: - peer=JID(peer) + peer = JID(peer) if self.peer: if peer and peer!=self.peer: self.__logger.debug("peer hostname mismatch:" @@ -365,7 +365,7 @@ def stream_start(self,doc): else: self.peer=peer else: - to=r.prop("to") + to = from_utf8(r.prop("to")) if to: to=self.check_to(to) if not to: