summaryrefslogtreecommitdiff
path: root/indra/newview/llassetuploadresponders.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llassetuploadresponders.cpp')
-rwxr-xr-x[-rw-r--r--]indra/newview/llassetuploadresponders.cpp196
1 files changed, 90 insertions, 106 deletions
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 7b2c536f5a..d2b1dcbf35 100644..100755
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -48,8 +48,8 @@
#include "llviewercontrol.h"
#include "llviewerobjectlist.h"
#include "llviewermenufile.h"
+#include "llviewertexlayer.h"
#include "llviewerwindow.h"
-#include "lltexlayer.h"
#include "lltrans.h"
// library includes
@@ -63,9 +63,6 @@
#include "llsdutil.h"
#include "llvfs.h"
-// When uploading multiple files, don't display any of them when uploading more than this number.
-static const S32 FILE_COUNT_DISPLAY_THRESHOLD = 5;
-
void dialog_refresh_all();
void on_new_single_inventory_upload_complete(
@@ -135,7 +132,7 @@ void on_new_single_inventory_upload_complete(
inventory_item_flags = (U32) server_response["inventory_flags"].asInteger();
if (inventory_item_flags != 0)
{
- llinfos << "inventory_item_flags " << inventory_item_flags << llendl;
+ LL_INFOS() << "inventory_item_flags " << inventory_item_flags << LL_ENDL;
}
}
S32 creation_date_now = time_corrected();
@@ -173,7 +170,7 @@ void on_new_single_inventory_upload_complete(
}
else
{
- llwarns << "Can't find a folder to put it in" << llendl;
+ LL_WARNS() << "Can't find a folder to put it in" << LL_ENDL;
}
// remove the "Uploading..." message
@@ -197,7 +194,7 @@ LLAssetUploadResponder::LLAssetUploadResponder(const LLSD &post_data,
{
if (!gVFS->getExists(vfile_id, asset_type))
{
- llwarns << "LLAssetUploadResponder called with nonexistant vfile_id" << llendl;
+ LL_WARNS() << "LLAssetUploadResponder called with nonexistant vfile_id" << LL_ENDL;
mVFileID.setNull();
mAssetType = LLAssetType::AT_NONE;
return;
@@ -225,37 +222,54 @@ LLAssetUploadResponder::~LLAssetUploadResponder()
}
// virtual
-void LLAssetUploadResponder::error(U32 statusNum, const std::string& reason)
+void LLAssetUploadResponder::httpFailure()
{
- llinfos << "LLAssetUploadResponder::error " << statusNum
- << " reason: " << reason << llendl;
+ // *TODO: Add adaptive retry policy?
+ LL_WARNS() << dumpResponse() << LL_ENDL;
+ std::string reason;
+ if (isHttpClientErrorStatus(getStatus()))
+ {
+ reason = "Error in upload request. Please visit "
+ "http://secondlife.com/support for help fixing this problem.";
+ }
+ else
+ {
+ reason = "The server is experiencing unexpected "
+ "difficulties.";
+ }
LLSD args;
- switch(statusNum)
+ args["FILE"] = (mFileName.empty() ? mVFileID.asString() : mFileName);
+ args["REASON"] = reason;
+ LLNotificationsUtil::add("CannotUploadReason", args);
+
+ // unfreeze script preview
+ if(mAssetType == LLAssetType::AT_LSL_TEXT)
{
- case 400:
- args["FILE"] = (mFileName.empty() ? mVFileID.asString() : mFileName);
- args["REASON"] = "Error in upload request. Please visit "
- "http://secondlife.com/support for help fixing this problem.";
- LLNotificationsUtil::add("CannotUploadReason", args);
- break;
- case 500:
- default:
- args["FILE"] = (mFileName.empty() ? mVFileID.asString() : mFileName);
- args["REASON"] = "The server is experiencing unexpected "
- "difficulties.";
- LLNotificationsUtil::add("CannotUploadReason", args);
- break;
+ LLPreviewLSL* preview = LLFloaterReg::findTypedInstance<LLPreviewLSL>("preview_script", mPostData["item_id"]);
+ if (preview)
+ {
+ LLSD errors;
+ errors.append(LLTrans::getString("UploadFailed") + reason);
+ preview->callbackLSLCompileFailed(errors);
+ }
}
+
LLUploadDialog::modalUploadFinished();
LLFilePicker::instance().reset(); // unlock file picker when bulk upload fails
}
//virtual
-void LLAssetUploadResponder::result(const LLSD& content)
+void LLAssetUploadResponder::httpSuccess()
{
- lldebugs << "LLAssetUploadResponder::result from capabilities" << llendl;
+ const LLSD& content = getContent();
+ if (!content.isMap())
+ {
+ failureResult(HTTP_INTERNAL_ERROR, "Malformed response contents", content);
+ return;
+ }
+ LL_DEBUGS() << "LLAssetUploadResponder::result from capabilities" << LL_ENDL;
- std::string state = content["state"];
+ const std::string& state = content["state"].asStringRef();
if (state == "upload")
{
@@ -267,7 +281,7 @@ void LLAssetUploadResponder::result(const LLSD& content)
if (mFileName.empty())
{
// rename the file in the VFS to the actual asset id
- // llinfos << "Changing uploaded asset UUID to " << content["new_asset"].asUUID() << llendl;
+ // LL_INFOS() << "Changing uploaded asset UUID to " << content["new_asset"].asUUID() << LL_ENDL;
gVFS->renameFile(mVFileID, mAssetType, content["new_asset"].asUUID(), mAssetType);
}
uploadComplete(content);
@@ -280,7 +294,7 @@ void LLAssetUploadResponder::result(const LLSD& content)
void LLAssetUploadResponder::uploadUpload(const LLSD& content)
{
- std::string uploader = content["uploader"];
+ const std::string& uploader = content["uploader"].asStringRef();
if (mFileName.empty())
{
LLHTTPClient::postFile(uploader, mVFileID, mAssetType, this);
@@ -293,15 +307,30 @@ void LLAssetUploadResponder::uploadUpload(const LLSD& content)
void LLAssetUploadResponder::uploadFailure(const LLSD& content)
{
+ LL_WARNS() << dumpResponse() << LL_ENDL;
+
+ // unfreeze script preview
+ if(mAssetType == LLAssetType::AT_LSL_TEXT)
+ {
+ LLPreviewLSL* preview = LLFloaterReg::findTypedInstance<LLPreviewLSL>("preview_script", mPostData["item_id"]);
+ if (preview)
+ {
+ LLSD errors;
+ errors.append(LLTrans::getString("UploadFailed") + content["message"].asString());
+ preview->callbackLSLCompileFailed(errors);
+ }
+ }
+
// remove the "Uploading..." message
LLUploadDialog::modalUploadFinished();
+
LLFloater* floater_snapshot = LLFloaterReg::findInstance("snapshot");
if (floater_snapshot)
{
floater_snapshot->notify(LLSD().with("set-finished", LLSD().with("ok", false).with("msg", "inventory")));
}
- std::string reason = content["state"];
+ const std::string& reason = content["state"].asStringRef();
// deal with L$ errors
if (reason == "insufficient funds")
{
@@ -340,9 +369,9 @@ LLNewAgentInventoryResponder::LLNewAgentInventoryResponder(
}
// virtual
-void LLNewAgentInventoryResponder::error(U32 statusNum, const std::string& reason)
+void LLNewAgentInventoryResponder::httpFailure()
{
- LLAssetUploadResponder::error(statusNum, reason);
+ LLAssetUploadResponder::httpFailure();
//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE);
}
@@ -358,11 +387,11 @@ void LLNewAgentInventoryResponder::uploadFailure(const LLSD& content)
//virtual
void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
{
- lldebugs << "LLNewAgentInventoryResponder::result from capabilities" << llendl;
+ LL_DEBUGS() << "LLNewAgentInventoryResponder::result from capabilities" << LL_ENDL;
//std::ostringstream llsdxml;
//LLSDSerialize::toXML(content, llsdxml);
- //llinfos << "upload complete content:\n " << llsdxml.str() << llendl;
+ //LL_INFOS() << "upload complete content:\n " << llsdxml.str() << LL_ENDL;
LLAssetType::EType asset_type = LLAssetType::lookup(mPostData["asset_type"].asString());
LLInventoryType::EType inventory_type = LLInventoryType::lookup(mPostData["inventory_type"].asString());
@@ -445,57 +474,6 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], TRUE);
}
-LLSendTexLayerResponder::LLSendTexLayerResponder(const LLSD& post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type,
- LLBakedUploadData * baked_upload_data) :
- LLAssetUploadResponder(post_data, vfile_id, asset_type),
- mBakedUploadData(baked_upload_data)
-{
-}
-
-LLSendTexLayerResponder::~LLSendTexLayerResponder()
-{
- // mBakedUploadData is normally deleted by calls to LLTexLayerSetBuffer::onTextureUploadComplete() below
- if (mBakedUploadData)
- { // ...but delete it in the case where uploadComplete() is never called
- delete mBakedUploadData;
- mBakedUploadData = NULL;
- }
-}
-
-
-// Baked texture upload completed
-void LLSendTexLayerResponder::uploadComplete(const LLSD& content)
-{
- LLUUID item_id = mPostData["item_id"];
-
- std::string result = content["state"];
- LLUUID new_id = content["new_asset"];
-
- llinfos << "result: " << result << " new_id: " << new_id << llendl;
- if (result == "complete"
- && mBakedUploadData != NULL)
- { // Invoke
- LLTexLayerSetBuffer::onTextureUploadComplete(new_id, (void*) mBakedUploadData, 0, LL_EXSTAT_NONE);
- mBakedUploadData = NULL; // deleted in onTextureUploadComplete()
- }
- else
- { // Invoke the original callback with an error result
- LLTexLayerSetBuffer::onTextureUploadComplete(new_id, (void*) mBakedUploadData, -1, LL_EXSTAT_NONE);
- mBakedUploadData = NULL; // deleted in onTextureUploadComplete()
- }
-}
-
-void LLSendTexLayerResponder::error(U32 statusNum, const std::string& reason)
-{
- llinfos << "status: " << statusNum << " reason: " << reason << llendl;
-
- // Invoke the original callback with an error result
- LLTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakedUploadData, -1, LL_EXSTAT_NONE);
- mBakedUploadData = NULL; // deleted in onTextureUploadComplete()
-}
-
LLUpdateAgentInventoryResponder::LLUpdateAgentInventoryResponder(
const LLSD& post_data,
const LLUUID& vfile_id,
@@ -515,14 +493,14 @@ LLUpdateAgentInventoryResponder::LLUpdateAgentInventoryResponder(
//virtual
void LLUpdateAgentInventoryResponder::uploadComplete(const LLSD& content)
{
- llinfos << "LLUpdateAgentInventoryResponder::result from capabilities" << llendl;
+ LL_INFOS() << "LLUpdateAgentInventoryResponder::result from capabilities" << LL_ENDL;
LLUUID item_id = mPostData["item_id"];
LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem(item_id);
if(!item)
{
- llwarns << "Inventory item for " << mVFileID
- << " is no longer in agent inventory." << llendl;
+ LL_WARNS() << "Inventory item for " << mVFileID
+ << " is no longer in agent inventory." << LL_ENDL;
return;
}
@@ -532,8 +510,8 @@ void LLUpdateAgentInventoryResponder::uploadComplete(const LLSD& content)
gInventory.updateItem(new_item);
gInventory.notifyObservers();
- llinfos << "Inventory item " << item->getName() << " saved into "
- << content["new_asset"].asString() << llendl;
+ LL_INFOS() << "Inventory item " << item->getName() << " saved into "
+ << content["new_asset"].asString() << LL_ENDL;
LLInventoryType::EType inventory_type = new_item->getInventoryType();
switch(inventory_type)
@@ -629,7 +607,7 @@ LLUpdateTaskInventoryResponder::LLUpdateTaskInventoryResponder(const LLSD& post_
//virtual
void LLUpdateTaskInventoryResponder::uploadComplete(const LLSD& content)
{
- llinfos << "LLUpdateTaskInventoryResponder::result from capabilities" << llendl;
+ LL_INFOS() << "LLUpdateTaskInventoryResponder::result from capabilities" << LL_ENDL;
LLUUID item_id = mPostData["item_id"];
LLUUID task_id = mPostData["task_id"];
@@ -671,7 +649,10 @@ void LLUpdateTaskInventoryResponder::uploadComplete(const LLSD& content)
}
else
{
- LLLiveLSLEditor* preview = LLFloaterReg::findTypedInstance<LLLiveLSLEditor>("preview_scriptedit", LLSD(item_id));
+ LLSD floater_key;
+ floater_key["taskid"] = task_id;
+ floater_key["itemid"] = item_id;
+ LLLiveLSLEditor* preview = LLFloaterReg::findTypedInstance<LLLiveLSLEditor>("preview_scriptedit", floater_key);
if (preview)
{
// Bytecode save completed
@@ -710,9 +691,9 @@ public:
{
if (!gVFS->getExists(vfile_id, asset_type))
{
- llwarns
+ LL_WARNS()
<< "LLAssetUploadResponder called with nonexistant "
- << "vfile_id " << vfile_id << llendl;
+ << "vfile_id " << vfile_id << LL_ENDL;
mVFileID.setNull();
mAssetType = LLAssetType::AT_NONE;
}
@@ -1008,19 +989,14 @@ LLNewAgentInventoryVariablePriceResponder::~LLNewAgentInventoryVariablePriceResp
delete mImpl;
}
-void LLNewAgentInventoryVariablePriceResponder::errorWithContent(
- U32 statusNum,
- const std::string& reason,
- const LLSD& content)
+void LLNewAgentInventoryVariablePriceResponder::httpFailure()
{
- lldebugs
- << "LLNewAgentInventoryVariablePrice::error " << statusNum
- << " reason: " << reason << llendl;
+ const LLSD& content = getContent();
+ LL_WARNS("Upload") << dumpResponse() << LL_ENDL;
- if ( content.has("error") )
+ static const std::string _ERROR = "error";
+ if ( content.has(_ERROR) )
{
- static const std::string _ERROR = "error";
-
mImpl->onTransportError(content[_ERROR]);
}
else
@@ -1029,8 +1005,14 @@ void LLNewAgentInventoryVariablePriceResponder::errorWithContent(
}
}
-void LLNewAgentInventoryVariablePriceResponder::result(const LLSD& content)
+void LLNewAgentInventoryVariablePriceResponder::httpSuccess()
{
+ const LLSD& content = getContent();
+ if (!content.isMap())
+ {
+ failureResult(HTTP_INTERNAL_ERROR, "Malformed response contents", content);
+ return;
+ }
// Parse out application level errors and the appropriate
// responses for them
static const std::string _ERROR = "error";
@@ -1046,6 +1028,7 @@ void LLNewAgentInventoryVariablePriceResponder::result(const LLSD& content)
// Check for application level errors
if ( content.has(_ERROR) )
{
+ LL_WARNS("Upload") << dumpResponse() << LL_ENDL;
onApplicationLevelError(content[_ERROR]);
return;
}
@@ -1059,7 +1042,7 @@ void LLNewAgentInventoryVariablePriceResponder::result(const LLSD& content)
if (mImpl->getFilename().empty())
{
// rename the file in the VFS to the actual asset id
- // llinfos << "Changing uploaded asset UUID to " << content["new_asset"].asUUID() << llendl;
+ // LL_INFOS() << "Changing uploaded asset UUID to " << content["new_asset"].asUUID() << LL_ENDL;
gVFS->renameFile(
mImpl->getVFileID(),
asset_type,
@@ -1089,6 +1072,7 @@ void LLNewAgentInventoryVariablePriceResponder::result(const LLSD& content)
}
else
{
+ LL_WARNS("Upload") << dumpResponse() << LL_ENDL;
onApplicationLevelError("");
}
}