commit f2f519e20b75a0cfb21198ddaa5e24b72f92f5f8 Author: Oswald Buddenhagen <o...@users.sf.net> Date: Wed Jan 26 22:03:40 2022 +0100
fix bogus orphaning due to expunging we cannot orphan all messages whose opposite we expunge, as that would prevent subsequent propagation of the deletion. we can do that only if the message is already known to be marked as deleted. src/run-tests.pl | 20 ++++++++++++++++++++ src/sync.c | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/run-tests.pl b/src/run-tests.pl index 5a96b504..6a126168 100755 --- a/src/run-tests.pl +++ b/src/run-tests.pl @@ -1064,6 +1064,26 @@ my @X08 = ( ); test("push flags + pull deletions", \@x01, \@X08, \@O08); +my @O09 = ("", "", "Sync None\nExpunge Both\n"); +my @X09 = ( + I, 0, I, + E, "/", "", "", + F, "", "", "/", + H, "/", "", "", + J, "/", "", "", + L, "", "", "/", +); +test("noop + expunge both", \@x01, \@X09, \@O09); + +my @O0A = ("", "", "Sync None\nExpunge Near\n"); +# Sync entries are not updated/pruned, because the far side is not loaded. +my @X0A = ( + I, 0, I, + F, "", "", "/", + L, "", "", "/", +); +test("noop + expunge near side", \@x01, \@X0A, \@O0A); + # Size restriction tests my @x20 = ( diff --git a/src/sync.c b/src/sync.c index 4a467854..a2d4746b 100644 --- a/src/sync.c +++ b/src/sync.c @@ -1812,11 +1812,11 @@ box_closed_p2( sync_vars_t *svars, int t ) ((srec->status & S_EXPIRED) && svars->maxuid[F] >= srec->uid[F] && svars->maxxfuid >= srec->uid[F])) { PC_JLOG( "- %u %u", (srec->uid[F], srec->uid[N]), "killing" ); srec->status = S_DEAD; - } else if (srec->uid[N]) { + } else if (srec->uid[N] && (srec->status & S_DEL(F))) { PC_JLOG( "> %u %u 0", (srec->uid[F], srec->uid[N]), "orphaning" ); srec->uid[N] = 0; } - } else if (srec->uid[F] && ((srec->status & S_DEL(F)) && (svars->state[F] & ST_DID_EXPUNGE))) { + } else if (srec->uid[F] && ((srec->status & S_DEL(F)) && (svars->state[F] & ST_DID_EXPUNGE)) && (srec->status & S_DEL(N))) { PC_JLOG( "< %u %u 0", (srec->uid[F], srec->uid[N]), "orphaning" ); srec->uid[F] = 0; } _______________________________________________ isync-devel mailing list isync-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/isync-devel