From c650360b7adb7f1f25ac176b45d3598591fdf05c Mon Sep 17 00:00:00 2001 From: Dan Scott Date: Wed, 10 Oct 2012 22:06:32 -0400 Subject: [PATCH] TPAC: Avoid 500 errs on record page due to ipv6 ignorance Net::HTTP does not handle ipv6 addresses properly, and is subject to failing to return a request object if handed one (some systems seem to prefer ipv6). This commit checks the value of the request object before invoking any methods on it, and also short-circuits the AC lookup loop if the host could not be resolved to avoid flooding the logs with multiple "Unable to connect..." warnings. If Net::HTTP grows ipv6 support, this commit can still stay in place and the lookups will just start magically working. Signed-off-by: Dan Scott Signed-off-by: Bill Erickson --- Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm index a70db54438..4497c33d8d 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm @@ -439,11 +439,13 @@ sub added_content_stage1 { # and back in to reach the top-level virtualhost. my $ac_addr = $ENV{SERVER_ADDR}; my $ac_host = $self->apache->hostname; + my $ac_failed = 0; $logger->info("tpac: added content connecting to $ac_addr / $ac_host"); $ctx->{added_content} = {}; for my $type (@$ac_types) { + last if $ac_failed; $ctx->{added_content}->{$type} = {content => ''}; $ctx->{added_content}->{$type}->{status} = $key ? 3 : 2; @@ -457,14 +459,15 @@ sub added_content_stage1 { # or very slow (routing problems). my $req = Net::HTTP::NB->new(Host => $ac_addr, Timeout => 1); - $req->host($self->apache->hostname); - if (!$req) { $logger->warn("Unable to connect to $ac_addr / $ac_host". " for added content lookup for $key: $@"); + $ac_failed = 1; next; } + $req->host($self->apache->hostname); + my $http_type = ($type eq $sel_type) ? 'GET' : 'HEAD'; $req->write_request($http_type => "/opac/extras/ac/$type/html/" . uri_escape($key)); $ctx->{added_content}->{$type}->{request} = $req; -- 2.11.0