X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FPOP3D.pm;h=7432a9640c89a20a0e818a9c7262d7ca7bda80f9;hb=cab36ebd00ca72f87ff3a233ccec77aef948c926;hp=5cfe961343a58b732e8d1d52e001ae884ae508ba;hpb=c38111d6f3877cf31d28b0a0339d063df0fa58f6;p=public-inbox.git diff --git a/lib/PublicInbox/POP3D.pm b/lib/PublicInbox/POP3D.pm index 5cfe9613..7432a964 100644 --- a/lib/PublicInbox/POP3D.pm +++ b/lib/PublicInbox/POP3D.pm @@ -45,7 +45,7 @@ sub new { # lock_path => ... # interprocess lock is the $pop3state/txn.locks file # txn_locks => {}, # intraworker locks - # accept_tls => { SSL_server => 1, ..., SSL_reuse_ctx => ... } + # ssl_ctx_opt => { SSL_cert_file => ..., SSL_key_file => ... } }, $cls; } @@ -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