]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/POP3D.pm
pop3: remove untouched rows on QUIT/disconnect
[public-inbox.git] / lib / PublicInbox / POP3D.pm
index 764f9ffe8f8073ef2208f74a92ecd271016925e1..7432a9640c89a20a0e818a9c7262d7ca7bda80f9 100644 (file)
@@ -245,6 +245,12 @@ SELECT txn_id,uid_dele FROM deletes WHERE user_id = ? AND mailbox_id = ?
 sub unlock_mailbox {
        my ($self, $pop3) = @_;
        my $txn_id = delete($pop3->{txn_id}) // return;
+       if (!$pop3->{did_quit}) { # deal with QUIT-less disconnects
+               my $lk = $self->lock_for_scope;
+               $self->{-state_dbh}->begin_work;
+               $pop3->__cleanup_state($txn_id);
+               $self->{-state_dbh}->commit;
+       }
        delete $self->{txn_locks}->{$txn_id}; # same worker
 
        # other workers