diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index e92042bcd4a07d3ea8eb6b63f3dfb17281d53159..9361ae20cf835716242514408fec7521d761a24f 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2468,16 +2468,24 @@ namespace {
 
 		if(data["required"].asBoolean())
 		{
-			apply_callback = &apply_update_ok_callback;
 			if(LLStartUp::getStartupState() <= STATE_LOGIN_WAIT)
 			{
 				// The user never saw the progress bar.
+				apply_callback = &apply_update_ok_callback;
 				notification_name = "RequiredUpdateDownloadedVerboseDialog";
 			}
-			else
+			else if(LLStartUp::getStartupState() < STATE_WORLD_INIT)
 			{
+				// The user is logging in but blocked.
+				apply_callback = &apply_update_ok_callback;
 				notification_name = "RequiredUpdateDownloadedDialog";
 			}
+			else
+			{
+				// The user is already logged in; treat like an optional update.
+				apply_callback = &apply_update_callback;
+				notification_name = "DownloadBackgroundTip";
+			}
 		}
 		else
 		{
diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp
index ea242f45cdad09799eabea2614371cc0e6acffd4..1888f191e2f4ed40c98bfe8439350ed59181dab6 100644
--- a/indra/viewer_components/updater/llupdaterservice.cpp
+++ b/indra/viewer_components/updater/llupdaterservice.cpp
@@ -373,9 +373,8 @@ void LLUpdaterServiceImpl::optionalUpdate(std::string const & newVersion,
 	stopTimer();
 	mNewVersion = newVersion;
 	mIsDownloading = true;
-	mUpdateDownloader.download(uri, hash, newVersion, false);
-	
 	setState(LLUpdaterService::DOWNLOADING);
+	mUpdateDownloader.download(uri, hash, newVersion, false);
 }
 
 void LLUpdaterServiceImpl::requiredUpdate(std::string const & newVersion,
@@ -385,9 +384,8 @@ void LLUpdaterServiceImpl::requiredUpdate(std::string const & newVersion,
 	stopTimer();
 	mNewVersion = newVersion;
 	mIsDownloading = true;
-	mUpdateDownloader.download(uri, hash, newVersion, true);
-	
 	setState(LLUpdaterService::DOWNLOADING);
+	mUpdateDownloader.download(uri, hash, newVersion, true);
 }
 
 void LLUpdaterServiceImpl::upToDate(void)