summaryrefslogtreecommitdiff
path: root/indra/viewer_components/updater
AgeCommit message (Collapse)Author
2012-05-09Automated merge with http://hg.secondlife.com/viewer-releaseNat Goodspeed
2012-05-09CHOP-900: Use new apr_procattr_constrain_handle_set() extension.Nat Goodspeed
Now LLProcess explicitly requests APR to limit the handles passed to any child process, instead of wantonly passing whatever happens to be lying around the parent process at the time. This requires the latest APR build. Also revert LLUpdateDownloader::Implementation::mDownloadStream to llofstream (as in rev 1878a57aebd7) instead of apr_file_t*. Using APR for that file was a Band-Aid -- a single whacked mole -- for the problem more systemically addressed by apr_procattr_constrain_handle_set().
2012-04-23IQA-463: Add apr_file_open(APR_CREATE) flag for downloaded installer.Nat Goodspeed
This handles the case when the target file doesn't exist, just as APR_TRUNCATE handles the case when it does. Strengthen error checks concerning downloaded installer file from ll_apr_warn_status() to ll_apr_assert_status(). Failing to recognize (e.g.) failure to open that file only leads to mysterious crashes down the road; this removes the mystery.
2012-04-23IQA-463: Use APR file I/O for downloaded viewer installer .exe.Nat Goodspeed
On Windows, calling CreateProcess(bInheritHandles=FALSE) is the wrong idea. In that case, CreateProcess() passes NO handles -- even the files you've explicitly designated as the child's stdin, stdout, stderr in the STARTUPINFO struct! Remove LLProcess code to tweak bInheritHandles; we should also remove the corresponding (useless) APR extension. Instead, given that the Windows file-locking problem we've observed is specific to the viewer installer .exe file downloaded by the background updater logic, use APR file I/O for that specific file. Empirically, both llofstream and std::ofstream seem to make the open file handle inheritable; but apr_file_open() documentation says: "By default, the returned file descriptor will not be inherited by child processes created by apr_proc_create()." And indeed, it does appear to sidestep the locking problem.
2012-02-12Automated merge with ssh://hg.lindenlab.com/nat/viewer-new-aprNat Goodspeed
2012-02-06Automated merge with http://hg.secondlife.com/viewer-developmentRichard Linden
2012-02-01converted a bunch of narrowing implicit conversions to explicitRichard Linden
2012-01-21Convert LLProcess consumers from LLSD to LLProcess::Params block.Nat Goodspeed
Using a Params block gives compile-time checking against attribute typos. One might inadvertently set myLLSD["autofill"] = false and only discover it when things behave strangely at runtime; but trying to set myParams.autofill will produce a compile error. However, it's excellent that the same LLProcess::create() method can accept either LLProcess::Params or a properly-constructed LLSD block.
2012-01-20Per Richard, replace LLProcessLauncher with LLProcess.Nat Goodspeed
LLProcessLauncher had the somewhat fuzzy mandate of (1) accumulating parameters with which to launch a child process and (2) sometimes tracking the lifespan of the ensuing child process. But a valid LLProcessLauncher object might or might not have ever been associated with an actual child process. LLProcess specifically tracks a child process. In effect, it's a fairly thin wrapper around a process HANDLE (on Windows) or pid_t (elsewhere), with lifespan management thrown in. A static LLProcess::create() method launches a new child; create() accepts an LLSD bundle with child parameters. So building up a parameter bundle is deferred to LLSD rather than conflated with the process management object. Reconcile all known LLProcessLauncher consumers in the viewer code base, notably the class unit tests.
2012-01-17Add log message if LLProcessLauncher child fails to execv().Nat Goodspeed
On a Posix platform (vfork()/execv() implementation), if for any reason the execv() failed (e.g. executable not on PATH), the viewer would never know, nor the user: the vfork() child produced no output, and terminated with rc 0! Add logging, make child terminate with nonzero rc. Remove pointless addArgument(const char*) overload: this does nothing for you that the compiler won't do implicitly. In llupdateinstaller.cpp, remove pointless c_str() call in addArgument() arg: we were starting with a std::string, then extracting its c_str(), only to construct a whole new std::string from it!
2012-01-12fix for SH-2845, SH-2846, SH-2847, SH-2851: curl crashes and out-of-memory ↵Xiaohong Bao
crashes.
2011-11-15mergeDave Parks
2011-10-18mergeBrad Payne (Vir Linden)
2011-09-30SH-2515 WIP - changed app name in linux updater, dir name in windows installerBrad Payne (Vir Linden)
2011-09-30SH-2515 WIP - changed app name in mac-updaterBrad Payne (Vir Linden)
2011-08-31MergeXiaohong Bao
2011-08-17convert tabs to spaces where they are forbiddenOz Linden
2011-07-15Merge from viewer-developmentXiaohong Bao
2011-05-16mergeDave Parks
2011-05-11STORM-477 Restored the backed out changeset: b62b260aa04dSeth ProductEngine
2011-02-05Introduces a LLThreadLocalData class that can beAleric Inglewood
accessed through the static LLThread::tldata(). Currently this object contains two (public) thread-local objects: a LLAPRRootPool and a LLVolatileAPRPool. The first is the general memory pool used by this thread (and this thread alone), while the second is intended for short lived memory allocations (needed for APR). The advantages of not mixing those two is that the latter is used most frequently, and as a result of it's nature can be destroyed and reconstructed on a "regular" basis. This patch adds LLAPRPool (completely replacing the old one), which is a wrapper around apr_pool_t* and has complete thread-safity checking. Whenever an apr call requires memory for some resource, a memory pool in the form of an LLAPRPool object can be created with the same life-time as this resource; assuring clean up of the memory no sooner, but also not much later than the life-time of the resource that needs the memory. Many, many function calls and constructors had the pool parameter simply removed (it is no longer the concern of the developer, if you don't write code that actually does an libapr call then you are no longer bothered with memory pools at all). However, I kept the notion of short-lived and long-lived allocations alive (see my remark in the jira here: https://jira.secondlife.com/browse/STORM-864?focusedCommentId=235356&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-235356 which requires that the LLAPRFile API needs to allow the user to specify how long they think a file will stay open. By choosing 'short_lived' as default for the constructor that immediately opens a file, the number of instances where this needs to be specified is drastically reduced however (obviously, any automatic LLAPRFile is short lived). *** Addressed Boroondas remarks in https://codereview.secondlife.com/r/99/ regarding (doxygen) comments. This patch effectively only changes comments. Includes some 'merge' stuff that ended up in llvocache.cpp (while starting as a bug fix, now only resulting in a cleanup). *** Added comment 'The use of apr_pool_t is OK here'. Added this comment on every line where apr_pool_t is correctly being used. This should make it easier to spot (future) errors where someone started to use apr_pool_t; you can just grep all sources for 'apr_pool_t' and immediately see where it's being used while LLAPRPool should have been used. Note that merging this patch is very easy: If there are no other uses of apr_pool_t in the code (one grep) and it compiles, then it will work. *** Second Merge (needed to remove 'delete mCreationMutex' from LLImageDecodeThread::~LLImageDecodeThread). *** Added back #include <apr_pools.h>. Apparently that is needed on libapr version 1.2.8., the version used by Linden Lab, for calls to apr_queue_*. This is a bug in libapr (we also include <apr_queue.h>, that is fixed in (at least) 1.3.7. Note that 1.2.8 is VERY old. Even 1.3.x is old. *** License fixes (GPL -> LGPL). And typo in comments. Addresses merov's comments on the review board. *** Added Merov's compile fixes for windows.
2011-02-01Automated merge up from viewer-development into mesh-developmentLoren Shih
2011-02-01merge changes back from beta branchOz Linden
2011-01-24a less brain dead fix for CHOP-369Andrew A. de Laix
2011-01-24fix CHOP-369: catch case of synchronous download failure.Andrew A. de Laix
2011-01-21Automated merge up from viewer-developmentLoren Shih
2011-01-20merge changes from viewer-betaOz Linden
2011-01-14fix CHOP-366, on temporary errors (e.g. version manager returns other than ↵Andrew A. de Laix
200) show error dialog instructing the user to manually install the latest viewer.
2011-01-13STORM-477 : backout changeset 6f5cb303d3e2Merov Linden
2011-01-11STORM-477 FIXED Re-implemented LLDir::getNextFileInDir() as an iterator object.Seth ProductEngine
- Replaced all existing usages of LLDir::getNextFileInDir() with the new directory iterator object. - Removed platform specific LLDir::getNextFileInDir() implementation.
2011-01-10Automated merge up from viewer-developmentLoren Shih
2011-01-06STORM-826 (workaround): correct mixed and dos-style line endingsOz Linden
2010-12-29Automated merge up from viewer-developmentLoren Shih
2010-12-20fix windows build?Andrew A. de Laix
2010-12-17Better fix for CHOP-286 - reenabled bandwidth limits on linux now that we've ↵brad kittenbrink
fixed the freeze.
2010-12-17Temporary workaround for CHOP-286: bandwidth limits freeze the downloader ↵brad kittenbrink
thread on linux
2010-12-17Automated merge with https://bitbucket.org/mani_linden/viewer-developmentAndrew A. de Laix
2010-12-17ich bin stupid; this should actually fix the windows build.Andrew A. de Laix
2010-12-17don't rely on stream cast to bool behavior; use explicit fail call.Andrew A. de Laix
2010-12-17and don't break other builds.Andrew A. de Laix
2010-12-17fix windows build (suppress warning from lexical_cast)Andrew A. de Laix
2010-12-16Vary install failed message depending on whether it was required or not.Andrew A. de Laix
2010-12-16Automated merge up from viewer-developmentLoren Shih
2010-12-15pulling fixes back from viewer-betaOz Linden
2010-12-14Mergebrad kittenbrink
2010-12-14Record update version in download marker so it can be recalled if resumed in ↵Andrew A. de Laix
another viewer session.
2010-12-10Defensive coding for linux updater script for consistency with alain's work ↵brad kittenbrink
on the mac script. Should be safer if the user is installing to a path with spaces in it.
2010-12-10fix quoting in script to work with spaces in directory names.Andrew A. de Laix
2010-12-10fix working directory in install script and remove dependency on open option ↵Andrew A. de Laix
--args which is 10.6 only. Also fix erroneous check in process launcher which was mistakenly reporting a failed execution of the new updater script.
2010-12-10no bandwidth limit for required downloads.Andrew A. de Laix