perform heuristic moves only if a job is not delete

This commit is contained in:
holger krekel
2019-10-01 12:41:07 +02:00
parent f0a7bdb6d6
commit d83aa1e898
2 changed files with 11 additions and 10 deletions

View File

@@ -82,7 +82,7 @@ pub unsafe fn dc_receive_imf(
let mut chat_id = 0;
let mut hidden = 0;
let mut add_delete_job: libc::c_int = 0;
let mut needs_delete_job = false;
let mut insert_msg_id = 0;
let mut sent_timestamp = 0;
@@ -219,7 +219,7 @@ pub unsafe fn dc_receive_imf(
&mut chat_id,
&mut to_id,
flags,
&mut add_delete_job,
&mut needs_delete_job,
to_self,
&mut insert_msg_id,
&mut created_db_entries,
@@ -250,7 +250,7 @@ pub unsafe fn dc_receive_imf(
from_id,
sent_timestamp,
&mut rr_event_to_send,
server_folder,
&server_folder,
server_uid,
);
}
@@ -266,7 +266,8 @@ pub unsafe fn dc_receive_imf(
);
}
if 0 != add_delete_job && !created_db_entries.is_empty() {
// if we delete we don't need to try moving messages
if needs_delete_job && !created_db_entries.is_empty() {
job_add(
context,
Action::DeleteMsgOnImap,
@@ -274,6 +275,8 @@ pub unsafe fn dc_receive_imf(
Params::new(),
0,
);
} else {
context.do_heuristics_moves(server_folder.as_ref(), insert_msg_id);
}
info!(
@@ -306,7 +309,7 @@ unsafe fn add_parts(
chat_id: &mut u32,
to_id: &mut u32,
flags: u32,
add_delete_job: &mut libc::c_int,
needs_delete_job: &mut bool,
to_self: i32,
insert_msg_id: &mut u32,
created_db_entries: &mut Vec<(usize, usize)>,
@@ -401,7 +404,7 @@ unsafe fn add_parts(
let handshake = handle_securejoin_handshake(context, mime_parser, *from_id);
if 0 != handshake & DC_HANDSHAKE_STOP_NORMAL_PROCESSING {
*hidden = 1;
*add_delete_job = handshake & DC_HANDSHAKE_ADD_DELETE_JOB;
*needs_delete_job = 0 != handshake & DC_HANDSHAKE_ADD_DELETE_JOB;
state = MessageState::InSeen;
}
}
@@ -718,7 +721,6 @@ unsafe fn add_parts(
}
}
context.do_heuristics_moves(server_folder.as_ref(), *insert_msg_id);
cleanup(mime_in_reply_to, mime_references);
Ok(())

View File

@@ -682,7 +682,7 @@ impl Imap {
}
}
} else {
return 0;
unreachable!();
}
}
@@ -1536,8 +1536,6 @@ fn precheck_imf(context: &Context, rfc724_mid: &str, server_folder: &str, server
if let Ok((old_server_folder, old_server_uid, msg_id)) =
message::rfc724_mid_exists(context, &rfc724_mid)
{
// note: first mark as seen so that the potential heuristic move below
// does not have a chance to invalidate the uid that we know
if old_server_folder.is_empty() && old_server_uid == 0 {
info!(context, "[move] detected bbc-self {}", rfc724_mid,);
job_add(
@@ -1551,6 +1549,7 @@ fn precheck_imf(context: &Context, rfc724_mid: &str, server_folder: &str, server
info!(context, "[move] detected moved message {}", rfc724_mid,);
update_msg_move_state(context, &rfc724_mid, MoveState::Stay);
}
if old_server_folder != server_folder || old_server_uid != server_uid {
update_server_uid(context, &rfc724_mid, server_folder, server_uid);
}