diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
old mode 100644
new mode 100755
index e20e918a2a70f95bbb61dd5bea211e09296003bc..dd2ffdf7f188dee6f650955c3b18645e8b0546fd
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -454,6 +454,29 @@ class LLMeshPhysicsShapeResponder : public LLCurl::Responder
 
 };
 
+class LLModelObjectUploadResponder: public LLCurl::Responder
+{
+	LLSD mObjectAsset;
+	LLMeshUploadThread* mThread;
+
+public:
+	LLModelObjectUploadResponder(LLMeshUploadThread* thread, const LLSD& object_asset):
+		mThread(thread),
+		mObjectAsset(object_asset)
+	{
+	}
+
+	virtual void completedRaw(U32 status, const std::string& reason,
+							  const LLChannelDescriptors& channels,
+							  const LLIOPipe::buffer_ptr_t& buffer)
+	{
+		assert_main_thread();
+		
+		llinfos << "completed" << llendl;
+		mThread->mPendingUploads--;
+		mThread->mFinished = true;
+	}
+};
 
 LLMeshRepoThread::LLMeshRepoThread()
 : LLThread("mesh repo", NULL) 
@@ -1467,10 +1490,13 @@ void LLMeshUploadThread::run()
 
 	if(!isDiscarded())
 	{
-		LLHTTPClient::post(url, object_asset, new LLHTTPClient::Responder());
+		mPendingUploads++;
+		LLHTTPClient::post(url, object_asset, new LLModelObjectUploadResponder(this,object_asset));
+	}
+	else
+	{
+		mFinished = true;
 	}
-
-	mFinished = true;
 }
 
 void LLMeshUploadThread::uploadModel(LLMeshUploadData& data)