diff --git a/python/src/deltachat/account.py b/python/src/deltachat/account.py index 416b6a7db..51b73f37e 100644 --- a/python/src/deltachat/account.py +++ b/python/src/deltachat/account.py @@ -590,9 +590,11 @@ class Account(object): self.ac_log_line("stop_ongoing") self.stop_ongoing() - self.ac_log_line("context_shutdown (stop core scheduler)") - self.stop_ongoing() - lib.dc_context_shutdown(self._dc_context) + if self.is_started(): + self.ac_log_line("context_shutdown (stop core scheduler)") + lib.dc_context_shutdown(self._dc_context) + else: + self.ac_log_line("stop_scheduler called on non-running context") def shutdown(self, wait=True): """ shutdown and destroy account (stop callback thread, close and remove diff --git a/python/src/deltachat/events.py b/python/src/deltachat/events.py index 851fcc2a0..5c3dbf9ff 100644 --- a/python/src/deltachat/events.py +++ b/python/src/deltachat/events.py @@ -194,17 +194,18 @@ class EventThread(threading.Thread): def _map_ffi_event(self, ffi_event): name = ffi_event.name + account = self.account if name == "DC_EVENT_CONFIGURE_PROGRESS": data1 = ffi_event.data1 if data1 == 0 or data1 == 1000: success = data1 == 1000 yield "ac_configure_completed", dict(success=success) elif name == "DC_EVENT_INCOMING_MSG": - msg = self.get_message_by_id(ffi_event.data2) + msg = account.get_message_by_id(ffi_event.data2) yield map_system_message(msg) or ("ac_incoming_message", dict(message=msg)) elif name == "DC_EVENT_MSGS_CHANGED": if ffi_event.data2 != 0: - msg = self.account.get_message_by_id(ffi_event.data2) + msg = account.get_message_by_id(ffi_event.data2) if msg.is_outgoing(): res = map_system_message(msg) if res and res[0].startswith("ac_member"): @@ -213,8 +214,8 @@ class EventThread(threading.Thread): elif msg.is_in_fresh(): yield map_system_message(msg) or ("ac_incoming_message", dict(message=msg)) elif name == "DC_EVENT_MSG_DELIVERED": - msg = self.account.get_message_by_id(ffi_event.data2) + msg = account.get_message_by_id(ffi_event.data2) yield "ac_message_delivered", dict(message=msg) elif name == "DC_EVENT_CHAT_MODIFIED": - chat = self.account.get_chat_by_id(ffi_event.data1) + chat = account.get_chat_by_id(ffi_event.data1) yield "ac_chat_modified", dict(chat=chat) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 9855085d2..33f297f44 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -521,11 +521,6 @@ class TestOnlineAccount: ac2.create_chat_by_contact(ac2.create_contact(email=ac1.get_config("addr"))) return chat - def test_double_iter_events(self, acfactory): - ac1 = acfactory.get_one_online_account() - with pytest.raises(RuntimeError): - next(ac1.iter_events()) - @pytest.mark.ignored def test_configure_generate_key(self, acfactory, lp): # A slow test which will generate new keys.