home · contact · privacy
Handle socket_gaierror also during connection, avoid hard-coded errno ints. master
authorChristian Heller <c.heller@plomlompom.de>
Mon, 3 Nov 2025 19:06:05 +0000 (20:06 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 3 Nov 2025 19:06:05 +0000 (20:06 +0100)
src/ircplom/irc_conn.py

index fd46c0d311f596f311dcfa21f4ae638e365bce5d..3e15e04bc3fbea8aeda0998bf4f917df7d4f846f 100644 (file)
@@ -1,7 +1,7 @@
 'Low-level IRC protocol / server connection management.'
 # built-ins
 from abc import ABC, abstractmethod
-from socket import EAI_AGAIN, socket, gaierror as socket_gaierror
+from socket import EAI_AGAIN, EBADF, socket, gaierror as socket_gaierror
 from ssl import create_default_context as create_ssl_context
 from datetime import datetime
 from typing import Callable, Iterator, NamedTuple, Optional, Self
@@ -204,8 +204,10 @@ class BaseIrcConnection(QueueMixin, ABC):
                     continue
                 except ConnectionResetError as e:
                     raise IrcConnException(retry=True) from e
+                except socket_gaierror as e:
+                    raise IrcConnException(retry=e.errno == EAI_AGAIN) from e
                 except OSError as e:
-                    if e.errno == 9:
+                    if e.errno == EBADF:
                         raise IrcConnException(retry=True) from e
                     raise e
                 if not bytes_new: