From: Josh Stompro Date: Fri, 2 Dec 2022 20:29:51 +0000 (-0600) Subject: LP1998535 - Added Content Request Timeout X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=refs%2Fheads%2Fuser%2Fstompro%2Flp1998535_added_content_timeout;p=working%2FEvergreen.git LP1998535 - Added Content Request Timeout Use an alarm signal to time out the LWP::UserAgent request in addition to using the LWP::UA timeout. The LWP::UA timeout doesn't work in some error situations. Signed-off-by: Josh Stompro --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent.pm index 254d790cf6..be3d57a02f 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent.pm @@ -288,8 +288,15 @@ sub get_url { $logger->info("added content getting [timeout=$net_timeout, errors_remaining=$error_countdown] URL = $url"); my $agent = LWP::UserAgent->new(timeout => $net_timeout); + my $res; + + local $SIG{ALRM} = sub { die "ALARM TIMEOUT\n" }; + eval { + alarm($net_timeout); + $res = $agent->get($url); + }; + alarm(0); - my $res = $agent->get($url); $logger->info("added content request returned with code " . $res->code); die "added content request failed: " . $res->status_line ."\n" unless $res->is_success; @@ -302,8 +309,15 @@ sub post_url { $logger->info("added content getting [timeout=$net_timeout, errors_remaining=$error_countdown] URL = $url"); my $agent = LWP::UserAgent->new(timeout => $net_timeout); + my $res; + + local $SIG{ALRM} = sub { die "ALARM TIMEOUT\n" }; + eval { + alarm($net_timeout); + $res = $agent->post($url, Content => $content); + }; + alarm(0); - my $res = $agent->post($url, Content => $content); $logger->info("added content request returned with code " . $res->code); die "added content request failed: " . $res->status_line ."\n" unless $res->is_success;