aboutsummaryrefslogtreecommitdiffstats
path: root/imapsync
diff options
context:
space:
mode:
Diffstat (limited to 'imapsync')
-rwxr-xr-ximapsync19
1 files changed, 14 insertions, 5 deletions
diff --git a/imapsync b/imapsync
index a007089..f7c5234 100755
--- a/imapsync
+++ b/imapsync
@@ -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;