summaryrefslogtreecommitdiff
path: root/indra/viewer_components/updater/llupdatechecker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/viewer_components/updater/llupdatechecker.cpp')
-rw-r--r--indra/viewer_components/updater/llupdatechecker.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/indra/viewer_components/updater/llupdatechecker.cpp b/indra/viewer_components/updater/llupdatechecker.cpp
index a19b8be607..ca2959a4ac 100644
--- a/indra/viewer_components/updater/llupdatechecker.cpp
+++ b/indra/viewer_components/updater/llupdatechecker.cpp
@@ -35,6 +35,7 @@ class LLUpdateChecker::Implementation:
public:
Implementation(Client & client);
+ ~Implementation();
void check(std::string const & host, std::string channel, std::string version);
// Responder:
@@ -49,6 +50,7 @@ private:
Client & mClient;
LLHTTPClient mHttpClient;
bool mInProgress;
+ LLHTTPClient::ResponderPtr mMe;
std::string mVersion;
LOG_CLASS(LLUpdateChecker::Implementation);
@@ -80,21 +82,28 @@ void LLUpdateChecker::check(std::string const & host, std::string channel, std::
LLUpdateChecker::Implementation::Implementation(LLUpdateChecker::Client & client):
mClient(client),
- mInProgress(false)
+ mInProgress(false),
+ mMe(this)
{
; // No op.
}
+LLUpdateChecker::Implementation::~Implementation()
+{
+ mMe.reset(0);
+}
+
+
void LLUpdateChecker::Implementation::check(std::string const & host, std::string channel, std::string version)
{
- llassert(!mInProgress);
+ // llassert(!mInProgress);
mInProgress = true;
mVersion = version;
std::string checkUrl = buildUrl(host, channel, version);
LL_INFOS("UpdateCheck") << "checking for updates at " << checkUrl << llendl;
- mHttpClient.get(checkUrl, this);
+ mHttpClient.get(checkUrl, mMe);
}
void LLUpdateChecker::Implementation::completed(U32 status,
@@ -105,12 +114,16 @@ void LLUpdateChecker::Implementation::completed(U32 status,
if(status != 200) {
LL_WARNS("UpdateCheck") << "html error " << status << " (" << reason << ")" << llendl;
+ mClient.error(reason);
} else if(!content["valid"].asBoolean()) {
LL_INFOS("UpdateCheck") << "version invalid" << llendl;
+ mClient.requiredUpdate(content["latest_version"].asString());
} else if(content["latest_version"].asString() != mVersion) {
LL_INFOS("UpdateCheck") << "newer version " << content["latest_version"].asString() << " available" << llendl;
+ mClient.optionalUpdate(content["latest_version"].asString());
} else {
LL_INFOS("UpdateCheck") << "up to date" << llendl;
+ mClient.upToDate();
}
}