]> kaliko git repositories - python-musicpd.git/blobdiff - musicpd.py
Raises an exception if command contains '\n'
[python-musicpd.git] / musicpd.py
index 47eb7b5cd3afc61306c50413b6835329163927f1..68cd8625f3c71c4d7c510c7a461cb91883d62f71 100644 (file)
@@ -28,7 +28,7 @@ HELLO_PREFIX = "OK MPD "
 ERROR_PREFIX = "ACK "
 SUCCESS = "OK"
 NEXT = "list_OK"
-VERSION = '0.6.0'
+VERSION = '0.6.1'
 #: seconds before a tcp connection attempt times out (overriden by MPD_TIMEOUT env. var.)
 CONNECTION_TIMEOUT = 30
 
@@ -307,8 +307,9 @@ class MPDClient:
                 if mpd_host_env[0]:
                     # A password is actually set
                     self.pwd = mpd_host_env[0]
-                    self.host = mpd_host_env[1]
-                else:
+                    if mpd_host_env[1]:
+                        self.host = mpd_host_env[1]
+                elif mpd_host_env[1]:
                     # No password set but leading @ is an abstract socket
                     self.host = '@'+mpd_host_env[1]
             else:
@@ -405,6 +406,8 @@ class MPDClient:
                 parts.append('{0!s}'.format(Range(arg)))
             else:
                 parts.append('"%s"' % escape(str(arg)))
+        if '\n' in ' '.join(parts):
+            raise CommandError('new line found in the command!')
         self._write_line(" ".join(parts))
 
     def _read_binary(self, amount):
@@ -568,7 +571,7 @@ class MPDClient:
             obj['data'] = self._read_binary(amount)
         except IOError as err:
             raise ConnectionError('Error reading binary content: %s' % err)
-        if len(obj['data']) != amount:
+        if len(obj['data']) != amount:  # can we ever get there?
             raise ConnectionError('Error reading binary content: '
                       'Expects %sB, got %s' % (amount, len(obj['data'])))
         # Fetches trailing new line
@@ -708,6 +711,9 @@ class MPDClient:
         self._reset()
 
     def fileno(self):
+        """Return the socket’s file descriptor (a small integer).
+        This is useful with :py:obj:`select.select`.
+        """
         if self._sock is None:
             raise ConnectionError("Not connected")
         return self._sock.fileno()