diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index cf5ed81ea..04d039a5f 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -657,7 +657,7 @@ pub unsafe extern "C" fn dc_get_next_event(events: *mut dc_event_emitter_t) -> * #[no_mangle] pub unsafe extern "C" fn dc_stop_io(context: *mut dc_context_t) { if context.is_null() { - eprintln!("ignoring careless call to dc_shutdown()"); + eprintln!("ignoring careless call to dc_stop_io()"); return; } let ctx = &*context; diff --git a/python/src/deltachat/account.py b/python/src/deltachat/account.py index 3a895c292..4d2d13338 100644 --- a/python/src/deltachat/account.py +++ b/python/src/deltachat/account.py @@ -710,7 +710,7 @@ class Account(object): if self._event_thread.is_alive(): self.log("WARN: event thread did not terminate yet, ignoring.") - self.log("remove dc_context references, making the Account unusuable") + self.log("remove dc_context references, making the Account unusable") self._dc_context = None self._shutdown_event.set() diff --git a/src/context.rs b/src/context.rs index 9286552be..f37341b5e 100644 --- a/src/context.rs +++ b/src/context.rs @@ -202,6 +202,11 @@ impl Context { /// Stops the IO scheduler. pub async fn stop_io(&self) { + // Sending an event wakes up event pollers (get_next_event) + // so the caller of stop_io() can arrange for proper termination. + // For this, the caller needs to instruct the event poller + // to terminate on receiving the next event and then call stop_io() + // which will emit the below event(s) info!(self, "stopping IO"); if let Err(err) = self.inner.stop_io().await {