Archive Mail, Exim and Locking Bug? (was RE: [ MAILSCANNER] Locki ng failing?)

Desai, Jason jase at SENSIS.COM
Fri May 2 13:37:23 IST 2003


Hi Julian.  Just wanted to let you know that the modified patch I posted
last Friday seems to be working well.  I have had this in production now for
about 4 days now.

Jason

> -----Original Message-----
> From: Julian Field [mailto:mailscanner at ECS.SOTON.AC.UK]
> Sent: Friday, April 25, 2003 1:59 PM
> To: MAILSCANNER at JISCMAIL.AC.UK
> Subject: Re: [MAILSCANNER] Archive Mail, Exim and Locking
> Bug? (was RE:
> [ MAILSCANNER] Locki ng failing?)
>
>
> If you can get this thoroughly tested before 1st May, then it
> can go in the
> new stable release. Otherwise it will have to wait a month or
> so. I can put
> it out as an "unstable" release though, so don't worry too much.
>
> The next release will probably be on the first Friday (or possibly the
> weekend) after 1st May. I like releasing at awkward times, it
> means a few
> people test it before Monday morning, which gives me a chance
> to fix any
> cock-ups.
>
> At 18:16 25/04/2003, you wrote:
> >"Desai, Jason" <jase at SENSIS.COM> wrote:
> > >
> > >Thanks Tony.  I had just narrowed it down to losing the
> lock when copying
> > >the -D file.  If you want me to test any patches just let me know.
> >
> >I'm testing this at the moment.
> >
> >--- EximDiskStore.pm    27 Mar 2003 17:28:47 -0000      1.7
> >+++ EximDiskStore.pm    25 Apr 2003 16:33:27 -0000      1.8
> >@@ -358,14 +358,22 @@
> >
> >
> >  # Copy a dfile and hfile to a directory
> >+# This has to be done in a subprocess in order to avoid
> breaking POSIX locks.
> >  sub CopyToDir {
> >    my($this,$dir) = @_;
> >+  my $pid = fork;
> >+  MailScanner::Log::DieLog("fork: $!") if not defined $pid;
> >+  if ($pid) {
> >+    waitpid $pid, 0;
> >+    return;
> >+  }
> >    my $hpath = $this->{hpath};
> >    my $dpath = $this->{dpath};
> >    my $hfile = basename($hpath);
> >    my $dfile = basename($dpath);
> >    copy($hpath, "$dir/$hfile");
> >    copy($dpath, "$dir/$dfile");
> >+  exit;
> >  }
> >
> >
> >@@ -415,8 +423,18 @@
> >    if (MailScanner::Config::Value('storeentireasdfqf')) {
> >      $this->CopyToDir($targetdir);
> >    } else {
> >+    # Do this in a subprocess in order to avoid breaking
> POSIX locks.
> >+    my $pid = fork;
> >+    MailScanner::Log::DieLog("fork: $!") if not defined $pid;
> >+    if ($pid) {
> >+      waitpid $pid, 0;
> >+      return;
> >+    }
> >      my $target = new IO::File "$targetdir/$targetfile", "w";
> >+    MailScanner::Log::DieLog("writing to
> $targetdir/$targetfile: $!")
> >+           if not defined $target;
> >      $this->WriteEntireMessage($message, $target);
> >+    return;
> >    }
> >
> >    return 1;
> >@@ -447,9 +465,9 @@
> >
> >    my $pipe = new IO::Pipe;
> >    my $pid;
> >-
> >+
> >    if (not defined $pipe or not defined ($pid = fork)) {
> >-    MailScanner::Log::WarnLog("Cannot build message from
> $this->{dpath} " .
> >+    MailScanner::Log::DieLog("Cannot build message from
> $this->{dpath} " .
> >                                "and
> $message->{headerspath}, %s", $!);
> >    } elsif ($pid) { # Parent
> >      $pipe->reader();
> >
> >
> >Tony.
> >--
> >f.a.n.finch  <dot at dotat.at>  http://dotat.at/
> >MALIN HEBRIDES: EAST OR SOUTHEAST 5 OR 6. RAIN AT TIMES.
> MODERATE OR GOOD.
>
> --
> Julian Field
> www.MailScanner.info
> Professional Support Services at www.MailScanner.biz
> MailScanner thanks transtec Computers for their support
>



More information about the MailScanner mailing list