# Made by Arnaud Fontaine <arnaud@andesi.org> on 20070831
diff -x '*.pyc' -uNr pympd-0.07.old/src/modules/mpdlib2.py pympd-0.07/src/modules/mpdlib2.py
--- pympd-0.07.old/src/modules/mpdlib2.py	2006-07-15 02:13:35.000000000 +0200
+++ pympd-0.07/src/modules/mpdlib2.py	2007-08-31 13:21:19.000000000 +0200
@@ -6,13 +6,40 @@
 # 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)
+        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(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 = ''
