@@ -916,7 +916,7 @@ impl Session {
916916 context
917917 . sql
918918 . transaction ( move |transaction| {
919- transaction. execute ( "DELETE FROM imap WHERE folder=?" , ( folder, ) ) ?;
919+ transaction. execute ( "DELETE FROM imap WHERE transport_id=? AND folder=?" , ( transport_id , folder, ) ) ?;
920920 for ( uid, ( rfc724_mid, target) ) in & msgs {
921921 // This may detect previously undetected moved
922922 // messages, so we update server_folder too.
@@ -1054,14 +1054,16 @@ impl Session {
10541054 ///
10551055 /// This is the only place where messages are moved or deleted on the IMAP server.
10561056 async fn move_delete_messages ( & mut self , context : & Context , folder : & str ) -> Result < ( ) > {
1057+ let transport_id = self . transport_id ( ) ;
10571058 let rows = context
10581059 . sql
10591060 . query_map_vec (
10601061 "SELECT id, uid, target FROM imap
1061- WHERE folder = ?
1062- AND target != folder
1063- ORDER BY target, uid" ,
1064- ( folder, ) ,
1062+ WHERE folder = ?
1063+ AND transport_id = ?
1064+ AND target != folder
1065+ ORDER BY target, uid" ,
1066+ ( folder, transport_id) ,
10651067 |row| {
10661068 let rowid: i64 = row. get ( 0 ) ?;
10671069 let uid: u32 = row. get ( 1 ) ?;
@@ -1277,10 +1279,10 @@ impl Session {
12771279 } ;
12781280 let is_seen = fetch. flags ( ) . any ( |flag| flag == Flag :: Seen ) ;
12791281 if is_seen
1280- && let Some ( chat_id) = mark_seen_by_uid ( context, folder, uid_validity, uid)
1282+ && let Some ( chat_id) = mark_seen_by_uid ( context, transport_id , folder, uid_validity, uid)
12811283 . await
12821284 . with_context ( || {
1283- format ! ( "failed to update seen status for msg {folder}/{uid}" )
1285+ format ! ( "Transport {transport_id}: Failed to update seen status for msg {folder}/{uid}" )
12841286 } ) ?
12851287 {
12861288 updated_chat_ids. insert ( chat_id) ;
@@ -2359,6 +2361,7 @@ pub(crate) async fn prefetch_should_download(
23592361/// Returns updated chat ID if any message was marked as seen.
23602362async fn mark_seen_by_uid (
23612363 context : & Context ,
2364+ transport_id : u32 ,
23622365 folder : & str ,
23632366 uid_validity : u32 ,
23642367 uid : u32 ,
@@ -2369,12 +2372,13 @@ async fn mark_seen_by_uid(
23692372 "SELECT id, chat_id FROM msgs
23702373 WHERE id > 9 AND rfc724_mid IN (
23712374 SELECT rfc724_mid FROM imap
2372- WHERE folder=?1
2373- AND uidvalidity=?2
2374- AND uid=?3
2375+ WHERE transport_id=?
2376+ AND folder=?
2377+ AND uidvalidity=?
2378+ AND uid=?
23752379 LIMIT 1
23762380 )" ,
2377- ( & folder, uid_validity, uid) ,
2381+ ( transport_id , & folder, uid_validity, uid) ,
23782382 |row| {
23792383 let msg_id: MsgId = row. get ( 0 ) ?;
23802384 let chat_id: ChatId = row. get ( 1 ) ?;
0 commit comments