# HG changeset patch # User Syndace # Date 1665069937 -7200 # Node ID 42d3110ac9b161241f663ce11265050d894ee314 # Parent 6c36eb30afb85e49e64d700b1e9fe917b968e4e2 plugin XEP-0384: proper handling of exceptions in `prepare_for_profile` diff -r 6c36eb30afb8 -r 42d3110ac9b1 sat/plugins/plugin_xep_0384.py --- a/sat/plugins/plugin_xep_0384.py Thu Oct 06 17:22:21 2022 +0200 +++ b/sat/plugins/plugin_xep_0384.py Thu Oct 06 17:25:37 2022 +0200 @@ -1468,11 +1468,22 @@ self.__session_manager_waiters[profile] = [] # Build and store the session manager - session_manager = await prepare_for_profile( - self.__sat, - profile, - initial_own_label="Libervia" - ) + try: + session_manager = await prepare_for_profile( + self.__sat, + profile, + initial_own_label="Libervia" + ) + except Exception as e: + # In case of an error during initalization, notify the waiters accordingly + # and delete them + for waiter in self.__session_manager_waiters[profile]: + waiter.errback(e) + del self.__session_manager_waiters[profile] + + # Re-raise the exception + raise + self.__session_managers[profile] = session_manager # Notify the waiters and delete them