diff options
| author | Andrew A. de Laix <alain@lindenlab.com> | 2010-11-09 11:16:28 -0800 | 
|---|---|---|
| committer | Andrew A. de Laix <alain@lindenlab.com> | 2010-11-09 11:16:28 -0800 | 
| commit | 5da253fdde8737361333161517c1173358bd17ff (patch) | |
| tree | 903f289060f1d947eba65f518016a9ee62110916 | |
| parent | 73b6d4d058107137425cd202e79fb0a2d9c22896 (diff) | |
Shut down thread if viewer closed while downloading; fix problem of download marker path failing to expand correctly because it was happening too early in start up.
| -rw-r--r-- | indra/viewer_components/updater/llupdatedownloader.cpp | 15 | 
1 files changed, 12 insertions, 3 deletions
| diff --git a/indra/viewer_components/updater/llupdatedownloader.cpp b/indra/viewer_components/updater/llupdatedownloader.cpp index 2794f80c47..208cc48c12 100644 --- a/indra/viewer_components/updater/llupdatedownloader.cpp +++ b/indra/viewer_components/updater/llupdatedownloader.cpp @@ -154,8 +154,7 @@ LLUpdateDownloader::Implementation::Implementation(LLUpdateDownloader::Client &  	LLThread("LLUpdateDownloader"),  	mCancelled(false),  	mClient(client), -	mCurl(0), -	mDownloadRecordPath(LLUpdateDownloader::downloadMarkerPath()) +	mCurl(0)  {  	CURLcode code = curl_global_init(CURL_GLOBAL_ALL); // Just in case.  	llverify(code == CURLE_OK); // TODO: real error handling here.  @@ -164,6 +163,12 @@ LLUpdateDownloader::Implementation::Implementation(LLUpdateDownloader::Client &  LLUpdateDownloader::Implementation::~Implementation()  { +	if(isDownloading()) { +		cancel(); +		shutdown(); +	} else { +		; // No op. +	}  	if(mCurl) curl_easy_cleanup(mCurl);  } @@ -177,7 +182,8 @@ void LLUpdateDownloader::Implementation::cancel(void)  void LLUpdateDownloader::Implementation::download(LLURI const & uri, std::string const & hash)  {  	if(isDownloading()) mClient.downloadError("download in progress"); -	 + +	mDownloadRecordPath = downloadMarkerPath();  	mDownloadData = LLSD();  	try {  		startDownloading(uri, hash); @@ -195,6 +201,9 @@ bool LLUpdateDownloader::Implementation::isDownloading(void)  void LLUpdateDownloader::Implementation::resume(void)  { +	if(isDownloading()) mClient.downloadError("download in progress"); + +	mDownloadRecordPath = downloadMarkerPath();  	llifstream dataStream(mDownloadRecordPath);  	if(!dataStream) {  		mClient.downloadError("no download marker"); | 
