diff --git a/indra/llcommon/lluriparser.cpp b/indra/llcommon/lluriparser.cpp
index 08b19c56e0ff638518c7aba8be2de96d50aa0edd..e24e53426ed3a02365e835b62d8f1fa1323c0c9c 100644
--- a/indra/llcommon/lluriparser.cpp
+++ b/indra/llcommon/lluriparser.cpp
@@ -29,7 +29,7 @@
 #include "linden_common.h"
 #include "lluriparser.h"
 
-LLUriParser::LLUriParser(const std::string& u) : mTmpScheme(false), mRes(0)
+LLUriParser::LLUriParser(const std::string& u) : mTmpScheme(false), mNormalizedTmp(false), mRes(0)
 {
 	mState.uri = &mUri;
 
@@ -140,7 +140,7 @@ void LLUriParser::extractParts()
 		return;
 	}
 
-	if (mTmpScheme)
+	if (mTmpScheme || mNormalizedTmp)
 	{
 		mScheme.clear();
 	}
@@ -169,6 +169,7 @@ void LLUriParser::extractParts()
 
 S32 LLUriParser::normalize()
 {
+	mNormalizedTmp = mTmpScheme;
 	if (!mRes)
 	{
 		mRes = uriNormalizeSyntaxExA(&mUri, URI_NORMALIZE_SCHEME | URI_NORMALIZE_HOST);
diff --git a/indra/llcommon/lluriparser.h b/indra/llcommon/lluriparser.h
index e987bae9249f731d6d9cc0febfa6a78d11ee34ec..561431e8f905c01375ac7cbf1e7aab23e666eaba 100644
--- a/indra/llcommon/lluriparser.h
+++ b/indra/llcommon/lluriparser.h
@@ -81,6 +81,7 @@ class LL_COMMON_API LLUriParser
 
 	S32 mRes;
 	bool mTmpScheme;
+	bool mNormalizedTmp;
 };
 
 #endif // LL_LLURIPARSER_H