--- pympd-0.07.old/src/modules/mpdlib2.py	2006-07-15 01:13:35.000000000 +0100
+++ pympd-0.07/src/modules/mpdlib2.py	2007-11-11 13:36:44.000000000 +0000
@@ -6,13 +6,42 @@
 # OK
 # ACK
 
+def get_socket(host, port):
+    sock_err = sock = sock_addrinfo = None
+
+    try:
+        sock_addrinfo = socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_STREAM)
+    except socket.error, sock_err:
+        raise RuntimeError(sock_err[1])        
+
+    for res in sock_addrinfo:
+        sock_domain, sock_type, sock_proto, canonname, sock_addr = res
+        try:
+            sock = socket.socket(sock_domain, sock_type, sock_proto)
+            sock.settimeout(1)
+        except socket.error, sock_err_msg:
+            continue
+
+        try:
+            sock.connect(sock_addr)
+        except socket.error, sock_err:
+            sock.close()
+            continue
+    
+        break
+    
+    if sock_err:
+        raise RuntimeError(isinstance(sock_err, socket.timeout) and str(sock_err) \
+                               or sock_err[1])
+
+    return sock
+
 class socket_talker(object):
 
     def __init__(self, host, port):
         self.host = host
         self.port = port
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock.connect((host, port))
+        self.sock = get_socket(host, port)
         self.file = self.sock.makefile("rb+")
         self.current_line = ''
         self.ack = ''
