mirror of
https://github.com/imapsync/imapsync.git
synced 2025-06-10 06:34:37 +02:00
1.285
This commit is contained in:
parent
9ca0e338a4
commit
5cdcc66e9c
11 changed files with 297 additions and 2862 deletions
108
patches/imapsync.1.282.patch2
Normal file
108
patches/imapsync.1.282.patch2
Normal file
|
@ -0,0 +1,108 @@
|
|||
--- imapsync.1.282+patch1 2009-06-19 15:44:09.140625000 -0400
|
||||
+++ imapsync 2009-06-19 15:50:31.437500000 -0400
|
||||
@@ -515,7 +515,7 @@
|
||||
|
||||
if (@_) { $self->{SSL} = shift }
|
||||
return $self->{SSL};
|
||||
-};
|
||||
+} unless Mail::IMAPClient->can("Ssl");
|
||||
return(1);
|
||||
|
||||
}else{
|
||||
@@ -1245,7 +1245,7 @@
|
||||
my ($t_fold);
|
||||
my ($x_fold) = @_;
|
||||
# first we remove the prefix
|
||||
- $x_fold =~ s/^$f_prefix//;
|
||||
+ $x_fold =~ s/^\Q$f_prefix\E//;
|
||||
$debug and print "removed source prefix: [$x_fold]\n";
|
||||
$t_fold = separator_invert($x_fold,$f_sep, $t_sep);
|
||||
$debug and print "inverted separators: [$t_fold]\n";
|
||||
@@ -1414,9 +1414,11 @@
|
||||
last FOLDER if $from->IsUnconnected();
|
||||
|
||||
foreach my $m (@f_msgs) {
|
||||
- unless (parse_header_msg1($from, $m, $f_heads, $f_fir, "F", \%f_hash)) {
|
||||
+ my $rc = parse_header_msg1($from, $m, $f_heads, $f_fir, "F", \%f_hash);
|
||||
+ if (!$rc) {
|
||||
+ my $reason = !defined($rc) ? "no header" : "duplicate";
|
||||
my $f_size = $f_fir->{$m}->{"RFC822.SIZE"} || 0;
|
||||
- print "+ Skipping msg #$m:$f_size in folder $f_fold (no header so we ignore this message)\n";
|
||||
+ print "+ Skipping msg #$m:$f_size in folder $f_fold ($reason so we ignore this message)\n";
|
||||
$mess_size_total_skipped += $f_size;
|
||||
$mess_skipped += 1;
|
||||
}
|
||||
@@ -1435,7 +1437,14 @@
|
||||
$debug and print "Time fir: ", timenext(), " s\n";
|
||||
last FOLDER if $to->IsUnconnected();
|
||||
foreach my $m (@t_msgs) {
|
||||
- parse_header_msg1($to, $m, $t_heads, $t_fir, "T", \%t_hash);
|
||||
+ my $rc = parse_header_msg1($to, $m, $t_heads, $t_fir, "T", \%t_hash);
|
||||
+ if (!$rc) {
|
||||
+ my $reason = !defined($rc) ? "no header" : "duplicate";
|
||||
+ my $t_size = $t_fir->{$m}->{"RFC822.SIZE"} || 0;
|
||||
+ print "+ Skipping msg #$m:$t_size in 'to' folder $t_fold ($reason so we ignore this message)\n";
|
||||
+ #$mess_size_total_skipped += $msize;
|
||||
+ #$mess_skipped += 1;
|
||||
+ }
|
||||
}
|
||||
$debug and print "Time headers: ", timenext(), " s\n";
|
||||
|
||||
@@ -1580,7 +1589,7 @@
|
||||
|
||||
my $flags_f = $f_hash{$m_id}{'F'} || "";
|
||||
# RFC 2060: This flag can not be altered by any client
|
||||
- $flags_f =~ s@\\Recent@@gi;
|
||||
+ $flags_f =~ s@\\Recent\s?@@gi;
|
||||
$flags_f = flags_regex($flags_f) if @regexflag;
|
||||
|
||||
my $new_id;
|
||||
@@ -1646,14 +1655,24 @@
|
||||
my $flags_f = $f_hash{$m_id}{'F'} || "";
|
||||
my $flags_t = $t_hash{$m_id}{'F'} || "";
|
||||
|
||||
- # No flag \Recent here, no ?
|
||||
+ # RFC 2060: This flag can not be altered by any client
|
||||
+ $flags_f =~ s@\\Recent\s?@@gi;
|
||||
$flags_f = flags_regex($flags_f) if @regexflag;
|
||||
|
||||
- $debug and print "Setting flags from($flags_f) to($flags_t)\n";
|
||||
-
|
||||
- # This add or change flags but no flag are removed with this
|
||||
- $to->store($t_msg, "+FLAGS.SILENT ($flags_f)" )
|
||||
- if (!$dry and $flags_f ne $flags_t);
|
||||
+ # compare flags - add missing flags
|
||||
+ my @ff = split(' ', $flags_f );
|
||||
+ my %ft = map { $_ => 1 } split(' ', $flags_t );
|
||||
+ my @flags_a = map { exists $ft{$_} ? () : $_ } @ff;
|
||||
+
|
||||
+ $debug and print "Setting flags(@flags_a) ffrom($flags_f) fto($flags_t) on msg #$t_msg in $t_fold\n";
|
||||
+
|
||||
+ # This adds or changes flags but no flag are removed with this
|
||||
+ if (!$dry and @flags_a and !$to->store($t_msg, "+FLAGS.SILENT (@flags_a)") ) {
|
||||
+ warn "Could not add flags '@flags_a' flagf '$flags_f'",
|
||||
+ " flagt '$flags_t' on msg #$t_msg in $t_fold: ",
|
||||
+ $to->LastError, "\n";
|
||||
+ #$error++;
|
||||
+ }
|
||||
last FOLDER if $to->IsUnconnected();
|
||||
|
||||
$debug and do {
|
||||
@@ -1979,7 +1998,7 @@
|
||||
#$headstr = $imap->message_string($m_uid);
|
||||
|
||||
print "no header so we ignore this message\n";
|
||||
- return;
|
||||
+ return undef;
|
||||
}
|
||||
my $size = $s_fir->{$m_uid}->{"RFC822.SIZE"};
|
||||
my $flags = $s_fir->{$m_uid}->{"FLAGS"};
|
||||
@@ -1994,6 +2013,8 @@
|
||||
else {
|
||||
$key = "$m_md5:$size";
|
||||
}
|
||||
+ # 0 return code is used to identify duplicate message hash
|
||||
+ return 0 if exists $s_hash->{"$key"};
|
||||
$s_hash->{"$key"}{'5'} = $m_md5;
|
||||
$s_hash->{"$key"}{'s'} = $size;
|
||||
$s_hash->{"$key"}{'D'} = $idate;
|
Loading…
Add table
Add a link
Reference in a new issue