diff --git a/pymodbus/client/udp.py b/pymodbus/client/udp.py index 9f70bbba1..5b50a22cf 100644 --- a/pymodbus/client/udp.py +++ b/pymodbus/client/udp.py @@ -204,6 +204,8 @@ def close(self): :meta private: """ + if self.socket: + self.socket.close() self.socket = None def send(self, request: bytes, addr: tuple | None = None) -> int: diff --git a/test/client/test_client_sync.py b/test/client/test_client_sync.py index da36b8a77..891b04100 100755 --- a/test/client/test_client_sync.py +++ b/test/client/test_client_sync.py @@ -61,6 +61,15 @@ def test_udp_client_is_socket_open(self): client = ModbusUdpClient("127.0.0.1") assert client.is_socket_open() + def test_udp_client_close_releases_socket(self): + """Test the udp client close method releases the socket.""" + client = ModbusUdpClient("127.0.0.1") + assert client.connect() + sock = client.socket + client.close() + assert sock.fileno() == -1 + assert not client.connected + def test_udp_client_send(self): """Test the udp client send method.""" client = ModbusUdpClient("127.0.0.1")