store deleted status across restarts!
authorminima <minima>
Thu, 4 Oct 2001 11:32:14 +0000 (11:32 +0000)
committerminima <minima>
Thu, 4 Oct 2001 11:32:14 +0000 (11:32 +0000)
Changes
cmd/kill.pl
perl/DXMsg.pm

diff --git a/Changes b/Changes
index 1c0df002aeac906823834ff826126398b3de2e83..df398943873d3f2d8176e9ed83f49ff655610f42 100644 (file)
--- a/Changes
+++ b/Changes
@@ -3,6 +3,7 @@
 2. reduce the number R: lines on a bull from a bbs to 2 (the origin and the
 last port of call).
 3. ignore deleted messages for queuing purposes
+4. store deleted status across restarts!
 03Oct01=======================================================================
 1. don't allow @WWW to become a 'TO' field...
 2. handle @gb7tlh.#35.eu type addresses as well
index 9c7675fa44d8cd5c4bc8c90041381177ea0b4569..fb90a95435756df3d6ba5bdd9327792394081d81 100644 (file)
@@ -68,8 +68,7 @@ foreach $ref ( @refs) {
        }
        my $tonode = $ref->tonode;
        $ref->stop_msg($tonode) if $tonode;
-       $ref->delete(1);
-       $ref->deletetime($main::systime + $DXMsg::residencetime);
+       $ref->mark_delete;
        push @out, $self->msg('m12', $ref->msgno);
 }
 
index 118d991034f947d1778ebdb54167458bf4eea910..7cab1d02f18336d930ab1c6da7c118f973c0eacd 100644 (file)
@@ -110,6 +110,8 @@ sub alloc
        $self->{origin} = shift;
        $self->{'read'} = shift;
        $self->{rrreq} = shift;
+       $self->{delete} = shift;
+       $self->{deletetime} = shift;
        $self->{gotit} = [];
 #      $self->{lastt} = $main::systime;
        $self->{lines} = [];
@@ -340,8 +342,7 @@ sub process
                        if ($ref) {
                                if ($ref->{private}) { # remove it if it private and gone off site#
                                        Log('msg', "Message $ref->{msgno} from $ref->{from} sent to $fromnode and deleted");
-                                       $ref->{delete}++;
-                                       $ref->{deletetime} = $main::systime + $residencetime;
+                                       $ref->mark_delete;
                                } else {
                                        Log('msg', "Message $ref->{msgno} from $ref->{from} sent to $fromnode");
                                        push @{$ref->{gotit}}, $fromnode; # mark this up as being received
@@ -407,8 +408,7 @@ sub process
                if ($pcno == 49) {      # global delete on subject
                        for (@msg) {
                                if ($_->{from} eq $f[1] && $_->{subject} eq $f[2]) {
-                                       $_->{delete}++;
-                                       $_->{deletetime} = $main::systime + $residencetime;
+                                       $_->mark_delete;
                                        Log('msg', "Message $_->{msgno} from $_->{from} ($_->{subject}) fully deleted");
                                        DXChannel::broadcast_nodes($line, $self);
                                }
@@ -453,7 +453,9 @@ sub store
                if (defined $fh) {
                        my $rr = $ref->{rrreq} ? '1' : '0';
                        my $priv = $ref->{private} ? '1': '0';
-                       print $fh "=== $ref->{msgno}^$ref->{to}^$ref->{from}^$ref->{t}^$priv^$ref->{subject}^$ref->{origin}^$ref->{'read'}^$rr\n";
+                       my $del = $ref->{delete} ? '1' : '0';
+                       my $delt = $ref->{deletetime} || '0';
+                       print $fh "=== $ref->{msgno}^$ref->{to}^$ref->{from}^$ref->{t}^$priv^$ref->{subject}^$ref->{origin}^$ref->{'read'}^$rr^$del^$delt\n";
                        print $fh "=== ", join('^', @{$ref->{gotit}}), "\n";
                        my $line;
                        $ref->{size} = 0;
@@ -495,6 +497,17 @@ sub del_msg
        }
 }
 
+sub mark_delete
+{
+       my $ref = shift;
+       my $t = shift;
+       $t = $main::systime + $residencetime unless defined $t;
+       
+       $ref->{delete}++;
+       $ref->{deletetime} = $t;
+       $ref->store( [$ref->read_msg_body] );
+}
+
 # clean out old messages from the message queue
 sub clean_old
 {
@@ -503,7 +516,9 @@ sub clean_old
        # mark old messages for deletion
        foreach $ref (@msg) {
                if (ref($ref) && !$ref->{keep} && $ref->{t} < $main::systime - $maxage) {
-                       $ref->{delete} = 1;
+
+                       # this is for IMMEDIATE destruction
+                       $ref->{delete}++;
                        $ref->{deletetime} = 0;
                }
        }