From 7d73afe8957b64a5b3620d162265484618aee9fc Mon Sep 17 00:00:00 2001
From: Palmer <palmer@lindenlab.com>
Date: Thu, 22 Jul 2010 15:20:45 -0700
Subject: EXT-7145 - Handle http redirects in viewer properly.  Didn't work
 before.

Reviewed by Bao and Babbage
---
 indra/newview/lltexturefetch.cpp | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index ceed90e210..dddfed097d 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -290,8 +290,8 @@ class HTTPGetResponder : public LLCurl::Responder
 {
 	LOG_CLASS(HTTPGetResponder);
 public:
-	HTTPGetResponder(LLTextureFetch* fetcher, const LLUUID& id, U64 startTime, S32 requestedSize, U32 offset)
-		: mFetcher(fetcher), mID(id), mStartTime(startTime), mRequestedSize(requestedSize), mOffset(offset)
+	HTTPGetResponder(LLTextureFetch* fetcher, const LLUUID& id, U64 startTime, S32 requestedSize, U32 offset, bool redir)
+		: mFetcher(fetcher), mID(id), mStartTime(startTime), mRequestedSize(requestedSize), mOffset(offset), mFollowRedir(redir)
 	{
 	}
 	~HTTPGetResponder()
@@ -344,6 +344,11 @@ public:
  			llwarns << "Worker not found: " << mID << llendl;
 		}
 	}
+
+	virtual bool followRedir()
+	{
+		return mFollowRedir;
+	}
 	
 private:
 	LLTextureFetch* mFetcher;
@@ -351,6 +356,7 @@ private:
 	U64 mStartTime;
 	S32 mRequestedSize;
 	U32 mOffset;
+	bool mFollowRedir;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -897,7 +903,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				std::vector<std::string> headers;
 				headers.push_back("Accept: image/x-j2c");
 				res = mFetcher->mCurlGetRequest->getByteRange(mUrl, headers, offset, mRequestedSize,
-															  new HTTPGetResponder(mFetcher, mID, LLTimer::getTotalTime(), mRequestedSize, offset));
+															  new HTTPGetResponder(mFetcher, mID, LLTimer::getTotalTime(), mRequestedSize, offset, true));
 			}
 			if (!res)
 			{
@@ -945,17 +951,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					max_attempts = mHTTPFailCount+1; // Keep retrying
 					LL_INFOS_ONCE("Texture") << "Texture server busy (503): " << mUrl << LL_ENDL;
 				}
-				else if(mGetStatus >= HTTP_MULTIPLE_CHOICES && mGetStatus < HTTP_BAD_REQUEST) //http re-direct
-				{
-					++mHTTPFailCount;
-					max_attempts = 5 ; //try at most 5 times to avoid infinite redirection loop.
-
-					llwarns << "HTTP GET failed because of redirection: "  << mUrl
-							<< " Status: " << mGetStatus << " Reason: '" << mGetReason << llendl ;
-
-					//assign to the new url
-					mUrl = mGetReason ;
-				}
 				else
 				{
 					const S32 HTTP_MAX_RETRY_COUNT = 3;
-- 
cgit v1.2.3