From e46e0145a8d2aa1157c3894edc45ee76d1e3e509 Mon Sep 17 00:00:00 2001 From: Stergios Hetelekides Date: Wed, 25 Nov 2020 16:42:34 -0500 Subject: [PATCH] Ensure future is not done when setting exception This is needed to properly handle asyncio timeouts. If the future is already done, then set_exception will raise an exception and the `self.bus._finalize` call will not be reached. --- dbus_next/aio/message_bus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbus_next/aio/message_bus.py b/dbus_next/aio/message_bus.py index 3ffa4e9..83982d9 100644 --- a/dbus_next/aio/message_bus.py +++ b/dbus_next/aio/message_bus.py @@ -59,7 +59,7 @@ def write_callback(self): # wait for writable return except Exception as e: - if self.fut is not None: + if self.fut is not None and not self.fut.done(): self.fut.set_exception(e) self.bus._finalize(e)