summaryrefslogtreecommitdiff
path: root/indra/viewer_components
diff options
context:
space:
mode:
authorMonty Brandenberg <monty@lindenlab.com>2013-11-12 14:06:38 -0500
committerMonty Brandenberg <monty@lindenlab.com>2013-11-12 14:06:38 -0500
commitd191585a3eec778e36e5f0c4b620c3d525c86c42 (patch)
tree2612c0d1947e00d9ceba82b054a7a90113ffa752 /indra/viewer_components
parentac1d3a22f2034a5e3aba757bde72825643fa799c (diff)
parentebc9bcbf69f7a519677a6522979a6bf6cbb04bb8 (diff)
Merge. Refresh from viewer-release after 3.6.10 release
Diffstat (limited to 'indra/viewer_components')
-rwxr-xr-xindra/viewer_components/updater/llupdatechecker.cpp49
-rwxr-xr-xindra/viewer_components/updater/scripts/darwin/update_install.py37
2 files changed, 40 insertions, 46 deletions
diff --git a/indra/viewer_components/updater/llupdatechecker.cpp b/indra/viewer_components/updater/llupdatechecker.cpp
index d6e06e5316..dc8ff2f644 100755
--- a/indra/viewer_components/updater/llupdatechecker.cpp
+++ b/indra/viewer_components/updater/llupdatechecker.cpp
@@ -79,7 +79,6 @@ void LLUpdateChecker::checkVersion(std::string const & urlBase,
//-----------------------------------------------------------------------------
-const char * LLUpdateChecker::Implementation::sLegacyProtocolVersion = "v1.0";
const char * LLUpdateChecker::Implementation::sProtocolVersion = "v1.1";
@@ -150,40 +149,11 @@ void LLUpdateChecker::Implementation::completed(U32 status,
server_error += content["error_text"].asString();
}
- if (status == 404)
- {
- if (mProtocol == sProtocolVersion)
- {
- mProtocol = sLegacyProtocolVersion;
- std::string retryUrl = buildUrl(mUrlBase, mChannel, mVersion, mPlatform, mPlatformVersion, mUniqueId, mWillingToTest);
-
- LL_WARNS("UpdaterService")
- << "update response using " << sProtocolVersion
- << " was HTTP 404 (" << server_error
- << "); retry with legacy protocol " << mProtocol
- << "\n at " << retryUrl
- << LL_ENDL;
-
- mHttpClient.get(retryUrl, this);
- }
- else
- {
- LL_WARNS("UpdaterService")
- << "update response using " << sLegacyProtocolVersion
- << " was 404 (" << server_error
- << "); request failed"
- << LL_ENDL;
- mClient.error(reason);
- }
- }
- else
- {
- LL_WARNS("UpdaterService") << "response error " << status
- << " " << reason
- << " (" << server_error << ")"
- << LL_ENDL;
- mClient.error(reason);
- }
+ LL_WARNS("UpdaterService") << "response error " << status
+ << " " << reason
+ << " (" << server_error << ")"
+ << LL_ENDL;
+ mClient.error(reason);
}
else
{
@@ -213,11 +183,8 @@ std::string LLUpdateChecker::Implementation::buildUrl(std::string const & urlBas
path.append(channel);
path.append(version);
path.append(platform);
- if (mProtocol != sLegacyProtocolVersion)
- {
- path.append(platform_version);
- path.append(willing_to_test ? "testok" : "testno");
- path.append((char*)uniqueid);
- }
+ path.append(platform_version);
+ path.append(willing_to_test ? "testok" : "testno");
+ path.append((char*)uniqueid);
return LLURI::buildHTTP(urlBase, path).asString();
}
diff --git a/indra/viewer_components/updater/scripts/darwin/update_install.py b/indra/viewer_components/updater/scripts/darwin/update_install.py
index 2fc6fcdb29..10d507c9ef 100755
--- a/indra/viewer_components/updater/scripts/darwin/update_install.py
+++ b/indra/viewer_components/updater/scripts/darwin/update_install.py
@@ -17,6 +17,7 @@ $/LicenseInfo$
import os
import sys
import cgitb
+from contextlib import contextmanager
import errno
import glob
import plistlib
@@ -32,6 +33,11 @@ import Tkinter, tkMessageBox
TITLE = "Second Life Viewer Updater"
# Magic bundle identifier used by all Second Life viewer bundles
BUNDLE_IDENTIFIER = "com.secondlife.indra.viewer"
+# Magic OS directory name that causes Cocoa viewer to crash on OS X 10.7.5
+# (see MAINT-3331)
+STATE_DIR = os.path.join(
+ os.environ["HOME"], "Library", "Saved Application State",
+ BUNDLE_IDENTIFIER + ".savedState")
# Global handle to the MessageFrame so we can update message
FRAME = None
@@ -137,6 +143,23 @@ def write_marker(markerfile, markertext):
log("%s exception: %s" % (err.__class__.__name__, err))
# ****************************************************************************
+# Utility
+# ****************************************************************************
+@contextmanager
+def allow_errno(errn):
+ """
+ Execute body of 'with' statement, accepting OSError with specific errno
+ 'errn'. Propagate any other exception, or an OSError with any other errno.
+ """
+ try:
+ # run the body of the 'with' statement
+ yield
+ except OSError, err:
+ # unless errno == passed errn, re-raise the exception
+ if err.errno != errn:
+ raise
+
+# ****************************************************************************
# Main script logic
# ****************************************************************************
def main(dmgfile, markerfile, markertext):
@@ -158,12 +181,9 @@ def main(dmgfile, markerfile, markertext):
# Move the old updater.log file out of the way
logname = os.path.join(logsdir, "updater.log")
- try:
+ # Nonexistence is okay. Anything else, not so much.
+ with allow_errno(errno.ENOENT):
os.rename(logname, logname + ".old")
- except OSError, err:
- # Nonexistence is okay. Anything else, not so much.
- if err.errno != errno.ENOENT:
- raise
# Open new updater.log.
global LOGF
@@ -345,6 +365,13 @@ def main(dmgfile, markerfile, markertext):
log("touch " + appdir)
os.utime(appdir, None) # set to current time
+ # MAINT-3331: remove STATE_DIR. Empirically, this resolves a
+ # persistent, mysterious crash after updating our viewer on an OS
+ # X 10.7.5 system.
+ log("rm -rf '%s'" % STATE_DIR)
+ with allow_errno(errno.ENOENT):
+ shutil.rmtree(STATE_DIR)
+
command = ["open", appdir]
log(' '.join(command))
subprocess.check_call(command, stdout=LOGF, stderr=subprocess.STDOUT)