mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 09:26:29 +03:00
perform heuristic moves only if a job is not delete
This commit is contained in:
@@ -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(())
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user