diff options
author | Guilhem Moulin <guilhem@fripost.org> | 2015-09-01 00:51:35 +0200 |
---|---|---|
committer | Guilhem Moulin <guilhem@fripost.org> | 2015-09-01 00:51:35 +0200 |
commit | 8153eea457f0ac117980e886d4e841e5ca0e28b2 (patch) | |
tree | b076f5b668fba63c89d33cd70c019012eae08436 | |
parent | c1549a74c99904fb2648240cab239d61ab0c9522 (diff) | |
parent | a5b7f9777acae2ad50a90e15db5936f190a507c2 (diff) |
Merge branch 'master' into debian
-rwxr-xr-x | imapsync | 19 | ||||
-rw-r--r-- | imapsync.service | 2 |
2 files changed, 15 insertions, 6 deletions
@@ -727,8 +727,12 @@ sub repair($) { # Process UID found in IMAP but not in the mapping table. - msg("remote($mailbox)", "WARNING: No match for vanished local UID $_. Ignoring.") foreach keys %lVanished; - msg("local($mailbox)", "WARNING: No match for vanished remote UID $_. Ignoring.") foreach keys %rVanished; + my @lDunno = keys %lVanished; + my @rDunno = keys %rVanished; + msg("remote($mailbox)", "WARNING: No match for ".($#lDunno+1)." vanished local UID(s) " + .compact_set(@lDunno).". Ignoring.") if @lDunno; + msg("local($mailbox)", "WARNING: No match for ".($#rDunno+1)." vanished remote UID(s) " + .compact_set(@rDunno).". Ignoring.") if @rDunno; foreach my $lUID (keys %$lModified) { msg("remote($mailbox)", "WARNING: No match for modified local UID $lUID. Downloading again."); @@ -777,13 +781,13 @@ sub sync_known_messages($$) { # other side (from the DB); consider it as to be removed if # it hasn't been removed already. - my (@lToRemove, @rToRemove); + my (@lToRemove, @rToRemove, @lDunno, @rDunno); foreach my $lUID (@$lVanished) { $STH_GET_REMOTE_UID->execute($idx, $lUID); my ($rUID) = $STH_GET_REMOTE_UID->fetchrow_array(); die if defined $STH_GET_REMOTE_UID->fetchrow_arrayref(); # sanity check if (!defined $rUID) { - msg("remote($mailbox)", "WARNING: No match for vanished local UID $lUID. Ignoring."); + push @lDunno, $lUID; } elsif (!exists $rVanished{$rUID}) { push @rToRemove, $rUID; @@ -794,13 +798,18 @@ sub sync_known_messages($$) { my ($lUID) = $STH_GET_LOCAL_UID->fetchrow_array(); die if defined $STH_GET_LOCAL_UID->fetchrow_arrayref(); # sanity check if (!defined $lUID) { - msg("local($mailbox)", "WARNING: No match for vanished remote UID $rUID. Ignoring."); + push @rDunno, $rUID; } elsif (!exists $lVanished{$lUID}) { push @lToRemove, $lUID; } } + msg("remote($mailbox)", "WARNING: No match for ".($#lDunno+1)." vanished local UID(s) " + .compact_set(@lDunno).". Ignoring.") if @lDunno; + msg("local($mailbox)", "WARNING: No match for ".($#rDunno+1)." vanished remote UID(s) " + .compact_set(@rDunno).". Ignoring.") if @rDunno; + $lIMAP->remove_message(@lToRemove) if @lToRemove; $rIMAP->remove_message(@rToRemove) if @rToRemove; diff --git a/imapsync.service b/imapsync.service index 725f23b..02b4d13 100644 --- a/imapsync.service +++ b/imapsync.service @@ -6,7 +6,7 @@ After=network-online.target [Service] ExecStart=/usr/bin/imapsync RestartSec=60s -Restart=on-success +Restart=always [Install] WantedBy=default.target |