foreach my $mid (@$mids) {
$tg->index_text($mid, 1, 'XM');
+
+ # because too many Message-IDs are prefixed with
+ # "Pine.LNX."...
+ if ($mid =~ /\w{12,}/) {
+ my @long = ($mid =~ /(\w{3,}+)/g);
+ $tg->index_text(join(' ', @long), 1, 'XM');
+ }
$tg->increase_termpos;
}
$smsg->{to} = $smsg->{cc} = '';
while (defined($line = <$log>)) {
if ($line =~ /$addmsg/o) {
my $blob = $1;
- delete $D{$blob} and next;
+ if (delete $D{$blob}) {
+ if (defined $self->{regen_down}) {
+ $self->{regen_down}--;
+ }
+ next;
+ }
my $mime = do_cat_mail($git, $blob, \$bytes) or next;
batch_adjust(\$max, $bytes, $batch_cb, $latest);
$add_cb->($self, $mime, $bytes, $blob);
$self->{over}->rollback_lazy;
$self->{over}->disconnect;
+ $git->cleanup;
delete $self->{txn};
$xdb->cancel_transaction;
$xdb = _xdb_release($self);
}
}
$self->commit_txn_lazy;
+ $git->cleanup;
$xdb = _xdb_release($self);
# let another process do some work... <
if (!$newest) {
sub begin_txn_lazy {
my ($self) = @_;
return if $self->{txn};
- my $xdb = $self->{xdb} || $self->_xdb_acquire;
- $self->{over}->begin_lazy if $self->{over};
- $xdb->begin_transaction;
- $self->{txn} = 1;
- $xdb;
+
+ $self->{-inbox}->with_umask(sub {
+ my $xdb = $self->{xdb} || $self->_xdb_acquire;
+ $self->{over}->begin_lazy if $self->{over};
+ $xdb->begin_transaction;
+ $self->{txn} = 1;
+ $xdb;
+ });
}
sub commit_txn_lazy {
my ($self) = @_;
delete $self->{txn} or return;
- $self->{xdb}->commit_transaction;
- $self->{over}->commit_lazy if $self->{over};
+ $self->{-inbox}->with_umask(sub {
+ $self->{xdb}->commit_transaction;
+ $self->{over}->commit_lazy if $self->{over};
+ });
}
sub worker_done {