Never use Mail::Audit->store() as it will reformat MIME bodies and possibly
authorshort <>
Mon, 7 Oct 2002 15:59:38 +0000 (15:59 +0000)
committershort <>
Mon, 7 Oct 2002 15:59:38 +0000 (15:59 +0000)
  corrupt OpenPGP!
 - &write_message is now utilized for every store(), not just for "=input"

perlmail-accept

index aca0ad9..e0b6dca 100755 (executable)
@@ -533,10 +533,7 @@ my($folder,$profile,%args)=@_;
        $DoBell++ if $do{"bell"};
        $folder=~s/;.*$//s;
        $folder="$Mail/".$' if $folder=~/^=/;
-       if (!$store_ignore) {
-               $Audit->noexit(1);
-               $Audit->accept($folder);
-               }
+       write_message($folder) if !$store_ignore;
        smssend_tryall $store_ignorenewmail,$do{"sms"},%args if $do{"sms"};
        push @AuditStored,$folder if $do{"did"};
 }
@@ -555,20 +552,26 @@ my($funcref,@funcargs)=@_;
        return @AuditStored!=$did_last;
 }
 
+# Never use Mail::Audit->store() as it will reformat MIME bodies and possibly corrupt OpenPGP!
 sub write_message
 {
 my($folder)=@_;
 
-       local $_;
        local *F;
        open F,">>$folder" or do { warn "Append \"$folder\": $!"; return 0; };
-       do { warn "Lock \"$folder\": $!"; return 0; } if $_=Mail::Audit::audit_get_lock(\*F,$folder);
-       seek F,0,IO::Handle::SEEK_END or warn "Seek-end \"$folder\" (ignoring): $!";
-       # No 'need_from' here although it is a bit risky to rely on our network peer
-       print F $Message or warn "Write to \"$folder\": $!";
-       do { print F "\n"; warn "Missing trailing newline, fixed"; } if $Message!~/\n$/s;
-       close F or warn "Close \"$folder\"";
-       return 1;       # some attempt was made, FIXME: proper error detection
+       {
+               local $_;
+               ($_=Mail::Audit::audit_get_lock(\*F,$folder)) and do { warn "Lock \"$folder\": $!"; last; };
+               seek F,0,IO::Handle::SEEK_END or do { warn "Seek-end \"$folder\": $!"; last; };
+               # FIXME: Check for '^From ' to not to rely on our network peer
+               print F $Message or do { warn "Write to \"$folder\": $!"; last; };
+               do { print F "\n"; warn "Missing trailing newline, fixed"; } if $Message!~/\n$/s;
+               close F or do { warn "Close \"$folder\""; last; };
+               return 1;       # OK
+               }
+       warn "MAIL DROPPED for folder: $folder";
+       close F;
+       return 0;       # failed
 }
 
 sub process