Skip to content

Commit e71783f

Browse files
committed
Merge pull request #32 from santa01/master
Fix IMAP mailbox maintanence
2 parents ec74380 + b5a2ab9 commit e71783f

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

src/dm_db.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4290,6 +4290,12 @@ void db_message_set_seq(uint64_t message_id, uint64_t seq)
42904290
END_TRY;
42914291
}
42924292

4293+
int db_move_message(uint64_t message_id, uint64_t mailbox_id)
4294+
{
4295+
return db_update("UPDATE %smessages SET mailbox_idnr = %" PRIu64 " WHERE message_idnr = %" PRIu64 "",
4296+
DBPFX, mailbox_id, message_id);
4297+
}
4298+
42934299
int db_rehash_store(void)
42944300
{
42954301
GList *ids = NULL;

src/dm_db.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,7 @@ char * db_returning(const char *s);
777777

778778
uint64_t db_mailbox_seq_update(uint64_t mailbox_id, uint64_t message_id);
779779
void db_message_set_seq(uint64_t message_id, uint64_t seq);
780+
int db_move_message(uint64_t message_id, uint64_t mailbox_id);
780781

781782
int db_rehash_store(void);
782783

src/maintenance.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,7 +1184,7 @@ int do_erase_old(int days, char * mbtrash_name)
11841184
/* Move message to Trash if the message is in INBOX mailbox and date less then passed date. */
11851185
int do_move_old (int days, char * mbinbox_name, char * mbtrash_name)
11861186
{
1187-
Connection_T c; ResultSet_T r; ResultSet_T r1; PreparedStatement_T s; PreparedStatement_T s1; PreparedStatement_T s2;
1187+
Connection_T c; ResultSet_T r; ResultSet_T r1; PreparedStatement_T s; PreparedStatement_T s1;
11881188
int skip = 1;
11891189
char expire [DEF_FRAGSIZE];
11901190
uint64_t mailbox_to;
@@ -1200,9 +1200,7 @@ int do_move_old (int days, char * mbinbox_name, char * mbtrash_name)
12001200
"WHERE mb.name = ? AND msg.status < %d "
12011201
"AND phys.internal_date < %s",
12021202
DBPFX, DBPFX, DBPFX, MESSAGE_STATUS_DELETE, expire);
1203-
12041203
s1 = db_stmt_prepare(c, "SELECT mailbox_idnr FROM %smailboxes WHERE owner_idnr = ? AND name = ?", DBPFX);
1205-
s2 = db_stmt_prepare(c, "UPDATE %smessages SET mailbox_idnr = ? WHERE message_idnr = ?", DBPFX);
12061204

12071205
db_stmt_set_str(s, 1, mbinbox_name);
12081206

@@ -1225,9 +1223,7 @@ int do_move_old (int days, char * mbinbox_name, char * mbtrash_name)
12251223
}
12261224

12271225
if (!skip) {
1228-
db_stmt_set_u64(s2,1,mailbox_to);
1229-
db_stmt_set_u64(s2,2,id);
1230-
db_stmt_exec(s2);
1226+
db_move_message(id, mailbox_to);
12311227
db_mailbox_seq_update(mailbox_to, 0);
12321228
db_mailbox_seq_update(mailbox_from, 0);
12331229
}

0 commit comments

Comments
 (0)