Doh! I hate it when I write a message and mention an attached file, but forget to actually attach the file before sending the message.
-D -- Yes, Java is so bulletproofed that to a C programmer it feels like being in a straightjacket, but it's a really comfy and warm straightjacket, and the world would be a safer place if everyone was straightjacketed most of the time. -- Mark 'Kamikaze' Hughes www: http://dman13.dyndns.org/~dman/ jabber: [EMAIL PROTECTED]
Index: /home/dman/workspaces/oss/gajim/src/common/xmpp/transports.py =================================================================== --- /home/dman/workspaces/oss/gajim/src/common/xmpp/transports.py (revision 3376) +++ /home/dman/workspaces/oss/gajim/src/common/xmpp/transports.py (working copy) @@ -28,15 +28,21 @@ """ import socket,select,base64,dispatcher +import logging from simplexml import ustr from client import PlugIn from protocol import * try: - import dns.resolver + import DNS, random + DNS.ParseResolvConf() + HAVE_DNS = True except: - pass + HAVE_DNS = False + logging.warning( + "Warning: cannot perform SRV queries because 'dns' module is unavailable") + DATA_RECEIVED='DATA RECEIVED' DATA_SENT='DATA SENT' @@ -60,19 +66,24 @@ self._exported_methods=[self.send,self.disconnect] # SRV resolver - if 'dns' in globals(): # if dnspython is available support SRV + if HAVE_DNS : # if dnspython is available support SRV host, port = server possible_queries = ['_xmpp-client._tcp.' + host] + dnsrequest = DNS.Request() for query in possible_queries: try: - answers = [x for x in dns.resolver.query(query, 'SRV')] + response = dnsrequest.req(query, qtype='SRV') + answers = [x for x in response.answers] if answers: - host = str (answers[0].target) - port = int (answers[0].port) + # extract the data from a random SRV RR + rr = random.choice(answers) + _, _, port, host = rr['data'] + port = int(port) break - except: - pass + except DNS.DNSError, err : + # TODO: use the log module instead + logging.warning("An error occurred querying SRV record for %s", query, exc_info=True) server = (host, port) # end of SRV resolver
signature.asc
Description: Digital signature