From 5dddf92543574195c75d18fd2625f7c5a5ac3e20 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 17 Nov 2006 23:42:19 +0000 Subject: [PATCH] fixed looping logic in HttpProxy redirect follower --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Wobject/HttpProxy.pm | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index cc56dff5e..73e3fc5a3 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,6 +1,7 @@ 7.2.2 - fix: Show Debugging option not working - fix: Workflow form control edit button won't work. removed. + - fix: Bug in HttpProxy.pm 7.2.1 - Made a change to version tag commits to deal with unusually long commit diff --git a/lib/WebGUI/Asset/Wobject/HttpProxy.pm b/lib/WebGUI/Asset/Wobject/HttpProxy.pm index 940c99549..9ef95ede5 100644 --- a/lib/WebGUI/Asset/Wobject/HttpProxy.pm +++ b/lib/WebGUI/Asset/Wobject/HttpProxy.pm @@ -265,7 +265,7 @@ sub view { unless ($var{content}) { # Get new content - for my $redirect (0..5) { # We follow max 5 redirects to prevent bouncing/flapping + REDIRECT: for my $redirect (0..4) { # We follow max 5 redirects to prevent bouncing/flapping my $userAgent = new LWP::UserAgent; $userAgent->agent($self->session->env->get("HTTP_USER_AGENT")); @@ -342,7 +342,6 @@ sub view { if ($response->is_redirect) { # redirected by http header $proxiedUrl = URI::URL::url($response->header("Location"))->abs($proxiedUrl);; - $redirect++; } elsif ($response->content_type eq "text/html" && $response->content =~ /]+refresh[^>]+content[^>]*url=([^\s'"<>]+)/gis) { # redirection through meta refresh @@ -353,11 +352,11 @@ sub view { $proxiedUrl =~ s/[^\/\\]*$//; #chop off everything after / in $proxiedURl $proxiedUrl .= URI::URL::url($refreshUrl)->rel($proxiedUrl); # add relative path } - $redirect++; } else { - $redirect = 5; #No redirection found. Leave loop. + last REDIRECT; } - $redirect=5 if (not $self->get("followRedirect")); # No redirection. Overruled by setting + ##At least 1 time through the loop + last REDIRECT if (not $self->get("followRedirect")); # No redirection. Overruled by setting } if($response->is_success) {