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

Attachment: signature.asc
Description: Digital signature

Reply via email to