diff --git a/src/drv_proxy.c b/src/drv_proxy.c index cd0d5aa..0713cd7 100644 --- a/src/drv_proxy.c +++ b/src/drv_proxy.c @@ -272,16 +272,22 @@ static @type@proxy_@name@( store_t *gctx@decl_args@, void (*cb)( @decl_cb_args@v //# DEFINE load_box_print_fmt_cb_args , total=%d, recent=%d //# DEFINE load_box_print_pass_cb_args , total_msgs, recent_msgs //# DEFINE load_box_print_cb_args - for (message_t *msg = msgs; msg; msg = msg->next) + for (message_t *msg = msgs; msg; msg = msg->next) { + if (msg->status & M_DEAD) + continue; debug( " uid=%-5u flags=%-4s size=%-6u tuid=%." stringify(TUIDL) "s\n", msg->uid, (msg->status & M_FLAGS) ? fmt_flags( msg->flags ).str : "?", msg->size, *msg->tuid ? msg->tuid : "?" ); + } //# END //# UNDEFINE find_new_msgs_print_fmt_cb_args //# UNDEFINE find_new_msgs_print_pass_cb_args //# DEFINE find_new_msgs_print_cb_args - for (message_t *msg = msgs; msg; msg = msg->next) + for (message_t *msg = msgs; msg; msg = msg->next) { + if (msg->status & M_DEAD) + continue; debug( " uid=%-5u tuid=%." stringify(TUIDL) "s\n", msg->uid, msg->tuid ); + } //# END //# DEFINE fetch_msg_print_fmt_args , uid=%u, want_flags=%s, want_date=%s diff --git a/src/sync.c b/src/sync.c index 845a883..ba7e12b 100644 --- a/src/sync.c +++ b/src/sync.c @@ -1075,6 +1075,8 @@ box_loaded( int sts, message_t *msgs, int total_msgs, int recent_msgs, void *aux for (t = 0; t < 2; t++) { debug( "synchronizing new messages on %s\n", str_fn[t^1] ); for (tmsg = svars->msgs[t^1]; tmsg; tmsg = tmsg->next) { + if (tmsg->status & M_DEAD) + continue; srec = tmsg->srec; if (srec) { if (srec->status & S_SKIPPED) { @@ -1418,6 +1420,8 @@ msgs_copied( sync_vars_t *svars, int t ) if (!(svars->state[t] & ST_SENT_NEW)) { for (tmsg = svars->new_msgs[t]; tmsg; tmsg = tmsg->next) { + if (tmsg->status & M_DEAD) + continue; if ((srec = tmsg->srec) && (srec->status & S_PENDING)) { if (svars->drv[t]->get_memory_usage( svars->ctx[t] ) >= BufferLimit) { svars->new_msgs[t] = tmsg; @@ -1568,6 +1572,8 @@ msgs_flags_set( sync_vars_t *svars, int t ) goto skip; } for (tmsg = svars->msgs[t]; tmsg; tmsg = tmsg->next) { + if (tmsg->status & M_DEAD) + continue; if (!(tmsg->flags & F_DELETED)) { //debug( " message %u is not deleted\n", tmsg->uid ); // Too noisy continue;