diff --git a/pyproject.toml b/pyproject.toml index e455442..2f2542d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "vban-cmd" -version = "2.10.2" +version = "2.10.3" description = "Python interface for the VBAN RT Packet Service (Sendtext)" authors = [{ name = "Onyx and Iris", email = "code@onyxandiris.online" }] license = { text = "MIT" } diff --git a/vban_cmd/vbancmd.py b/vban_cmd/vbancmd.py index d63220e..dfcc625 100644 --- a/vban_cmd/vbancmd.py +++ b/vban_cmd/vbancmd.py @@ -36,6 +36,13 @@ class VbanCmd(abc.ABC): for attr, val in kwargs.items(): setattr(self, attr, val) + try: + self._host_ip = socket.gethostbyname(self.host) + except socket.gaierror as e: + raise VBANCMDConnectionError( + f'Unable to resolve hostname {self.host}' + ) from e + self._framecounter = 0 self._framecounter_lock = threading.Lock() self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) @@ -136,14 +143,10 @@ class VbanCmd(abc.ABC): try: self.sock.sendto( VbanPing0Payload.create_packet(self._get_next_framecounter()), - (socket.gethostbyname(self.host), self.port), + (self._host_ip, self.port), ) self.logger.debug(f'PING sent to {self.host}:{self.port}') - except socket.gaierror as e: - raise VBANCMDConnectionError( - f'Unable to resolve hostname {self.host}' - ) from e except Exception as e: raise VBANCMDConnectionError(f'PING failed: {e}') from e @@ -201,7 +204,7 @@ class VbanCmd(abc.ABC): framecounter=self._get_next_framecounter(), payload=payload, ), - (socket.gethostbyname(self.host), self.port), + (self._host_ip, self.port), ) def _set_rt(self, cmd: str, val: Union[str, float]): diff --git a/vban_cmd/worker.py b/vban_cmd/worker.py index 1edbc3f..34b1c57 100644 --- a/vban_cmd/worker.py +++ b/vban_cmd/worker.py @@ -33,7 +33,7 @@ class Subscriber(threading.Thread): nbs, self._remote._get_next_framecounter() ) self._remote.sock.sendto( - sub_packet, (self._remote.host, self._remote.port) + sub_packet, (self._remote._host_ip, self._remote.port) ) self.wait_until_stopped(10)