commit f2f519e20b75a0cfb21198ddaa5e24b72f92f5f8
Author: Oswald Buddenhagen <[email protected]>
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel