diff --git a/kasa/transports/xortransport.py b/kasa/transports/xortransport.py index 84fba0a5..da77c899 100644 --- a/kasa/transports/xortransport.py +++ b/kasa/transports/xortransport.py @@ -29,7 +29,12 @@ from kasa.json import loads as json_loads from .basetransport import BaseTransport _LOGGER = logging.getLogger(__name__) -_NO_RETRY_ERRORS = {errno.EHOSTDOWN, errno.EHOSTUNREACH, errno.ECONNREFUSED} +_NO_RETRY_ERRORS = { + errno.EHOSTDOWN, + errno.EHOSTUNREACH, + errno.ENETUNREACH, + errno.ECONNREFUSED, +} _UNSIGNED_INT_NETWORK_ORDER = struct.Struct(">I") diff --git a/tests/protocols/test_iotprotocol.py b/tests/protocols/test_iotprotocol.py index fd8facc9..0db91fca 100644 --- a/tests/protocols/test_iotprotocol.py +++ b/tests/protocols/test_iotprotocol.py @@ -807,10 +807,17 @@ async def test_transport_credentials_hash_from_config(mocker, transport_class): [ (ConnectionRefusedError("dummy exception"), False), (OSError(errno.EHOSTDOWN, os.strerror(errno.EHOSTDOWN)), False), + (OSError(errno.ENETUNREACH, os.strerror(errno.ENETUNREACH)), False), (OSError(errno.ECONNRESET, os.strerror(errno.ECONNRESET)), True), (Exception("dummy exception"), True), ], - ids=("ConnectionRefusedError", "OSErrorNoRetry", "OSErrorRetry", "Exception"), + ids=( + "ConnectionRefusedError", + "OSErrorHostDown", + "OSErrorNetUnreach", + "OSErrorRetry", + "Exception", + ), ) @pytest.mark.parametrize( ("protocol_class", "transport_class"),