From 61254660b3b6f5bcc735cba5524b3854a0036a8a Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Mon, 12 Oct 2020 14:55:08 -0400 Subject: [PATCH] End Session message Signed-off-by: Bill Erickson --- .../src/perlmods/lib/OpenILS/Application/SIP2.pm | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm index a1023a869e..f7138ddde5 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm @@ -55,9 +55,14 @@ sub dispatch_sip2_request { # the SIP credentials provided during a login request. All # message types following require authentication. my $session = OpenILS::Application::SIPSession->find($seskey); - return OpenILS::Event->new('SIP2_SESSION_REQUIRED') unless $session; + + if (!$session) { + return undef if $msg_code eq 'XS'; # end session signal + return OpenILS::Event->new('SIP2_SESSION_REQUIRED'); + } my $MESSAGE_MAP = { + 'XS' => \&handle_end_session, '17' => \&handle_item_info, '23' => \&handle_patron_status, '63' => \&handle_patron_info @@ -69,6 +74,22 @@ sub dispatch_sip2_request { return $MESSAGE_MAP->{$msg_code}->($session, $message); } +sub handle_end_session { + my ($session, $message) = @_; + my $e = $session->editor; + + my $ses = $e->retrieve_sip_session($session->seskey) || return; + + $e->xact_begin; + $e->delete_sip_session($ses); + $e->commit; + + $U->simplereq('open-ils.auth', + 'open-ils.auth.session.delete', $ses->ils_token); + + return undef; +} + # Login to Evergreen and cache the login data. sub handle_login { my ($seskey, $message) = @_; -- 2.11.0