From: Bill Erickson Date: Tue, 25 Oct 2022 14:24:19 +0000 (-0400) Subject: LP1901930 Support optional ACS Resend messages X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=a7c4cd716b8a1ec5886b2bf508b6f74b33c75a5c;p=working%2FEvergreen.git LP1901930 Support optional ACS Resend messages Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm index c8f99b27a2..b2cf0be53c 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm @@ -79,13 +79,24 @@ sub dispatch_sip2_request { '37' => \&handle_payment, '63' => \&handle_patron_info, '65' => \&handle_renew_all, + '97' => \&handle_resend, 'XS' => \&handle_end_session }; return OpenILS::Event->new('SIP2_NOT_IMPLEMENTED', {payload => $message}) unless exists $MESSAGE_MAP->{$msg_code}; - return $MESSAGE_MAP->{$msg_code}->($session, $message); + my $msg = $MESSAGE_MAP->{$msg_code}->($session, $message); + + if ($msg_code ne '97' && # Don't cache the resend response + $session->config->{settings}->{support_acs_resend_messages}) { + + # If resend is supported, toss the last sent message for this + # session into the cache. + $SC->cache->put_cache("sip2_lastmsg_$seskey", $msg); + } + + return $msg; } sub handle_end_session { @@ -867,5 +878,15 @@ sub handle_end_patron_session { } } +sub handle_resend { + my ($session, $message) = @_; + my $seskey = $session->seskey; + + return OpenILS::Event->new('SIP2_NOT_IMPLEMENTED') unless + $session->config->{settings}->{support_acs_resend_messages}; + + return $SC->cache->get_cache("sip2_lastmsg_$seskey"); +} + 1; diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index f2e579cda1..68e5ef79bd 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -22628,6 +22628,12 @@ VALUES ( (SELECT id FROM sip.setting WHERE name = 'checkin_hold_as_transit'), 'Checkin local holds as transits', 'sipset', 'description') +), ( + 1, 'support_acs_resend_messages', 'false', + oils_i18n_gettext( + (SELECT id FROM sip.setting WHERE name = 'support_acs_resend_messages'), + 'Support ACS Resend Messages (code 97)', + 'sipset', 'description') ); INSERT INTO sip.screen_message (key, message) VALUES ( diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql index 35b6f5b22c..c1f71e3ec4 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql @@ -160,6 +160,12 @@ VALUES ( (SELECT id FROM sip.setting WHERE name = 'checkin_hold_as_transit'), 'Checkin local holds as transits', 'sipset', 'description') +), ( + 1, 'support_acs_resend_messages', 'false', + oils_i18n_gettext( + (SELECT id FROM sip.setting WHERE name = 'support_acs_resend_messages'), + 'Support ACS Resend Messages (code 97)', + 'sipset', 'description') ); INSERT INTO sip.screen_message (key, message) VALUES (