diff options
65 files changed, 378 insertions, 253 deletions
| diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp index 41d3eb0bf3..731e58bd20 100644 --- a/indra/llcommon/llmetricperformancetester.cpp +++ b/indra/llcommon/llmetricperformancetester.cpp @@ -100,7 +100,7 @@ LLSD LLMetricPerformanceTesterBasic::analyzeMetricPerformanceLog(std::istream& i  	LLSD ret;  	LLSD cur; -	while (!is.eof() && LLSDSerialize::fromXML(cur, is)) +	while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is))  	{  		for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter)  		{ diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h index 86e3fc864c..e7a5507385 100644 --- a/indra/llcommon/llsdserialize.h +++ b/indra/llcommon/llsdserialize.h @@ -300,7 +300,7 @@ public:  	/**   	 * @brief Constructor  	 */ -	LLSDXMLParser(); +	LLSDXMLParser(bool emit_errors=true);  protected:  	/**  @@ -747,25 +747,25 @@ public:  		return f->format(sd, str, LLSDFormatter::OPTIONS_PRETTY);  	} -	static S32 fromXMLEmbedded(LLSD& sd, std::istream& str) +	static S32 fromXMLEmbedded(LLSD& sd, std::istream& str, bool emit_errors=true)  	{  		// no need for max_bytes since xml formatting is not  		// subvertable by bad sizes. -		LLPointer<LLSDXMLParser> p = new LLSDXMLParser; +		LLPointer<LLSDXMLParser> p = new LLSDXMLParser(emit_errors);  		return p->parse(str, sd, LLSDSerialize::SIZE_UNLIMITED);  	}  	// Line oriented parser, 30% faster than fromXML(), but can  	// only be used when you know you have the complete XML  	// document available in the stream. -	static S32 fromXMLDocument(LLSD& sd, std::istream& str) +	static S32 fromXMLDocument(LLSD& sd, std::istream& str, bool emit_errors=true)  	{ -		LLPointer<LLSDXMLParser> p = new LLSDXMLParser(); +		LLPointer<LLSDXMLParser> p = new LLSDXMLParser(emit_errors);  		return p->parseLines(str, sd);  	} -	static S32 fromXML(LLSD& sd, std::istream& str) +	static S32 fromXML(LLSD& sd, std::istream& str, bool emit_errors=true)  	{ -		return fromXMLEmbedded(sd, str); -//		return fromXMLDocument(sd, str); +		return fromXMLEmbedded(sd, str, emit_errors); +//		return fromXMLDocument(sd, str, emit_errors);  	}  	/* diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp index 34b3dbb99a..cef743a7be 100644 --- a/indra/llcommon/llsdserialize_xml.cpp +++ b/indra/llcommon/llsdserialize_xml.cpp @@ -250,7 +250,7 @@ std::string LLSDXMLFormatter::escapeString(const std::string& in)  class LLSDXMLParser::Impl  {  public: -	Impl(); +	Impl(bool emit_errors);  	~Impl();  	S32 parse(std::istream& input, LLSD& data); @@ -294,6 +294,7 @@ private:  	static const XML_Char* findAttribute(const XML_Char* name, const XML_Char** pairs); +	bool mEmitErrors;  	XML_Parser	mParser; @@ -315,7 +316,8 @@ private:  }; -LLSDXMLParser::Impl::Impl() +LLSDXMLParser::Impl::Impl(bool emit_errors) +	: mEmitErrors(emit_errors)  {  	mParser = XML_ParserCreate(NULL);  	reset(); @@ -402,7 +404,10 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)  		{  			((char*) buffer)[count ? count - 1 : 0] = '\0';  		} -		llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; +		if (mEmitErrors) +		{ +			llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; +		}  		data = LLSD();  		return LLSDParser::PARSE_FAILURE;  	} @@ -480,7 +485,10 @@ S32 LLSDXMLParser::Impl::parseLines(std::istream& input, LLSD& data)  	if (status == XML_STATUS_ERROR    		&& !mGracefullStop)  	{ -		llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl; +		if (mEmitErrors) +		{ +			llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl; +		}  		return LLSDParser::PARSE_FAILURE;  	} @@ -897,7 +905,7 @@ LLSDXMLParser::Impl::Element LLSDXMLParser::Impl::readElement(const XML_Char* na  /**   * LLSDXMLParser   */ -LLSDXMLParser::LLSDXMLParser() : impl(* new Impl) +LLSDXMLParser::LLSDXMLParser(bool emit_errors /* = true */) : impl(* new Impl(emit_errors))  {  } diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 34e25a8a71..fb2d43e3b0 100644 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -147,7 +147,7 @@ void LLCrashLogger::gatherFiles()  	// Look for it in the debug_info.log file  	if (debug_log_file.is_open()) -	{		 +	{  		LLSDSerialize::fromXML(mDebugLog, debug_log_file);  		mCrashInPreviousExec = mDebugLog["CrashNotHandled"].asBoolean(); diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp index a6e2c89ba4..f9e3ad26f7 100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp @@ -443,8 +443,10 @@ void LLAvatarNameCache::cleanupClass()  void LLAvatarNameCache::importFile(std::istream& istr)  {  	LLSD data; -	S32 parse_count = LLSDSerialize::fromXMLDocument(data, istr); -	if (parse_count < 1) return; +	if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(data, istr)) +	{ +		return; +	}  	// by convention LLSD storage is a map  	// we only store one entry in the map diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 8f4af1984c..d9eb65ff59 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -308,8 +308,10 @@ boost::signals2::connection LLCacheName::addObserver(const LLCacheNameCallback&  bool LLCacheName::importFile(std::istream& istr)  {  	LLSD data; -	if(LLSDSerialize::fromXMLDocument(data, istr) < 1) +	if(LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(data, istr)) +	{  		return false; +	}  	// We'll expire entries more than a week old  	U32 now = (U32)time(NULL); diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 8ffa8e4271..47041a2880 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -175,9 +175,11 @@ void LLCurl::Responder::completedRaw(  {  	LLSD content;  	LLBufferStream istr(channels, buffer.get()); -	if (!LLSDSerialize::fromXML(content, istr)) +	const bool emit_errors = false; +	if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXML(content, istr, emit_errors))  	{  		llinfos << "Failed to deserialize LLSD. " << mURL << " [" << status << "]: " << reason << llendl; +		content["reason"] = reason;  	}  	completed(status, reason, content); diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 71a6145b58..a4da7674d5 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -31,6 +31,7 @@  #include "llpluginprocessparent.h"  #include "llpluginmessagepipe.h"  #include "llpluginmessageclasses.h" +#include "llsdserialize.h"  #include "stringize.h"  #include "llapr.h" @@ -836,7 +837,7 @@ void LLPluginProcessParent::receiveMessageRaw(const std::string &message)  	LL_DEBUGS("Plugin") << "Received: " << message << LL_ENDL;  	LLPluginMessage parsed; -	if(parsed.parse(message) != -1) +	if(LLSDParser::PARSE_FAILURE != parsed.parse(message))  	{  		if(parsed.hasValue("blocking_request"))  		{ diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp index a189375fbe..250372da5b 100644 --- a/indra/llui/llspellcheck.cpp +++ b/indra/llui/llspellcheck.cpp @@ -145,10 +145,14 @@ void LLSpellChecker::refreshDictionaryMap()  	// Load dictionary information (file name, friendly name, ...)  	llifstream user_file(user_path + DICT_FILE_MAIN, std::ios::binary); -	if ( (!user_file.is_open()) || (0 == LLSDSerialize::fromXMLDocument(sDictMap, user_file)) || (0 == sDictMap.size()) ) +	if ( (!user_file.is_open())  +		|| (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(sDictMap, user_file))  +		|| (0 == sDictMap.size()) )  	{  		llifstream app_file(app_path + DICT_FILE_MAIN, std::ios::binary); -		if ( (!app_file.is_open()) || (0 == LLSDSerialize::fromXMLDocument(sDictMap, app_file)) || (0 == sDictMap.size()) ) +		if ( (!app_file.is_open())  +			|| (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(sDictMap, app_file))  +			|| (0 == sDictMap.size()) )  		{  			return;  		} diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp index 53d9380f4f..666c03e9ff 100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp @@ -850,12 +850,10 @@ U32 LLControlGroup::loadFromFile(const std::string& filename, bool set_default_v  		return 0;  	} -	S32 ret = LLSDSerialize::fromXML(settings, infile); - -	if (ret <= 0) +	if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXML(settings, infile))  	{  		infile.close(); -		llwarns << "Unable to open LLSD control file " << filename << ". Trying Legacy Method." << llendl;		 +		llwarns << "Unable to parse LLSD control file " << filename << ". Trying Legacy Method." << llendl;  		return loadFromFileLegacy(filename, TRUE, TYPE_STRING);  	} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 826a79b455..089bc7d4cd 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -71,17 +71,6 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>AgentAppearanceServiceURL</key> -    <map> -      <key>Comment</key> -      <string>Current Session Agent Appearance Service URL</string> -      <key>Persist</key> -      <integer>0</integer> -      <key>Type</key> -      <string>String</string> -      <key>Value</key> -      <string></string> -    </map>      <key>AlertedUnsupportedHardware</key>      <map>        <key>Comment</key> @@ -1938,6 +1927,28 @@      <key>Value</key>      <integer>0</integer>    </map> +  <key>DebugAvatarExperimentalServerAppearanceUpdate</key> +  <map> +    <key>Comment</key> +    <string>Experiment with sending full cof_contents instead of cof_version</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>Boolean</string> +    <key>Value</key> +    <integer>0</integer> +  </map> +    <key>DebugAvatarAppearanceServiceURLOverride</key> +    <map> +      <key>Comment</key> +      <string>URL to use for baked texture requests; overrides value returned by login server.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>String</string> +      <key>Value</key> +      <string /> +    </map>  	<key>DebugAvatarRezTime</key>  	<map>  		<key>Comment</key> diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp index 8767955fcb..7662a9689d 100644 --- a/indra/newview/llaccountingcostmanager.cpp +++ b/indra/newview/llaccountingcostmanager.cpp @@ -56,9 +56,9 @@ public:  		}  	} -	void error( U32 statusNum, const std::string& reason ) +	void errorWithContent( U32 statusNum, const std::string& reason, const LLSD& content )  	{ -		llwarns	<< "Transport error "<<reason<<llendl;	 +		llwarns << "Transport error [status:" << statusNum << "]: " << content <<llendl;  		clearPendingRequests();  		LLAccountingCostObserver* observer = mObserverHandle.get(); diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 99b79aadc4..20954e4bae 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -2551,7 +2551,7 @@ public:  	virtual ~LLMaturityPreferencesResponder();  	virtual void result(const LLSD &pContent); -	virtual void error(U32 pStatus, const std::string& pReason); +	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);  protected: @@ -2589,11 +2589,11 @@ void LLMaturityPreferencesResponder::result(const LLSD &pContent)  	mAgent->handlePreferredMaturityResult(actualMaturity);  } -void LLMaturityPreferencesResponder::error(U32 pStatus, const std::string& pReason) +void LLMaturityPreferencesResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent)  {  	llwarns << "while attempting to change maturity preference from '" << LLViewerRegion::accessToString(mPreviousMaturity) -		<< "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error because '" -		<< pReason << "' [status:" << pStatus << "]" << llendl; +		<< "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error with [status:" +		<< pStatus << "]: " << (pContent.isDefined() ? pContent : LLSD(pReason)) << llendl;  	mAgent->handlePreferredMaturityError();  } @@ -2783,7 +2783,7 @@ void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity)  		// If we don't have a region, report it as an error  		if (getRegion() == NULL)  		{ -			responderPtr->error(0U, "region is not defined"); +			responderPtr->errorWithContent(0U, "region is not defined", LLSD());  		}  		else  		{ @@ -2793,7 +2793,8 @@ void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity)  			// If the capability is not defined, report it as an error  			if (url.empty())  			{ -				responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region"); +				responderPtr->errorWithContent(0U,  +							"capability 'UpdateAgentInformation' is not defined for region", LLSD());  			}  			else  			{ diff --git a/indra/newview/llagentpilot.cpp b/indra/newview/llagentpilot.cpp index 734c502fcf..c7872fc5f6 100644 --- a/indra/newview/llagentpilot.cpp +++ b/indra/newview/llagentpilot.cpp @@ -139,7 +139,7 @@ void LLAgentPilot::loadXML(const std::string& filename)  	mActions.reset();  	LLSD record; -	while (!file.eof() && LLSDSerialize::fromXML(record, file)) +	while (!file.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(record, file))  	{  		Action action;  		action.mTime = record["time"].asReal(); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index d8ba4239b7..2c76efc7fb 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -26,6 +26,7 @@  #include "llviewerprecompiledheaders.h" +#include <boost/lexical_cast.hpp>  #include "llaccordionctrltab.h"  #include "llagent.h"  #include "llagentcamera.h" @@ -52,6 +53,11 @@  #include "llsdutil.h"  #include "llsdserialize.h" +#if LL_MSVC +// disable boost::lexical_cast warning +#pragma warning (disable:4702) +#endif +  std::string self_av_string()  {  	// On logout gAgentAvatarp can already be invalid @@ -3167,7 +3173,8 @@ public:  LLSD LLAppearanceMgr::dumpCOF() const  { -	LLSD result = LLSD::emptyArray(); +	LLSD links = LLSD::emptyArray(); +	LLMD5 md5;  	LLInventoryModel::cat_array_t cat_array;  	LLInventoryModel::item_array_t item_array; @@ -3176,13 +3183,54 @@ LLSD LLAppearanceMgr::dumpCOF() const  	{  		const LLViewerInventoryItem* inv_item = item_array.get(i).get();  		LLSD item; -		item["item_id"] = inv_item->getUUID(); -		item["linked_item_id"] = inv_item->getLinkedUUID(); -		item["name"] = inv_item->getName(); +		LLUUID item_id(inv_item->getUUID()); +		md5.update((unsigned char*)item_id.mData, 16);  		item["description"] = inv_item->getActualDescription(); -		item["type"] = inv_item->getActualType(); -		result.append(item); +		md5.update(inv_item->getActualDescription()); +		item["asset_type"] = inv_item->getActualType(); +		LLUUID linked_id(inv_item->getLinkedUUID()); +		item["linked_id"] = linked_id; +		md5.update((unsigned char*)linked_id.mData, 16); + +		if (LLAssetType::AT_LINK == inv_item->getActualType()) +		{ +			const LLViewerInventoryItem* linked_item = inv_item->getLinkedItem(); +			if (NULL == linked_item) +			{ +				llwarns << "Broken link for item '" << inv_item->getName() +						<< "' (" << inv_item->getUUID() +						<< ") during requestServerAppearanceUpdate" << llendl; +				continue; +			} +			// Some assets may be 'hidden' and show up as null in the viewer. +			//if (linked_item->getAssetUUID().isNull()) +			//{ +			//	llwarns << "Broken link (null asset) for item '" << inv_item->getName() +			//			<< "' (" << inv_item->getUUID() +			//			<< ") during requestServerAppearanceUpdate" << llendl; +			//	continue; +			//} +			LLUUID linked_asset_id(linked_item->getAssetUUID()); +			md5.update((unsigned char*)linked_asset_id.mData, 16); +			U32 flags = linked_item->getFlags(); +			md5.update(boost::lexical_cast<std::string>(flags)); +		} +		else if (LLAssetType::AT_LINK_FOLDER != inv_item->getActualType()) +		{ +			llwarns << "Non-link item '" << inv_item->getName() +					<< "' (" << inv_item->getUUID() +					<< ") type " << (S32) inv_item->getActualType() +					<< " during requestServerAppearanceUpdate" << llendl; +			continue; +		} +		links.append(item);  	} +	LLSD result = LLSD::emptyMap(); +	result["cof_contents"] = links; +	char cof_md5sum[MD5HEX_STR_SIZE]; +	md5.finalize(); +	md5.hex_digest(cof_md5sum); +	result["cof_md5sum"] = std::string(cof_md5sum);  	return result;  } @@ -3212,14 +3260,17 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond  	LLSD body;  	S32 cof_version = getCOFVersion(); -	body["cof_version"] = cof_version; -	if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure")) +	if (gSavedSettings.getBOOL("DebugAvatarExperimentalServerAppearanceUpdate"))  	{ -		body["cof_version"] = cof_version+999; +		body = dumpCOF();  	} -	if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage")) +	else  	{ -		body["debug_cof"] = dumpCOF(); 	 +		body["cof_version"] = cof_version; +		if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure")) +		{ +			body["cof_version"] = cof_version+999; +		}  	}  	LL_DEBUGS("Avatar") << "request url " << url << " my_cof_version " << cof_version << llendl; @@ -3257,10 +3308,10 @@ public:  		app_mgr->mLastUpdateRequestCOFVersion = new_version;  	} -	virtual void error(U32 pStatus, const std::string& pReason) +	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& content)  	{ -		llwarns << "While attempting to increment the agent's cof we got an error because '" -			<< pReason << "' [status:" << pStatus << "]" << llendl; +		llwarns << "While attempting to increment the agent's cof we got an error with [status:" +				<< pStatus << "]: " << content << llendl;  		F32 seconds_to_wait;  		if (mRetryPolicy->shouldRetry(pStatus,seconds_to_wait))  		{ @@ -3308,6 +3359,15 @@ void LLAppearanceMgr::incrementCofVersion(LLHTTPClient::ResponderPtr responder_p  	LLHTTPClient::get(url, body, responder_ptr, headers, 30.0f);  } +std::string LLAppearanceMgr::getAppearanceServiceURL() const +{ +	if (gSavedSettings.getString("DebugAvatarAppearanceServiceURLOverride").empty()) +	{ +		return mAppearanceServiceURL; +	} +	return gSavedSettings.getString("DebugAvatarAppearanceServiceURLOverride"); +} +  void show_created_outfit(LLUUID& folder_id, bool show_panel = true)  {  	if (!LLApp::isRunning()) diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 84e08db4c8..d49f5d6c15 100755 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -205,6 +205,13 @@ public:  	// *HACK Remove this after server side texture baking is deployed on all sims.  	void incrementCofVersionLegacy(); +	void setAppearanceServiceURL(const std::string& url) { mAppearanceServiceURL = url; } +	std::string getAppearanceServiceURL() const; + +private: +	std::string		mAppearanceServiceURL; +	 +  protected:  	LLAppearanceMgr();  	~LLAppearanceMgr(); diff --git a/indra/newview/llassetuploadqueue.cpp b/indra/newview/llassetuploadqueue.cpp index f943759bb8..4bdb690225 100644 --- a/indra/newview/llassetuploadqueue.cpp +++ b/indra/newview/llassetuploadqueue.cpp @@ -69,10 +69,11 @@ public:  		delete mData;     	} -	virtual void error(U32 statusNum, const std::string& reason) +	virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)     	{ -		llwarns << "Error: " << reason << llendl; -		LLUpdateTaskInventoryResponder::error(statusNum, reason); +		llwarns << "LLAssetUploadChainResponder Error [status:"  +				<< statusNum << "]: " << content << llendl; +		LLUpdateTaskInventoryResponder::errorWithContent(statusNum, reason, content);     		LLAssetUploadQueue *queue = mSupplier->get();     		if (queue)  		{ diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index 694bbdfb67..2564802387 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -225,10 +225,10 @@ LLAssetUploadResponder::~LLAssetUploadResponder()  }  // virtual -void LLAssetUploadResponder::error(U32 statusNum, const std::string& reason) +void LLAssetUploadResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)  { -	llinfos << "LLAssetUploadResponder::error " << statusNum  -			<< " reason: " << reason << llendl; +	llinfos << "LLAssetUploadResponder::error [status:"  +			<< statusNum << "]: " << content << llendl;  	LLSD args;  	switch(statusNum)  	{ @@ -340,9 +340,9 @@ LLNewAgentInventoryResponder::LLNewAgentInventoryResponder(  }  // virtual -void LLNewAgentInventoryResponder::error(U32 statusNum, const std::string& reason) +void LLNewAgentInventoryResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)  { -	LLAssetUploadResponder::error(statusNum, reason); +	LLAssetUploadResponder::errorWithContent(statusNum, reason, content);  	//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE);  } @@ -487,9 +487,10 @@ void LLSendTexLayerResponder::uploadComplete(const LLSD& content)  	}  } -void LLSendTexLayerResponder::error(U32 statusNum, const std::string& reason) +void LLSendTexLayerResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)  { -	llinfos << "status: " << statusNum << " reason: " << reason << llendl; +	llinfos << "LLSendTexLayerResponder error [status:" +			<< statusNum << "]: " << content << llendl;  	// Invoke the original callback with an error result  	LLViewerTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakedUploadData, -1, LL_EXSTAT_NONE); diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h index 381b919c4a..a6d1016136 100644 --- a/indra/newview/llassetuploadresponders.h +++ b/indra/newview/llassetuploadresponders.h @@ -42,7 +42,7 @@ public:  							LLAssetType::EType asset_type);  	~LLAssetUploadResponder(); -    virtual void error(U32 statusNum, const std::string& reason); +    virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content);  	virtual void result(const LLSD& content);  	virtual void uploadUpload(const LLSD& content);  	virtual void uploadComplete(const LLSD& content); @@ -67,7 +67,7 @@ public:  		const LLSD& post_data,  		const std::string& file_name,  		LLAssetType::EType asset_type); -    virtual void error(U32 statusNum, const std::string& reason); +    virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content);  	virtual void uploadComplete(const LLSD& content);  	virtual void uploadFailure(const LLSD& content);  }; @@ -122,7 +122,7 @@ public:  	~LLSendTexLayerResponder();  	virtual void uploadComplete(const LLSD& content); -	virtual void error(U32 statusNum, const std::string& reason); +	virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content);  	LLBakedUploadData * mBakedUploadData;  }; diff --git a/indra/newview/llclassifiedstatsresponder.cpp b/indra/newview/llclassifiedstatsresponder.cpp index b4da31895f..e3cd83e174 100644 --- a/indra/newview/llclassifiedstatsresponder.cpp +++ b/indra/newview/llclassifiedstatsresponder.cpp @@ -62,8 +62,7 @@ void LLClassifiedStatsResponder::result(const LLSD& content)  }  /*virtual*/ -void LLClassifiedStatsResponder::error(U32 status, const std::string& reason) +void LLClassifiedStatsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	llinfos << "LLClassifiedStatsResponder::error(" -		<< status << ": " << reason << ")" << llendl; +	llinfos << "LLClassifiedStatsResponder::error [status:" << status << "]: " << content << llendl;  } diff --git a/indra/newview/llclassifiedstatsresponder.h b/indra/newview/llclassifiedstatsresponder.h index 3db1868cb2..06dcb62fd0 100644 --- a/indra/newview/llclassifiedstatsresponder.h +++ b/indra/newview/llclassifiedstatsresponder.h @@ -39,7 +39,7 @@ public:  	virtual void result(const LLSD& content);  	//If we get back an error (not found, etc...), handle it here -	virtual void error(U32 status, const std::string& reason); +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  protected:  	LLUUID mClassifiedID; diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp index 0faa888398..2669b0340f 100644 --- a/indra/newview/llestateinfomodel.cpp +++ b/indra/newview/llestateinfomodel.cpp @@ -122,9 +122,9 @@ public:  	}  	// if we get an error response -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		llwarns << "Failed to commit estate info (" << status << "): " << reason << llendl; +		llwarns << "Failed to commit estate info [status:" << status << "]: " << content << llendl;  	}  }; diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp index 2c786b7f8b..e0f7223a8c 100644 --- a/indra/newview/lleventpoll.cpp +++ b/indra/newview/lleventpoll.cpp @@ -62,7 +62,7 @@ namespace  		void handleMessage(const LLSD& content); -		virtual	void error(U32 status, const std::string& reason); +		virtual	void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  		virtual	void result(const LLSD&	content);  		virtual void completedRaw(U32 status, @@ -187,7 +187,7 @@ namespace  	}  	//virtual -	void LLEventPollResponder::error(U32 status, const	std::string& reason) +	void LLEventPollResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{  		if (mDone) return; @@ -207,13 +207,13 @@ namespace  										+ mErrorCount * EVENT_POLL_ERROR_RETRY_SECONDS_INC  									, this); -			llwarns << "Unexpected HTTP error.  status: " << status << ", reason: " << reason << llendl; +			llwarns << "LLEventPollResponder error [status:" << status << "]: " << content << llendl;  		}  		else  		{ -			llwarns <<	"LLEventPollResponder::error: <" << mCount << "> got " -					<<	status << ": " << reason -					<<	(mDone ? " -- done"	: "") << llendl; +			llwarns << "LLEventPollResponder error <" << mCount  +					<< "> [status:" << status << "]: " << content +					<< (mDone ? " -- done" : "") << llendl;  			stop();  			// At this point we have given up and the viewer will not receive HTTP messages from the simulator. diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 19fca9b95d..fbf72b1a85 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -1070,7 +1070,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t  	{ //read base log into memory  		S32 i = 0;  		std::ifstream is(base.c_str()); -		while (!is.eof() && LLSDSerialize::fromXML(cur, is)) +		while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is))  		{  			base_data[i++] = cur;  		} @@ -1083,7 +1083,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t  	{ //read current log into memory  		S32 i = 0;  		std::ifstream is(target.c_str()); -		while (!is.eof() && LLSDSerialize::fromXML(cur, is)) +		while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is))  		{  			cur_data[i++] = cur; @@ -1374,7 +1374,7 @@ LLSD LLFastTimerView::analyzePerformanceLogDefault(std::istream& is)  	stats_map_t time_stats;  	stats_map_t sample_stats; -	while (!is.eof() && LLSDSerialize::fromXML(cur, is)) +	while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is))  	{  		for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter)  		{ diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index 0290e7cdf0..752aba5e16 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -404,8 +404,7 @@ public:  		}  		else  		{ -			llinfos << "avatar picker failed " << status -					<< " reason " << reason << llendl; +			llwarns << "avatar picker failed [status:" << status << "]: " << content << llendl;  		}  	} diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp index c7fab2573f..3a7ca17b73 100644 --- a/indra/newview/llfloaterregiondebugconsole.cpp +++ b/indra/newview/llfloaterregiondebugconsole.cpp @@ -75,7 +75,7 @@ namespace  	{  	public:  		/* virtual */ -		void error(U32 status, const std::string& reason) +		void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  		{  			sConsoleReplySignal(UNABLE_TO_SEND_COMMAND);  		} diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index a36021f971..4a9ea5acf0 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -756,9 +756,10 @@ class ConsoleRequestResponder : public LLHTTPClient::Responder  {  public:  	/*virtual*/ -	void error(U32 status, const std::string& reason) +	void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		llwarns << "requesting mesh_rez_enabled failed" << llendl; +		llwarns << "ConsoleRequestResponder error requesting mesh_rez_enabled [status:" +				<< status << "]: " << content << llendl;  	}  }; @@ -768,9 +769,10 @@ class ConsoleUpdateResponder : public LLHTTPClient::Responder  {  public:  	/* virtual */ -	void error(U32 status, const std::string& reason) +	void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		llwarns << "Updating mesh enabled region setting failed" << llendl; +		llwarns << "ConsoleRequestResponder error updating mesh enabled region setting [status:" +				<< status << "]: " << content << llendl;  	}  }; @@ -2207,10 +2209,10 @@ public:  	}  	// if we get an error response -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		llinfos << "LLEstateChangeInfoResponder::error " -			<< status << ": " << reason << llendl; +		llinfos << "LLEstateChangeInfoResponder::error [status:" +			<< status << "]: " << content << llendl;  	}  private:  	LLHandle<LLPanel> mpPanel; diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 86bd15b217..685b566fa8 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -695,7 +695,7 @@ class LLUserReportResponder : public LLHTTPClient::Responder  public:  	LLUserReportResponder(): LLHTTPClient::Responder()  {} -	void error(U32 status, const std::string& reason) +	void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{  		// *TODO do some user messaging here  		LLUploadDialog::modalUploadFinished(); diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index a50907601c..17c34f1da0 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -221,9 +221,9 @@ void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content)  	}  } -void fetchScriptLimitsRegionInfoResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionInfoResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	llwarns << "Error from responder " << reason << llendl; +	llwarns << "fetchScriptLimitsRegionInfoResponder error [status:" << status << "]: " << content << llendl;  }  void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref) @@ -308,9 +308,9 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref)  	}  } -void fetchScriptLimitsRegionSummaryResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionSummaryResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	llwarns << "Error from responder " << reason << llendl; +	llwarns << "fetchScriptLimitsRegionSummaryResponder error [status:" << status << "]: " << content << llendl;  }  void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content_ref) @@ -417,9 +417,9 @@ result (map)  	}  } -void fetchScriptLimitsRegionDetailsResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionDetailsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	llwarns << "Error from responder " << reason << llendl; +	llwarns << "fetchScriptLimitsRegionDetailsResponder error [status:" << status << "]: " << content << llendl;  }  void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref) @@ -513,9 +513,9 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref)  	}  } -void fetchScriptLimitsAttachmentInfoResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsAttachmentInfoResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	llwarns << "Error from responder " << reason << llendl; +	llwarns << "fetchScriptLimitsAttachmentInfoResponder error [status:" << status << "]: " << content << llendl;  }  ///---------------------------------------------------------------------------- diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 9bcfa5fe14..f8732ef94b 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -89,7 +89,7 @@ class fetchScriptLimitsRegionInfoResponder: public LLHTTPClient::Responder  		fetchScriptLimitsRegionInfoResponder(const LLSD& info) : mInfo(info) {};  		void result(const LLSD& content); -		void error(U32 status, const std::string& reason); +		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  	public:  	protected:  		LLSD mInfo; @@ -101,7 +101,7 @@ class fetchScriptLimitsRegionSummaryResponder: public LLHTTPClient::Responder  		fetchScriptLimitsRegionSummaryResponder(const LLSD& info) : mInfo(info) {};  		void result(const LLSD& content); -		void error(U32 status, const std::string& reason); +		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  	public:  	protected:  		LLSD mInfo; @@ -113,7 +113,7 @@ class fetchScriptLimitsRegionDetailsResponder: public LLHTTPClient::Responder  		fetchScriptLimitsRegionDetailsResponder(const LLSD& info) : mInfo(info) {};  		void result(const LLSD& content); -		void error(U32 status, const std::string& reason); +		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  	public:  	protected:  		LLSD mInfo; @@ -125,7 +125,7 @@ class fetchScriptLimitsAttachmentInfoResponder: public LLHTTPClient::Responder  		fetchScriptLimitsAttachmentInfoResponder() {};  		void result(const LLSD& content); -		void error(U32 status, const std::string& reason); +		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  	public:  	protected:  }; diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 81eb1d397e..cbd844cdac 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1847,14 +1847,15 @@ public:  		GroupMemberDataResponder() {}  		virtual ~GroupMemberDataResponder() {}  		virtual void result(const LLSD& pContent); -		virtual void error(U32 pStatus, const std::string& pReason); +		virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);  private:  		LLSD mMemberData;  }; -void GroupMemberDataResponder::error(U32 pStatus, const std::string& pReason) +void GroupMemberDataResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent)  { -	LL_WARNS("GrpMgr") << "Error receiving group member data." << LL_ENDL; +	LL_WARNS("GrpMgr") << "Error receiving group member data [status:"  +		<< pStatus << "]: " << pContent << LL_ENDL;  }  void GroupMemberDataResponder::result(const LLSD& content) diff --git a/indra/newview/llhomelocationresponder.cpp b/indra/newview/llhomelocationresponder.cpp index 4850d18d99..37428c4a44 100644 --- a/indra/newview/llhomelocationresponder.cpp +++ b/indra/newview/llhomelocationresponder.cpp @@ -97,7 +97,7 @@ void LLHomeLocationResponder::result( const LLSD& content )    }  } -void LLHomeLocationResponder::error( U32 status, const std::string& reason ) +void LLHomeLocationResponder::errorWithContent( U32 status, const std::string& reason, const LLSD& content )  { -  llinfos << "received error(" << reason  << ")" << llendl; +	llwarns << "LLHomeLocationResponder error [status:" << status << "]: " << content << llendl;  } diff --git a/indra/newview/llhomelocationresponder.h b/indra/newview/llhomelocationresponder.h index d640b9c894..9bf4b12c4e 100644 --- a/indra/newview/llhomelocationresponder.h +++ b/indra/newview/llhomelocationresponder.h @@ -36,7 +36,7 @@  class LLHomeLocationResponder : public LLHTTPClient::Responder  {  	virtual void result( const LLSD& content ); -	virtual void error( U32 status, const std::string& reason ); +	virtual void errorWithContent( U32 status, const std::string& reason, const LLSD& content );  };  #endif diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 63eedcdfea..fff178f8fe 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -985,9 +985,10 @@ public:  		mSessionID = session_id;  	} -	void error(U32 statusNum, const std::string& reason) +	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)  	{ -		llinfos << "Error inviting all agents to session" << llendl; +		llwarns << "Error inviting all agents to session [status:"  +				<< statusNum << "]: " << content << llendl;  		//throw something back to the viewer here?  	} diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 0250af6a0e..1dab0e67bf 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -394,9 +394,10 @@ public:  		mSessionID = session_id;  	} -	void error(U32 statusNum, const std::string& reason) +	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)  	{ -		llinfos << "Error inviting all agents to session" << llendl; +		llwarns << "Error inviting all agents to session [status:"  +				<< statusNum << "]: " << content << llendl;  		//throw something back to the viewer here?  	} diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 57373704ef..20b33c5d08 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1227,7 +1227,7 @@ public:  		mAgents = agents_to_invite;  	} -	virtual void error(U32 statusNum, const std::string& reason) +	virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)  	{  		//try an "old school" way.  		if ( statusNum == 400 ) @@ -1239,6 +1239,9 @@ public:  				mAgents);  		} +		llwarns << "LLStartConferenceChatResponder error [status:" +				<< statusNum << "]: " << content << llendl; +  		//else throw an error back to the client?  		//in theory we should have just have these error strings  		//etc. set up in this file as opposed to the IMMgr, @@ -1384,8 +1387,10 @@ public:  		}  	} -	void error(U32 statusNum, const std::string& reason) -	{		 +	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) +	{ +		llwarns << "LLViewerChatterBoxInvitationAcceptResponder error [status:" +				<< statusNum << "]: " << content << llendl;  		//throw something back to the viewer here?  		if ( gIMMgr )  		{ diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 17d0b0ffbb..aafc43b02d 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -501,9 +501,9 @@ void LLInspectAvatar::toggleSelectedVoice(bool enabled)  				mSessionID = session_id;  			} -			virtual void error(U32 status, const std::string& reason) +			virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  			{ -				llwarns << status << ": " << reason << llendl; +				llwarns << "MuteVoiceResponder error [status:" << status << "]: " << content << llendl;  				if ( gIMMgr )  				{ diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index ac1f40b486..99e72cdb22 100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -424,9 +424,10 @@ public:  	{  	} -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		LL_WARNS("InvAPI") << "CreateInventoryCategory failed.   status = " << status << ", reasion = \"" << reason << "\"" << LL_ENDL; +		LL_WARNS("InvAPI") << "CreateInventoryCategory failed [status:" +				<< status << "]: " << content << LL_ENDL;  	}  	virtual void result(const LLSD& content) @@ -1399,10 +1400,9 @@ void  LLInventoryModel::fetchInventoryResponder::result(const LLSD& content)  }  //If we get back an error (not found, etc...), handle it here -void LLInventoryModel::fetchInventoryResponder::error(U32 status, const std::string& reason) +void LLInventoryModel::fetchInventoryResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	llinfos << "fetchInventory::error " -		<< status << ": " << reason << llendl; +	llwarns << "fetchInventory error [status:" << status << "]: " << content << llendl;  	gInventory.notifyObservers();  } diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index 8382e875b4..dfdd237c95 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -84,7 +84,7 @@ public:  	public:  		fetchInventoryResponder(const LLSD& request_sd) : mRequestSD(request_sd) {};  		void result(const LLSD& content);			 -		void error(U32 status, const std::string& reason); +		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  	protected:  		LLSD mRequestSD;  	}; diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index 024d34519f..f2b39e7186 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -366,7 +366,7 @@ class LLInventoryModelFetchItemResponder : public LLInventoryModel::fetchInvento  public:  	LLInventoryModelFetchItemResponder(const LLSD& request_sd) : LLInventoryModel::fetchInventoryResponder(request_sd) {};  	void result(const LLSD& content);			 -	void error(U32 status, const std::string& reason); +	void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  };  void LLInventoryModelFetchItemResponder::result( const LLSD& content ) @@ -375,9 +375,9 @@ void LLInventoryModelFetchItemResponder::result( const LLSD& content )  	LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1);  } -void LLInventoryModelFetchItemResponder::error( U32 status, const std::string& reason ) +void LLInventoryModelFetchItemResponder::errorWithContent( U32 status, const std::string& reason, const LLSD& content )  { -	LLInventoryModel::fetchInventoryResponder::error(status, reason); +	LLInventoryModel::fetchInventoryResponder::errorWithContent(status, reason, content);  	LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1);  } @@ -391,7 +391,7 @@ public:  	{};  	//LLInventoryModelFetchDescendentsResponder() {};  	void result(const LLSD& content); -	void error(U32 status, const std::string& reason); +	void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  protected:  	BOOL getIsRecursive(const LLUUID& cat_id) const;  private: @@ -529,12 +529,12 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  }  // If we get back an error (not found, etc...), handle it here. -void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason) +void LLInventoryModelFetchDescendentsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  {  	LLInventoryModelBackgroundFetch *fetcher = LLInventoryModelBackgroundFetch::getInstance(); -	llinfos << "LLInventoryModelFetchDescendentsResponder::error " -		<< status << ": " << reason << llendl; +	llinfos << "LLInventoryModelFetchDescendentsResponder::error [status:" +			<< status << "]: " << content << llendl;  	fetcher->incrFetchCount(-1); diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp index 31038b4aac..e3b46d5d2f 100644 --- a/indra/newview/llmediadataclient.cpp +++ b/indra/newview/llmediadataclient.cpp @@ -564,7 +564,7 @@ LLMediaDataClient::Responder::Responder(const request_ptr_t &request)  }  /*virtual*/ -void LLMediaDataClient::Responder::error(U32 status, const std::string& reason) +void LLMediaDataClient::Responder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  {  	mRequest->stopTracking(); @@ -596,8 +596,8 @@ void LLMediaDataClient::Responder::error(U32 status, const std::string& reason)  	}  	else   	{ -		std::string msg = boost::lexical_cast<std::string>(status) + ": " + reason; -		LL_WARNS("LLMediaDataClient") << *mRequest << " http error(" << msg << ")" << LL_ENDL; +		LL_WARNS("LLMediaDataClient") << *mRequest << " http error [status:"  +				<< status << "]:" << content << ")" << LL_ENDL;  	}  } @@ -1003,7 +1003,7 @@ LLMediaDataClient::Responder *LLObjectMediaNavigateClient::RequestNavigate::crea  }  /*virtual*/ -void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string& reason) +void LLObjectMediaNavigateClient::Responder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  {  	getRequest()->stopTracking(); @@ -1017,7 +1017,7 @@ void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string  	// class  	if (status == HTTP_SERVICE_UNAVAILABLE)  	{ -		LLMediaDataClient::Responder::error(status, reason); +		LLMediaDataClient::Responder::errorWithContent(status, reason, content);  	}  	else  	{ diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h index ab90915c55..89e20a28d0 100644 --- a/indra/newview/llmediadataclient.h +++ b/indra/newview/llmediadataclient.h @@ -195,7 +195,7 @@ protected:  	public:  		Responder(const request_ptr_t &request);  		//If we get back an error (not found, etc...), handle it here -		virtual void error(U32 status, const std::string& reason); +		virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  		//If we get back a normal response, handle it here.	 Default just logs it.  		virtual void result(const LLSD& content); @@ -400,7 +400,7 @@ protected:      public:          Responder(const request_ptr_t &request)              : LLMediaDataClient::Responder(request) {} -		virtual void error(U32 status, const std::string& reason); +		virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);          virtual void result(const LLSD &content);      private:          void mediaNavigateBounceBack(); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index a49bbcd924..e71dba5cae 100755 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -1105,15 +1105,7 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)                  gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);          } -	if (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion() > 0) -	{ -		LLAppearanceMgr::getInstance()->incrementCofVersion(); -	} -	else -	{ -		// *HACK This should be removed when all regions support the IncrementCOFVersion capability. -		incrementCofVersionLegacy(); -	} +	  }  void LLPanelEditWearable::revertChanges() diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp index 2dd01e931e..c277359133 100644 --- a/indra/newview/llpathfindingmanager.cpp +++ b/indra/newview/llpathfindingmanager.cpp @@ -108,7 +108,7 @@ public:  	virtual ~NavMeshStatusResponder();  	virtual void result(const LLSD &pContent); -	virtual void error(U32 pStatus, const std::string& pReason); +	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);  protected: @@ -130,7 +130,7 @@ public:  	virtual ~NavMeshResponder();  	virtual void result(const LLSD &pContent); -	virtual void error(U32 pStatus, const std::string& pReason); +	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);  protected: @@ -151,7 +151,7 @@ public:  	virtual ~AgentStateResponder();  	virtual void result(const LLSD &pContent); -	virtual void error(U32 pStatus, const std::string& pReason); +	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);  protected: @@ -170,7 +170,7 @@ public:  	virtual ~NavMeshRebakeResponder();  	virtual void result(const LLSD &pContent); -	virtual void error(U32 pStatus, const std::string& pReason); +	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);  protected: @@ -190,9 +190,11 @@ public:  	virtual ~LinksetsResponder();  	void handleObjectLinksetsResult(const LLSD &pContent); -	void handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL); +	void handleObjectLinksetsError(U32 pStatus, const std::string &pReason,  +								   const LLSD& pContent, const std::string &pURL);  	void handleTerrainLinksetsResult(const LLSD &pContent); -	void handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL); +	void handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, +									const LLSD& pContent, const std::string &pURL);  protected: @@ -230,7 +232,7 @@ public:  	virtual ~ObjectLinksetsResponder();  	virtual void result(const LLSD &pContent); -	virtual void error(U32 pStatus, const std::string &pReason); +	virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent);  protected: @@ -250,7 +252,7 @@ public:  	virtual ~TerrainLinksetsResponder();  	virtual void result(const LLSD &pContent); -	virtual void error(U32 pStatus, const std::string &pReason); +	virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent);  protected: @@ -270,7 +272,7 @@ public:  	virtual ~CharactersResponder();  	virtual void result(const LLSD &pContent); -	virtual void error(U32 pStatus, const std::string &pReason); +	virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent);  protected: @@ -800,9 +802,9 @@ void NavMeshStatusResponder::result(const LLSD &pContent)  	LLPathfindingManager::getInstance()->handleNavMeshStatusRequest(navMeshStatus, mRegion, mIsGetStatusOnly);  } -void NavMeshStatusResponder::error(U32 pStatus, const std::string& pReason) +void NavMeshStatusResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent)  { -	llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; +	llwarns << "NavMeshStatusResponder error [status:" << pStatus << "]: " << pContent << llendl;  	LLPathfindingNavMeshStatus navMeshStatus(mRegionUUID);  	LLPathfindingManager::getInstance()->handleNavMeshStatusRequest(navMeshStatus, mRegion, mIsGetStatusOnly);  } @@ -828,9 +830,9 @@ void NavMeshResponder::result(const LLSD &pContent)  	mNavMeshPtr->handleNavMeshResult(pContent, mNavMeshVersion);  } -void NavMeshResponder::error(U32 pStatus, const std::string& pReason) +void NavMeshResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent)  { -	mNavMeshPtr->handleNavMeshError(pStatus, pReason, mCapabilityURL, mNavMeshVersion); +	mNavMeshPtr->handleNavMeshError(pStatus, pReason, pContent, mCapabilityURL, mNavMeshVersion);  }  //--------------------------------------------------------------------------- @@ -855,9 +857,9 @@ void AgentStateResponder::result(const LLSD &pContent)  	LLPathfindingManager::getInstance()->handleAgentState(canRebakeRegion);  } -void AgentStateResponder::error(U32 pStatus, const std::string &pReason) +void AgentStateResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)  { -	llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; +	llwarns << "AgentStateResponder error [status:" << pStatus << "]: " << pContent << llendl;  	LLPathfindingManager::getInstance()->handleAgentState(FALSE);  } @@ -881,9 +883,9 @@ void NavMeshRebakeResponder::result(const LLSD &pContent)  	mRebakeNavMeshCallback(true);  } -void NavMeshRebakeResponder::error(U32 pStatus, const std::string &pReason) +void NavMeshRebakeResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)  { -	llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; +	llwarns << "NavMeshRebakeResponder error [status:" << pStatus << "]: " << pContent << llendl;  	mRebakeNavMeshCallback(false);  } @@ -916,9 +918,11 @@ void LinksetsResponder::handleObjectLinksetsResult(const LLSD &pContent)  	}  } -void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL) +void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason, +												 const LLSD& pContent, const std::string &pURL)  { -	llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; +	llwarns << "LinksetsResponder object linksets error with request to URL '" << pURL << "' [status:" +			<< pStatus << "]: " << pContent << llendl;  	mObjectMessagingState = kReceivedError;  	if (mTerrainMessagingState != kWaiting)  	{ @@ -937,8 +941,11 @@ void LinksetsResponder::handleTerrainLinksetsResult(const LLSD &pContent)  	}  } -void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL) +void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, +												   const LLSD& pContent, const std::string &pURL)  { +	llwarns << "LinksetsResponder terrain linksets error with request to URL '" << pURL << "' [status:" +			<< pStatus << "]: " << pContent << llendl;  	mTerrainMessagingState = kReceivedError;  	if (mObjectMessagingState != kWaiting)  	{ @@ -988,9 +995,9 @@ void ObjectLinksetsResponder::result(const LLSD &pContent)  	mLinksetsResponsderPtr->handleObjectLinksetsResult(pContent);  } -void ObjectLinksetsResponder::error(U32 pStatus, const std::string &pReason) +void ObjectLinksetsResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)  { -	mLinksetsResponsderPtr->handleObjectLinksetsError(pStatus, pReason, mCapabilityURL); +	mLinksetsResponsderPtr->handleObjectLinksetsError(pStatus, pReason, pContent, mCapabilityURL);  }  //--------------------------------------------------------------------------- @@ -1013,9 +1020,9 @@ void TerrainLinksetsResponder::result(const LLSD &pContent)  	mLinksetsResponsderPtr->handleTerrainLinksetsResult(pContent);  } -void TerrainLinksetsResponder::error(U32 pStatus, const std::string &pReason) +void TerrainLinksetsResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)  { -	mLinksetsResponsderPtr->handleTerrainLinksetsError(pStatus, pReason, mCapabilityURL); +	mLinksetsResponsderPtr->handleTerrainLinksetsError(pStatus, pReason, pContent, mCapabilityURL);  }  //--------------------------------------------------------------------------- @@ -1040,9 +1047,9 @@ void CharactersResponder::result(const LLSD &pContent)  	mCharactersCallback(mRequestId, LLPathfindingManager::kRequestCompleted, characterListPtr);  } -void CharactersResponder::error(U32 pStatus, const std::string &pReason) +void CharactersResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)  { -	llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; +	llwarns << "CharactersResponder error [status:" << pStatus << "]: " << pContent << llendl;  	LLPathfindingObjectListPtr characterListPtr =  LLPathfindingObjectListPtr(new LLPathfindingCharacterList());  	mCharactersCallback(mRequestId, LLPathfindingManager::kRequestError, characterListPtr); diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp index e01dd3a152..0c23e5ac92 100644 --- a/indra/newview/llpathfindingnavmesh.cpp +++ b/indra/newview/llpathfindingnavmesh.cpp @@ -184,9 +184,10 @@ void LLPathfindingNavMesh::handleNavMeshError()  	setRequestStatus(kNavMeshRequestError);  } -void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion) +void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const LLSD& pContent, const std::string &pURL, U32 pNavMeshVersion)  { -	llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; +	llwarns << "LLPathfindingNavMesh error with request to URL '" << pURL << "' [status:" +			<< pStatus << "]: " << pContent << llendl;  	if (mNavMeshStatus.getVersion() == pNavMeshVersion)  	{  		handleNavMeshError(); diff --git a/indra/newview/llpathfindingnavmesh.h b/indra/newview/llpathfindingnavmesh.h index 7a844f54ce..b872ccad7c 100644 --- a/indra/newview/llpathfindingnavmesh.h +++ b/indra/newview/llpathfindingnavmesh.h @@ -74,7 +74,7 @@ public:  	void handleNavMeshResult(const LLSD &pContent, U32 pNavMeshVersion);  	void handleNavMeshNotEnabled();  	void handleNavMeshError(); -	void handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion); +	void handleNavMeshError(U32 pStatus, const std::string &pReason, const LLSD& pContent, const std::string &pURL, U32 pNavMeshVersion);  protected: diff --git a/indra/newview/llproductinforequest.cpp b/indra/newview/llproductinforequest.cpp index 93bf8b2328..1390000fc5 100644 --- a/indra/newview/llproductinforequest.cpp +++ b/indra/newview/llproductinforequest.cpp @@ -43,10 +43,10 @@ public:  	}  	//If we get back an error (not found, etc...), handle it here -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		llwarns << "LLProductInfoRequest::error(" -		<< status << ": " << reason << ")" << llendl; +		llwarns << "LLProductInfoRequest error [status:" +				<< status << ":] " << content << llendl;  	}  }; diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp index 3862dac340..500dec7ee5 100644 --- a/indra/newview/llremoteparcelrequest.cpp +++ b/indra/newview/llremoteparcelrequest.cpp @@ -62,10 +62,10 @@ void LLRemoteParcelRequestResponder::result(const LLSD& content)  //If we get back an error (not found, etc...), handle it here  //virtual -void LLRemoteParcelRequestResponder::error(U32 status, const std::string& reason) +void LLRemoteParcelRequestResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	llinfos << "LLRemoteParcelRequest::error(" -		<< status << ": " << reason << ")" << llendl; +	llwarns << "LLRemoteParcelRequest error [status:" +			<< status << "]: " << content << llendl;  	// Panel inspecting the information may be closed and destroyed  	// before this response is received. diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h index 74cf1616df..b87056573b 100644 --- a/indra/newview/llremoteparcelrequest.h +++ b/indra/newview/llremoteparcelrequest.h @@ -44,7 +44,7 @@ public:  	/*virtual*/ void result(const LLSD& content);  	//If we get back an error (not found, etc...), handle it here -	/*virtual*/ void error(U32 status, const std::string& reason); +	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  protected:  	LLHandle<LLRemoteParcelInfoObserver> mObserverHandle; diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 1c7c6450c7..890bc0f42d 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -726,9 +726,9 @@ public:  		mSessionID = session_id;  	} -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		llwarns << status << ": " << reason << llendl; +		llwarns << "ModerationResponder error [status:" << status << "]: " << content << llendl;  		if ( gIMMgr )  		{ diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 156aa25274..e6e7b8650c 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3449,7 +3449,7 @@ bool process_login_success_response()  	std::string agent_appearance_url = response["agent_appearance_service"];  	if (!agent_appearance_url.empty())  	{ -		gSavedSettings.setString("AgentAppearanceServiceURL", agent_appearance_url); +		LLAppearanceMgr::instance().setAppearanceServiceURL(agent_appearance_url);  	}  	// Set the location of the snapshot sharing config endpoint diff --git a/indra/newview/lluploadfloaterobservers.cpp b/indra/newview/lluploadfloaterobservers.cpp index 5a6a17fbca..1d777b3f7f 100644 --- a/indra/newview/lluploadfloaterobservers.cpp +++ b/indra/newview/lluploadfloaterobservers.cpp @@ -33,9 +33,10 @@ LLUploadModelPremissionsResponder::LLUploadModelPremissionsResponder(const LLHan  {  } -void LLUploadModelPremissionsResponder::error(U32 status, const std::string& reason) +void LLUploadModelPremissionsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	llwarns << "LLUploadModelPremissionsResponder::error("<< status << ": " << reason << ")" << llendl; +	llwarns << "LLUploadModelPremissionsResponder error [status:" +			<< status << "]: " << content << llendl;  	LLUploadPermissionsObserver* observer = mObserverHandle.get(); diff --git a/indra/newview/lluploadfloaterobservers.h b/indra/newview/lluploadfloaterobservers.h index 79aad282d7..b43ddb44d9 100644 --- a/indra/newview/lluploadfloaterobservers.h +++ b/indra/newview/lluploadfloaterobservers.h @@ -86,7 +86,7 @@ public:  	LLUploadModelPremissionsResponder(const LLHandle<LLUploadPermissionsObserver>& observer); -	void error(U32 status, const std::string& reason); +	void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  	void result(const LLSD& content); diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp index 5741fab29a..1ac6a90894 100644 --- a/indra/newview/llviewerdisplayname.cpp +++ b/indra/newview/llviewerdisplayname.cpp @@ -59,8 +59,10 @@ class LLSetDisplayNameResponder : public LLHTTPClient::Responder  {  public:  	// only care about errors -	/*virtual*/ void error(U32 status, const std::string& reason) +	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ +		llwarns << "LLSetDisplayNameResponder error [status:" +				<< status << "]: " << content << llendl;  		LLViewerDisplayName::sSetDisplayNameSignal(false, "", LLSD());  		LLViewerDisplayName::sSetDisplayNameSignal.disconnect_all_slots();  	} diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index eec44c7a74..0561e731e7 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -691,12 +691,12 @@ public:  		}  	} -	void error(U32 statusNum, const std::string& reason) +	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)  	{  		llwarns  			<< "Transport error requesting object cost " -			<< "HTTP status: " << statusNum << ", reason: " -			<< reason << "." << llendl; +			<< "[status: " << statusNum << "]: " +			<< content << llendl;  		// TODO*: Error message to user  		// For now just clear the request from the pending list @@ -780,12 +780,12 @@ public:  		}  	} -	void error(U32 statusNum, const std::string& reason) +	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)  	{  		llwarns  			<< "Transport error requesting object physics flags " -			<< "HTTP status: " << statusNum << ", reason: " -			<< reason << "." << llendl; +			<< "[status: " << statusNum << "]: " +			<< content << llendl;  		// TODO*: Error message to user  		// For now just clear the request from the pending list diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index e940dda010..b8b53aa6e4 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -210,9 +210,9 @@ public:  	virtual ~BaseCapabilitiesComplete()  	{ } -    void error(U32 statusNum, const std::string& reason) +    void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)      { -		LL_WARNS2("AppInit", "Capabilities") << statusNum << ": " << reason << LL_ENDL; +		LL_WARNS2("AppInit", "Capabilities") << "[status:" << statusNum << ":] " << content << LL_ENDL;  		LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(mRegionHandle);  		if (regionp)  		{ @@ -278,8 +278,11 @@ public:  	virtual ~BaseCapabilitiesCompleteTracker()  	{ } -	void error(U32 statusNum, const std::string& reason) -	{ } +	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) +	{ +		llwarns << "BaseCapabilitiesCompleteTracker error [status:" +				<< statusNum << "]: " << content << llendl; +	}  	void result(const LLSD& content)  	{ @@ -1731,9 +1734,9 @@ public:      { } -    void error(U32 statusNum, const std::string& reason) +    void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)      { -		LL_WARNS2("AppInit", "SimulatorFeatures") << statusNum << ": " << reason << LL_ENDL; +		LL_WARNS2("AppInit", "SimulatorFeatures") << "[status:" << statusNum << "]: " << content << LL_ENDL;  		retry();      } diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 17bb03b889..4ed01f36ab 100755 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -530,10 +530,10 @@ class ViewerStatsResponder : public LLHTTPClient::Responder  public:      ViewerStatsResponder() { } -    void error(U32 statusNum, const std::string& reason) +    void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)      { -		llinfos << "ViewerStatsResponder::error " << statusNum << " " -				<< reason << llendl; +		llwarns << "ViewerStatsResponder error [status:" << statusNum << "]: " +				<< content << llendl;      }      void result(const LLSD& content) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f6fd8b2409..cec1dc677f 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2937,6 +2937,10 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)  			S32 last_received_cof_version = LLAppearanceMgr::instance().getLastAppearanceUpdateCOFVersion();  			debug_line += llformat(" - cof: %d req: %d rcv:%d",  								   curr_cof_version, last_request_cof_version, last_received_cof_version); +			if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure")) +			{ +				debug_line += " FORCING ERRS"; +			}  		}  		addDebugText(debug_line);  	} @@ -4496,7 +4500,8 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)  	std::string url = "";  	if (isUsingServerBakes())  	{ -		if (gSavedSettings.getString("AgentAppearanceServiceURL").empty()) +		const std::string& appearance_service_url = LLAppearanceMgr::instance().getAppearanceServiceURL(); +		if (appearance_service_url.empty())  		{  			// Probably a server-side issue if we get here:  			llwarns << "AgentAppearanceServiceURL not set - Baked texture requests will fail" << llendl; @@ -4506,7 +4511,7 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)  		const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te);  		if (texture_entry != NULL)  		{ -			url = gSavedSettings.getString("AgentAppearanceServiceURL") + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString(); +			url = appearance_service_url + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();  			//llinfos << "baked texture url: " << url << llendl;  		}  	} @@ -7256,7 +7261,7 @@ void LLVOAvatar::onBakedTextureLoaded(BOOL success,  									  LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src,  									  S32 discard_level, BOOL final, void* userdata)  { -	// llinfos << "onBakedTextureLoaded: " << src_vi->getID() << llendl; +	LL_DEBUGS("Avatar") << "onBakedTextureLoaded: " << src_vi->getID() << LL_ENDL;  	LLUUID id = src_vi->getID();  	LLUUID *avatar_idp = (LLUUID *)userdata; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 66ad4ec394..f7902c5302 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2264,7 +2264,7 @@ public:  		else  		{  			LL_WARNS("Avatar") << "Failed " << status << " reason " << reason << LL_ENDL; -			error(status,reason); +			errorWithContent(status,reason,content);  		}  	} @@ -2440,11 +2440,12 @@ public:  	}  	// Error -	/*virtual*/ void error(U32 status, const std::string& reason) +	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{  		if (isAgentAvatarValid())  		{ -			LL_DEBUGS("Avatar") << "failed, will rebake" << llendl; +			LL_DEBUGS("Avatar") << "failed, will rebake [status:" +					<< status << "]: " << content << llendl;  			forceAppearanceUpdate();  		}  	}	 @@ -2469,7 +2470,7 @@ void LLVOAvatarSelf::checkForUnsupportedServerBakeAppearance()  		return;  	// if baked image service is unknown, need to refresh. -	if (gSavedSettings.getString("AgentAppearanceServiceURL").empty()) +	if (LLAppearanceMgr::instance().getAppearanceServiceURL().empty())  	{  		CheckAgentAppearanceServiceResponder::forceAppearanceUpdate();  	} diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index bd12328a6b..181735ee30 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -56,7 +56,8 @@ class LLVoiceCallCapResponder : public LLHTTPClient::Responder  public:  	LLVoiceCallCapResponder(const LLUUID& session_id) : mSessionID(session_id) {}; -	virtual void error(U32 status, const std::string& reason);	// called with bad status codes +	// called with bad status codes +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  	virtual void result(const LLSD& content);  private: @@ -64,11 +65,10 @@ private:  }; -void LLVoiceCallCapResponder::error(U32 status, const std::string& reason) +void LLVoiceCallCapResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	LL_WARNS("Voice") << "LLVoiceCallCapResponder::error(" -		<< status << ": " << reason << ")" -		<< LL_ENDL; +	LL_WARNS("Voice") << "LLVoiceCallCapResponder error [status:" +		<< status << "]: " << content << LL_ENDL;  	LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(mSessionID);  	if ( channelp )  	{ diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index db0fc3dca7..e112c589e9 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -126,17 +126,18 @@ public:  		mRetries = retries;  	} -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ +		LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, " +			<<  ( (mRetries > 0) ? "retrying" : "too many retries (giving up)" ) +			<< status << "]: " << content << LL_ENDL; +  		if ( mRetries > 0 )  		{ -			LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, retrying.  status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; -			LLVivoxVoiceClient::getInstance()->requestVoiceAccountProvision( -				mRetries - 1); +			LLVivoxVoiceClient::getInstance()->requestVoiceAccountProvision(mRetries - 1);  		}  		else  		{ -			LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, too many retries (giving up).  status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL;  			LLVivoxVoiceClient::getInstance()->giveUp();  		}  	} @@ -195,18 +196,18 @@ class LLVivoxVoiceClientCapResponder : public LLHTTPClient::Responder  public:  	LLVivoxVoiceClientCapResponder(LLVivoxVoiceClient::state requesting_state) : mRequestingState(requesting_state) {}; -	virtual void error(U32 status, const std::string& reason);	// called with bad status codes +	// called with bad status codes +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  	virtual void result(const LLSD& content);  private:  	LLVivoxVoiceClient::state mRequestingState;  // state   }; -void LLVivoxVoiceClientCapResponder::error(U32 status, const std::string& reason) +void LLVivoxVoiceClientCapResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder::error(" -		<< status << ": " << reason << ")" -		<< LL_ENDL; +	LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder error [status:" +		<< status << "]: " << content << LL_ENDL;  	LLVivoxVoiceClient::getInstance()->sessionTerminate();  } diff --git a/indra/newview/llwebsharing.cpp b/indra/newview/llwebsharing.cpp index 43b1a320c3..3a80051b9b 100644 --- a/indra/newview/llwebsharing.cpp +++ b/indra/newview/llwebsharing.cpp @@ -68,9 +68,9 @@ public:  		}  	} -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; +		LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL;  	}  	virtual void result(const LLSD& content) @@ -99,7 +99,7 @@ public:  		/// Left empty to override the default LLSD parsing behaviour.  	} -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{  		if (HTTP_UNAUTHORIZED == status)  		{ @@ -108,7 +108,7 @@ public:  		}  		else  		{ -			LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; +			LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL;  			LLWebSharing::instance().retryOpenIDAuth();  		} @@ -152,9 +152,9 @@ public:  		}  	} -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; +		LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL;  		LLWebSharing::instance().retryOpenIDAuth();  	} @@ -221,9 +221,9 @@ public:  		}  	} -	virtual void error(U32 status, const std::string& reason) +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)  	{ -		LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; +		LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL;  	}  	virtual void result(const LLSD& content) diff --git a/indra/newview/llwlhandlers.cpp b/indra/newview/llwlhandlers.cpp index be3e3ff30e..93eba5b604 100644 --- a/indra/newview/llwlhandlers.cpp +++ b/indra/newview/llwlhandlers.cpp @@ -121,9 +121,11 @@ LLEnvironmentRequestResponder::LLEnvironmentRequestResponder()  	LLEnvManagerNew::getInstance()->onRegionSettingsResponse(unvalidated_content);  } -/*virtual*/ void LLEnvironmentRequestResponder::error(U32 status, const std::string& reason) +/*virtual*/ +void LLEnvironmentRequestResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	LL_INFOS("WindlightCaps") << "Got an error, not using region windlight..." << LL_ENDL; +	LL_INFOS("WindlightCaps") << "Got an error, not using region windlight... [status:"  +		<< status << "]: " << content << LL_ENDL;  	LLEnvManagerNew::getInstance()->onRegionSettingsResponse(LLSD());  } @@ -190,14 +192,15 @@ bool LLEnvironmentApply::initiateRequest(const LLSD& content)  		LLEnvManagerNew::instance().onRegionSettingsApplyResponse(false);  	}  } -/*virtual*/ void LLEnvironmentApplyResponder::error(U32 status, const std::string& reason) +/*virtual*/ +void LLEnvironmentApplyResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)  { -	std::stringstream msg; -	msg << reason << " (Code " << status << ")"; - -	LL_WARNS("WindlightCaps") << "Couldn't apply windlight settings to region!  Reason: " << msg << LL_ENDL; +	LL_WARNS("WindlightCaps") << "Couldn't apply windlight settings to region!  [status:" +		<< status << "]: " << content << LL_ENDL;  	LLSD args(LLSD::emptyMap()); +	std::stringstream msg; +	msg << reason << " (Code " << status << ")";  	args["FAIL_REASON"] = msg.str();  	LLNotificationsUtil::add("WLRegionApplyFail", args);  } diff --git a/indra/newview/llwlhandlers.h b/indra/newview/llwlhandlers.h index 23558876da..598ce6d52a 100644 --- a/indra/newview/llwlhandlers.h +++ b/indra/newview/llwlhandlers.h @@ -47,7 +47,7 @@ class LLEnvironmentRequestResponder: public LLHTTPClient::Responder  	LOG_CLASS(LLEnvironmentRequestResponder);  public:  	virtual void result(const LLSD& content); -	virtual void error(U32 status, const std::string& reason); +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  private:  	friend class LLEnvironmentRequest; @@ -89,7 +89,8 @@ public:  	 */  	virtual void result(const LLSD& content); -	virtual void error(U32 status, const std::string& reason); // non-200 errors only +	// non-200 errors only +	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);  private:  	friend class LLEnvironmentApply; diff --git a/indra/newview/tests/llmediadataclient_test.cpp b/indra/newview/tests/llmediadataclient_test.cpp index 0254c5881f..41cb344808 100644 --- a/indra/newview/tests/llmediadataclient_test.cpp +++ b/indra/newview/tests/llmediadataclient_test.cpp @@ -126,7 +126,9 @@ void LLHTTPClient::post(  	result[LLTextureEntry::OBJECT_ID_KEY] = body[LLTextureEntry::OBJECT_ID_KEY];  	if ( url == FAKE_OBJECT_MEDIA_CAP_URL_503 )  	{ -		responder->error(HTTP_SERVICE_UNAVAILABLE, "fake reason"); +		LLSD content; +		content["reason"] = "fake reason"; +		responder->errorWithContent(HTTP_SERVICE_UNAVAILABLE, "fake reason", content);  		return;  	}  	else if (url == FAKE_OBJECT_MEDIA_NAVIGATE_CAP_URL_ERROR)  | 
