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 chat_id = 0;
let mut hidden = 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 insert_msg_id = 0;
let mut sent_timestamp = 0; let mut sent_timestamp = 0;
@@ -219,7 +219,7 @@ pub unsafe fn dc_receive_imf(
&mut chat_id, &mut chat_id,
&mut to_id, &mut to_id,
flags, flags,
&mut add_delete_job, &mut needs_delete_job,
to_self, to_self,
&mut insert_msg_id, &mut insert_msg_id,
&mut created_db_entries, &mut created_db_entries,
@@ -250,7 +250,7 @@ pub unsafe fn dc_receive_imf(
from_id, from_id,
sent_timestamp, sent_timestamp,
&mut rr_event_to_send, &mut rr_event_to_send,
server_folder, &server_folder,
server_uid, 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( job_add(
context, context,
Action::DeleteMsgOnImap, Action::DeleteMsgOnImap,
@@ -274,6 +275,8 @@ pub unsafe fn dc_receive_imf(
Params::new(), Params::new(),
0, 0,
); );
} else {
context.do_heuristics_moves(server_folder.as_ref(), insert_msg_id);
} }
info!( info!(
@@ -306,7 +309,7 @@ unsafe fn add_parts(
chat_id: &mut u32, chat_id: &mut u32,
to_id: &mut u32, to_id: &mut u32,
flags: u32, flags: u32,
add_delete_job: &mut libc::c_int, needs_delete_job: &mut bool,
to_self: i32, to_self: i32,
insert_msg_id: &mut u32, insert_msg_id: &mut u32,
created_db_entries: &mut Vec<(usize, usize)>, 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); let handshake = handle_securejoin_handshake(context, mime_parser, *from_id);
if 0 != handshake & DC_HANDSHAKE_STOP_NORMAL_PROCESSING { if 0 != handshake & DC_HANDSHAKE_STOP_NORMAL_PROCESSING {
*hidden = 1; *hidden = 1;
*add_delete_job = handshake & DC_HANDSHAKE_ADD_DELETE_JOB; *needs_delete_job = 0 != handshake & DC_HANDSHAKE_ADD_DELETE_JOB;
state = MessageState::InSeen; 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); cleanup(mime_in_reply_to, mime_references);
Ok(()) Ok(())

View File

@@ -682,7 +682,7 @@ impl Imap {
} }
} }
} else { } 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)) = if let Ok((old_server_folder, old_server_uid, msg_id)) =
message::rfc724_mid_exists(context, &rfc724_mid) 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 { if old_server_folder.is_empty() && old_server_uid == 0 {
info!(context, "[move] detected bbc-self {}", rfc724_mid,); info!(context, "[move] detected bbc-self {}", rfc724_mid,);
job_add( 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,); info!(context, "[move] detected moved message {}", rfc724_mid,);
update_msg_move_state(context, &rfc724_mid, MoveState::Stay); update_msg_move_state(context, &rfc724_mid, MoveState::Stay);
} }
if old_server_folder != server_folder || old_server_uid != server_uid { if old_server_folder != server_folder || old_server_uid != server_uid {
update_server_uid(context, &rfc724_mid, server_folder, server_uid); update_server_uid(context, &rfc724_mid, server_folder, server_uid);
} }