mirror of
https://github.com/chatmail/core.git
synced 2026-05-02 12:56:30 +03:00
never block on interrupt_inbox_idle
This commit is contained in:
@@ -144,7 +144,7 @@ impl Context {
|
|||||||
}
|
}
|
||||||
Config::InboxWatch => {
|
Config::InboxWatch => {
|
||||||
let ret = self.sql.set_raw_config(self, key, value);
|
let ret = self.sql.set_raw_config(self, key, value);
|
||||||
interrupt_inbox_idle(self, true);
|
interrupt_inbox_idle(self);
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
Config::SentboxWatch => {
|
Config::SentboxWatch => {
|
||||||
|
|||||||
30
src/job.rs
30
src/job.rs
@@ -480,19 +480,19 @@ pub fn perform_sentbox_idle(context: &Context) {
|
|||||||
.idle(context, use_network);
|
.idle(context, use_network);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn interrupt_inbox_idle(context: &Context, block: bool) {
|
pub fn interrupt_inbox_idle(context: &Context) {
|
||||||
info!(context, "interrupt_inbox_idle called blocking={}", block);
|
info!(context, "interrupt_inbox_idle called");
|
||||||
if block {
|
// we do not block on trying to obtain the thread lock
|
||||||
context.inbox_thread.read().unwrap().interrupt_idle(context);
|
// because we don't know in which state the thread is.
|
||||||
} else {
|
// If it's currently fetching then we can not get the lock
|
||||||
match context.inbox_thread.try_read() {
|
// but we flag it for checking jobs so that idle will be skipped.
|
||||||
Ok(inbox_thread) => {
|
match context.inbox_thread.try_read() {
|
||||||
inbox_thread.interrupt_idle(context);
|
Ok(inbox_thread) => {
|
||||||
}
|
inbox_thread.interrupt_idle(context);
|
||||||
Err(err) => {
|
}
|
||||||
*context.perform_inbox_jobs_needed.write().unwrap() = true;
|
Err(err) => {
|
||||||
warn!(context, "could not interrupt idle: {}", err);
|
*context.perform_inbox_jobs_needed.write().unwrap() = true;
|
||||||
}
|
warn!(context, "could not interrupt idle: {}", err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -604,7 +604,7 @@ pub fn maybe_network(context: &Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interrupt_smtp_idle(context);
|
interrupt_smtp_idle(context);
|
||||||
interrupt_inbox_idle(context, true);
|
interrupt_inbox_idle(context);
|
||||||
interrupt_mvbox_idle(context);
|
interrupt_mvbox_idle(context);
|
||||||
interrupt_sentbox_idle(context);
|
interrupt_sentbox_idle(context);
|
||||||
}
|
}
|
||||||
@@ -972,7 +972,7 @@ pub fn job_add(
|
|||||||
).ok();
|
).ok();
|
||||||
|
|
||||||
match thread {
|
match thread {
|
||||||
Thread::Imap => interrupt_inbox_idle(context, false),
|
Thread::Imap => interrupt_inbox_idle(context),
|
||||||
Thread::Smtp => interrupt_smtp_idle(context),
|
Thread::Smtp => interrupt_smtp_idle(context),
|
||||||
Thread::Unknown => {}
|
Thread::Unknown => {}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user