X-Git-Url: https://git.kaliko.me/?p=python-musicpd.git;a=blobdiff_plain;f=mpd.py;h=e2ef2e82ca7e8c63c9e53a15adaf0675d0edfe63;hp=fdba8ba3af0e0f5239f6ee024da774632879b051;hb=8ec145e72766913295c842c0622952c0e50a73a7;hpb=e1d58548e70307cc5be7eb742d8dac70e78a1ad8 diff --git a/mpd.py b/mpd.py index fdba8ba..e2ef2e8 100644 --- a/mpd.py +++ b/mpd.py @@ -298,29 +298,41 @@ class MPDClient(object): self._rfile = _NotConnected() self._wfile = _NotConnected() - def connect(self, host, port): - if self._sock: - raise ConnectionError("Already connected") - msg = "getaddrinfo returns an empty list" + def _unix_connect(self, path): + sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + sock.connect(path) + return sock + + def _tcp_connect(self, host, port): try: flags = socket.AI_ADDRCONFIG except AttributeError: flags = 0 + msg = "getaddrinfo returns an empty list" for res in socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_STREAM, socket.IPPROTO_TCP, flags): af, socktype, proto, canonname, sa = res try: - self._sock = socket.socket(af, socktype, proto) - self._sock.connect(sa) + sock = socket.socket(af, socktype, proto) + sock.connect(sa) except socket.error, msg: - if self._sock: - self._sock.close() - self._sock = None + if sock: + sock.close() + sock = None continue break - if not self._sock: + if not sock: raise socket.error(msg) + return sock + + def connect(self, host, port): + if self._sock: + raise ConnectionError("Already connected") + if host.startswith("/"): + self._sock = self._unix_connect(host) + else: + self._sock = self._tcp_connect(host, port) self._rfile = self._sock.makefile("rb") self._wfile = self._sock.makefile("wb") try: