Send a RCON command over the socket
        :param data: The command to send
        :raise RconError: When it's not possible to evaluate the command
        :return str: The server response to the RCON command

def send(self, data):
        """
        Send a RCON command over the socket
        :param data: The command to send
        :raise RconError: When it's not possible to evaluate the command
        :return str: The server response to the RCON command
        """
        try:
            if not data:
                raise RconError('no command supplied')
            with self.lock:
                self.socket.send(self._rconsendstring.format(self.password, data))
        except socket.error, e:
            raise RconError(e.message, e)
        else:
            timeout = self._timeout
            command = data.split(' ')[0]
            if command in self._long_commands_timeout:
                timeout = self._long_commands_timeout[command]
            return self.recvall(timeout=timeout)