diff options
Diffstat (limited to 'indra/viewer_components')
| -rwxr-xr-x | indra/viewer_components/updater/llupdaterservice.cpp | 56 | ||||
| -rwxr-xr-x | indra/viewer_components/updater/llupdaterservice.h | 1 | 
2 files changed, 54 insertions, 3 deletions
| diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp index c152493a51..788955a1b2 100755 --- a/indra/viewer_components/updater/llupdaterservice.cpp +++ b/indra/viewer_components/updater/llupdaterservice.cpp @@ -132,6 +132,7 @@ public:  	void startChecking(bool install_if_ready);  	void stopChecking(); +	bool forceCheck();  	bool isChecking();  	LLUpdaterService::eUpdaterState getState(); @@ -266,6 +267,46 @@ void LLUpdaterServiceImpl::stopChecking()  	setState(LLUpdaterService::TERMINAL);  } +bool LLUpdaterServiceImpl::forceCheck() +{ +	if (!mIsDownloading && getState() != LLUpdaterService::CHECKING_FOR_UPDATE) +	{ +		if (mIsChecking) +		{ +			// Service is running, just reset the timer +			if (mTimer.getStarted()) +			{ +				mTimer.setTimerExpirySec(0); +				setState(LLUpdaterService::CHECKING_FOR_UPDATE); +				return true; +			} +		} +		else if (!mChannel.empty() && !mVersion.empty()) +		{ +			// one time check +			bool has_install = checkForInstall(false); +			if (!has_install) +			{ +				std::string query_url = LLGridManager::getInstance()->getUpdateServiceURL(); +				if (!query_url.empty()) +				{ +					setState(LLUpdaterService::CHECKING_FOR_UPDATE); +					mUpdateChecker.checkVersion(query_url, mChannel, mVersion, +						mPlatform, mPlatformVersion, mUniqueId, +						mWillingToTest); +					return true; +				} +				else +				{ +					LL_WARNS("UpdaterService") +						<< "No updater service defined for grid '" << LLGridManager::getInstance()->getGrid() << LL_ENDL; +				} +			} +		} +	} +	return false; +} +  bool LLUpdaterServiceImpl::isChecking()  {  	return mIsChecking; @@ -402,9 +443,9 @@ bool LLUpdaterServiceImpl::checkForResume()  void LLUpdaterServiceImpl::error(std::string const & message)  { +	setState(LLUpdaterService::TEMPORARY_ERROR);  	if(mIsChecking)  	{ -		setState(LLUpdaterService::TEMPORARY_ERROR);  		restartTimer(mCheckPeriod);  	}  } @@ -449,8 +490,12 @@ void LLUpdaterServiceImpl::response(LLSD const & content)  	else  	{  		LL_WARNS("UpdaterService") << "Invalid update query response ignored; retry in " -								   << mCheckPeriod << " seconds" << LL_ENDL; -		restartTimer(mCheckPeriod); +			<< mCheckPeriod << " seconds" << LL_ENDL; +		setState(LLUpdaterService::TEMPORARY_ERROR); +		if (mIsChecking) +		{ +			restartTimer(mCheckPeriod); +		}  	}  } @@ -672,6 +717,11 @@ void LLUpdaterService::stopChecking()  	mImpl->stopChecking();  } +bool LLUpdaterService::forceCheck() +{ +	return mImpl->forceCheck(); +} +  bool LLUpdaterService::isChecking()  {  	return mImpl->isChecking(); diff --git a/indra/viewer_components/updater/llupdaterservice.h b/indra/viewer_components/updater/llupdaterservice.h index 0ddf24935b..95bbe1695c 100755 --- a/indra/viewer_components/updater/llupdaterservice.h +++ b/indra/viewer_components/updater/llupdaterservice.h @@ -84,6 +84,7 @@ public:  	void startChecking(bool install_if_ready = false);  	void stopChecking(); +	bool forceCheck();  	bool isChecking();  	eUpdaterState getState(); | 
