From 29bba199dabc0d11fe41f8e27ede49942c70cf0e Mon Sep 17 00:00:00 2001 From: Jens Jorgensen Date: Wed, 13 Mar 2024 09:29:45 -0500 Subject: [PATCH 1/2] udp errors should result in protocol.error_received --- uvloop/handles/udp.pyx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/uvloop/handles/udp.pyx b/uvloop/handles/udp.pyx index bbe60d56..a3a23cab 100644 --- a/uvloop/handles/udp.pyx +++ b/uvloop/handles/udp.pyx @@ -244,14 +244,20 @@ cdef class UDPTransport(UVBaseTransport): ctx.close() exc = convert_error(err) - self._fatal_error(exc, True) + if isinstance(exc, OSError): + self._protocol.error_received(exc) + else: + self._fatal_error(exc, True) else: self._maybe_pause_protocol() else: if err < 0: exc = convert_error(err) - self._fatal_error(exc, True) + if isinstance(exc, OSError): + self._protocol.error_received(exc) + else: + self._fatal_error(exc, True) else: self._on_sent(None, self.context.copy()) From dd53a3e6edd5d5e3b5816eb657f26a17a7b7e49e Mon Sep 17 00:00:00 2001 From: Jens Jorgensen Date: Mon, 26 Aug 2024 12:46:56 -0500 Subject: [PATCH 2/2] fixes per @fantix --- uvloop/handles/udp.pyx | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/uvloop/handles/udp.pyx b/uvloop/handles/udp.pyx index a3a23cab..ef20c3f7 100644 --- a/uvloop/handles/udp.pyx +++ b/uvloop/handles/udp.pyx @@ -245,21 +245,14 @@ cdef class UDPTransport(UVBaseTransport): exc = convert_error(err) if isinstance(exc, OSError): - self._protocol.error_received(exc) + run_in_context1(self.context.copy(), self._protocol.error_received, exc) else: self._fatal_error(exc, True) else: self._maybe_pause_protocol() else: - if err < 0: - exc = convert_error(err) - if isinstance(exc, OSError): - self._protocol.error_received(exc) - else: - self._fatal_error(exc, True) - else: - self._on_sent(None, self.context.copy()) + self._on_sent(convert_error(err) if err < 0 else None, self.context.copy()) cdef _on_receive(self, bytes data, object exc, object addr): if exc is None: