diff options
Diffstat (limited to 'interimap')
-rwxr-xr-x | interimap | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -74,7 +74,6 @@ my $CONF = read_config( delete $CONFIG{config} // $NAME , 'list-mailbox' => qr/\A([\x01-\x09\x0B\x0C\x0E-\x7F]+)\z/ , 'list-select-opts' => qr/\A([\x21\x23\x24\x26\x27\x2B-\x5B\x5E-\x7A\x7C-\x7E]+)\z/ , 'ignore-mailbox' => qr/\A([\x01-\x09\x0B\x0C\x0E-\x7F]+)\z/ - , 'use-binary' => qr/\A(YES|NO)\z/i, ); my ($DBFILE, $LOCKFILE, $LOGGER_FD); @@ -249,6 +248,7 @@ foreach my $name (qw/local remote/) { $config{name} = $name; $config{'logger-fd'} = $LOGGER_FD if defined $LOGGER_FD; $config{'compress'} //= ($name eq 'local' ? 0 : 1); + $config{keepalive} = 1 if $CONFIG{watch} and $config{type} ne 'tunnel'; $IMAP->{$name} = { client => Net::IMAP::InterIMAP::->new(%config) }; my $client = $IMAP->{$name}->{client}; @@ -512,10 +512,7 @@ sub sync_mailbox_list() { sync_mailbox_list(); ($lIMAP, $rIMAP) = map {$IMAP->{$_}->{client}} qw/local remote/; -my $ATTRS = 'MODSEQ FLAGS INTERNALDATE '. - (((!defined $CONF->{_} or $CONF->{_}->{'use-binary'} // 1) and - !$lIMAP->incapable('BINARY') and !$rIMAP->incapable('BINARY')) - ? 'BINARY' : 'BODY').'.PEEK[]'; +my $ATTRS = join ' ', qw/MODSEQ FLAGS INTERNALDATE BODY.PEEK[]/; ############################################################################# @@ -600,7 +597,7 @@ sub download_missing($$$@) { my $attrs = $ATTRS.' ENVELOPE'; ($source eq 'local' ? $lIMAP : $rIMAP)->fetch(compact_set(@set), "($attrs)", sub($) { my $mail = shift; - return unless exists $mail->{RFC822} or exists $mail->{BINARY}; # not for us + return unless exists $mail->{RFC822}; # not for us my $uid = $mail->{UID}; my $from = first { defined $_ and @$_ } @{$mail->{ENVELOPE}}[2,3,4]; @@ -969,10 +966,9 @@ sub sync_known_messages($$) { # after the FETCH. sub callback_new_message($$$$;$$$) { my ($idx, $mailbox, $name, $mail, $UIDs, $buff, $bufflen) = @_; + return unless exists $mail->{RFC822}; # not for us - my $length = defined $mail->{RFC822} ? length(${$mail->{RFC822}}) - : defined $mail->{BINARY} ? length(${$mail->{BINARY}}) - : return; # not for us + my $length = length ${$mail->{RFC822}}; if ($length == 0) { msg("$name($mailbox)", "WARNING: Ignoring new 0-length message (UID $mail->{UID})"); return; |