Commit Graph

49 Commits (ee34ea1f4b9e9c68b671ff3274ec8a640f72da89)

Author SHA1 Message Date
Ansariel ee34ea1f4b Merge viewer-bugsplat 2018-10-27 00:50:58 +02:00
Nat Goodspeed 05068186c3 DRTVWR-474: Make login coroutine sync with updater process on failure.
Specifically, introduce an LLEventMailDrop("LoginSync"). When the updater
detects that an update is required, it will post to that rendezvous point.

When login.cgi responds with login failure, make the login coroutine wait (a
few seconds) for that ping from the updater.

If we receive that ping and if it contains a "reply" key, make the fail.login
listener respond to the updater with an indication of whether to proceed with
update.

If both login.cgi and the updater concur that an update is required, produce a
new confirmation message for the user and then (once user responds) tell the
updater to proceed. Otherwise, produce the usual login-failure message and
tell the updater never mind.

Introduce LLCoro::OverrideConsuming to provide temporary save/restore of the
set_consuming() / get_consuming() flag. It's a good idea to set the consuming
flag when retrieving data from an LLEventMailDrop.
2018-10-04 16:35:38 -04:00
Nat Goodspeed 4d10172d8b MAINT-5011: Catch unhandled exceptions in LLCoros coroutines.
Wrap coroutine call in try/catch in top-level coroutine wrapper function
LLCoros::toplevel(). Distinguish exception classes derived from
LLContinueError (log and continue) from all others (crash with LL_ERRS).

Enhance CRASH_ON_UNHANDLED_EXCEPTIONS() and LOG_UNHANDLED_EXCEPTIONS() macros
to accept a context string to supplement the log message. This lets us replace
many places that called boost::current_exception_diagnostic_information() with
LOG_UNHANDLED_EXCEPTIONS() instead, since the explicit calls were mostly to
log supplemental information.

Provide supplemental information (coroutine name, function parameters) for
some of the previous LOG_UNHANDLED_EXCEPTIONS() calls. This information
duplicates LL_DEBUGS() information at the top of these functions, but in a
typical log file we wouldn't see the LL_DEBUGS() message.

Eliminate a few catch (std::exception e) clauses: the information we get from
boost::current_exception_diagnostic_information() in a catch (...) clause
makes it unnecessary to distinguish.

In a few cases, add a final 'throw;' to a catch (...) clause: having logged
the local context info, propagate the exception to be caught by higher-level
try/catch.

In a couple places, couldn't resist reconciling indentation within a
particular function: tabs where the rest of the function uses tabs, spaces
where the rest of the function uses spaces.

In LLLogin::Impl::loginCoro(), eliminate some confusing comments about an
array of rewritten URIs that date back to a long-deleted implementation.
2016-08-18 17:33:44 -04:00
Nat Goodspeed 993f54f6e9 MAINT-5011: Try to enrich catch (...) logging throughout viewer.
Turns out we have a surprising number of catch (...) clauses in the viewer
code base. If all we currently do is

    LL_ERRS() << "unknown exception" << LL_ENDL;

then call CRASH_ON_UNHANDLED_EXCEPTION() instead. If what we do is

    LL_WARNS() << "unknown exception" << LL_ENDL;

then call LOG_UNHANDLED_EXCEPTION() instead.

Since many places need LOG_UNHANDLED_EXCEPTION() and nobody catches
LLContinueError yet, eliminate LLContinueError& parameter from
LOG_UNHANDLED_EXCEPTION(). This permits us to use the same log message as
CRASH_ON_UNHANDLED_EXCEPTION(), just with a different severity level.

Where a catch (...) clause actually provides contextual information, or makes
an error string, add boost::current_exception_diagnostic_information() to try
to figure out actual exception class and message.
2016-08-17 15:40:03 -04:00
Oz Linden 9be58e915a merge with 4.0.3-release 2016-04-04 15:53:09 -04:00
Oz Linden c8726aba30 remove execute permission from many files that should not have it 2015-11-10 09:48:56 -05:00
Rider Linden 29596be514 Test disabling a couple of the display_startup() calls as an experiment. 2015-09-22 13:01:30 -07:00
Rider Linden 1eed334e7f MAINT-5629: Remove llares and llareslistener. Login now does not attempt to do a lookup on the server names and rewrite the URL.
MAINT-5614: Bad password status correctly detected.
2015-09-21 10:59:58 -07:00
Rider Linden a8ab084678 Tweek to naming postEventAndSuspend -> postAndSuspend 2015-09-18 11:54:38 -07:00
Rider Linden 75c6549fde Set consistent terminology for yield/wait -> suspend for coroutines. 2015-09-18 11:39:22 -07:00
Nat Goodspeed 391d9a367b Merge restore of more selfless changes 2015-07-10 19:34:20 -04:00
Nat Goodspeed efa9a0f99c Backed out changeset bab1000e1b2d: restore 'selfless' changes 2015-07-10 19:30:10 -04:00
Nat Goodspeed 9809f59fa9 Merge restore of selfless changes 2015-07-10 16:54:05 -04:00
Nat Goodspeed 6f9f89ee71 Backed out changeset 6e1fa9518747: reapply 'selfless' changes 2015-07-10 16:47:07 -04:00
Rider Linden 247eb0c9c3 Backout selfles merge 738255dbbfd679d9e615baab3398e5e345bbb3c5 2015-07-07 19:41:27 +01:00
Rider Linden 4c1d47d4ae Backed out selfless merge 2015-07-07 19:31:34 +01:00
Nat Goodspeed f90023fc0b MAINT-5357: Introduce and populate llcoro:: namespace.
To date, the coroutine helper functions in lleventcoro.h have been in the
global namespace. Migrate them into llcoro namespace, and fix references.
Specifically, LLVoidListener => llcoro::VoidListener, and voidlistener(),
postAndWait(), both waitForEventOn(), postAndWait2(), errorException() and
errorLog() have been moved into llcoro.
Also migrate new LLCoros::get_self() and Suspending to llcoro:: namespace.
While at it, I realized that -- having converted several lleventcoro.h
functions from templates (for arbitrary 'self' parameter type) to ordinary
functions, having moved them from lleventcoro.h to lleventcoro.cpp, we can now
migrate their helpers from lleventcoro.h to lleventcoro.cpp as well. This
eliminates the need for the LLEventDetail namespace; the relevant helpers are
now in an anonymous namespace in the .cpp file: listenerNameForCoro(),
storeToLLSDPath(), WaitForEventOnHelper and wfeoh().
2015-07-02 17:00:32 -04:00
Nat Goodspeed b262ded7e0 MAINT-5351: Remove 'self' parameter from coroutine functions.
lleventcoro_test.cpp runs clean (as modified for new API), and all the rest
builds clean, but the resulting viewer is as yet untested.
2015-07-01 18:33:29 -04:00
Richard Linden e340009fc5 second phase summer cleaning
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
2013-08-09 17:11:19 -07:00
Graham Madarasz 50689a13ba BOOG2707 uncomment cleared suspects 2013-06-05 06:14:27 -07:00
Graham Madarasz ea24612561 BUG-2707 make use of OsOutputDebugString _DEBUG only on Windows to avoid throwing unhandlable exceptions in coroutines in RelWithDebInfo builds 2013-06-04 07:51:27 -07:00
Graham Madarasz 842a6c6e46 BUG-2707 disable more login/update-sequence specific logging 2013-06-02 14:41:57 -07:00
Oz Linden 545e033d1e merge changes for DRTVWR-299 2013-05-07 15:11:55 -04:00
Graham Madarasz bf6182daa8 Update Mac and Windows breakpad builds to latest 2013-03-29 07:50:08 -07:00
Nat Goodspeed 54e2d2b000 MAINT-2389: Change viewer to Boost package without ucontext.h.
In autobuild.xml, specify today's build of the Boost package that includes the
Boost.Context library, and whose boost::dcoroutines library uses Boost.Context
exclusively instead of its previous context-switching underpinnings (source of
the ucontext.h dependency).
Add BOOST_CONTEXT_LIBRARY to Boost.cmake and Copy3rdPartyLibs.cmake. Link it
with the viewer and with the lllogin.cpp test executable.
Track new Boost package convention that our (early, unofficial) Boost.Coroutine
library is now accessed as boost/dcoroutine/etc.h and boost::dcoroutines::etc.
Remove #include <boost/coroutine/coroutine.hpp> from
llviewerprecompiledheaders.h and lllogin.cpp: old rule that Boost.Coroutine
header must be #included before anything else that might use ucontext.h is
gone now that we no longer depend on ucontext.h. In fact remove
-D_XOPEN_SOURCE in 00-Common.cmake because that was inserted specifically to
work around a known problem with the ucontext.h facilities.
2013-02-21 01:13:24 -05:00
Nicky dec4f9b4be Gracefully handle 'Started' status. Ignore it and continue login. 2012-08-26 12:56:13 +02:00
Nat Goodspeed 7a7a0f0c1b EXP-772: If URIs returned by SRV fail, fall back on original URI. 2011-05-26 17:25:26 -04:00
Oz Linden 06b0d72efa Change license from GPL to LGPL (version 2.1) 2010-08-13 07:24:57 -04:00
Roxie Linden 658ccc3e85 Re-insert backed out SLE checkin so we can fix it 2010-04-07 11:08:04 -07:00
Tofu Linden 0bb3f144c0 Backed out changeset 63b699f90efd 2010-04-07 10:37:07 +01:00
Roxie Linden 6bb43e1369 Automated merge up from viewer 2.0 trunk.
Some llvoiceclient changes duplicated changes that had already been
made in the voice modularization refactor, so the refactor versions
were used.
2010-02-24 17:04:48 -08:00
Nat Goodspeed 7b03037cac EXT-4193: Use different reply pumps for SRV and XMLRPC requests.
This eliminates the timing hole (introduced by EXT-3934 fix) in which a
belated SRV response could confuse the XMLRPC response code.
Extend unit tests to positively drive the bug and validate the fix.
2010-01-12 15:27:01 -05:00
Nat Goodspeed 0f89155e29 EXT-3934: On SRV timeout, don't fail, proceed with original URI. 2010-01-06 10:08:02 -05:00
Mark Palange (Mani) 87f64b2d8d EXT-3550 Fixed messages from login.cgi not being displayed.
Handling message from "indeterminate" state - feeding them to the llprogressview.
Handling showing error message from incomplete login.
2009-12-21 13:48:46 -08:00
Mark Palange (Mani) 18eea99b55 EXT-3536 Bugfix in lllogin.cpp when reading 'indeterminate' repsonse from login.cgi.
Also fixed up lllogin unit test to match the bugfix.
Reviewed by Brad
2009-12-17 17:52:06 -08:00
Mark Palange (Mani) be49b8bed5 EXT-3158 - Removing logging of users password hash from new login code.
Reviewed by Brad
2009-12-08 16:57:45 -08:00
Mark Palange (Mani) 51e3a486c6 Changes to fix an LLERRS caused by SRV request timeout.
Added settings to config SRV request params
Increased timeout to 10 seconds
Changed timeout to generate login failure event instead of an error.
Added unit test to cover SRV failure event.
2009-11-11 14:28:40 -08:00
Mark Palange (Mani) 2b5faa0b9c Changed SRV Request timeout to respond with an event instead of an error 2009-11-09 13:12:43 -08:00
Nat Goodspeed e3a4e3dc10 DEV-40930: Added ["change"] key to login-module status events. Changed
existing event calls to use state as "offline" or "online", with "change"
indicating the reason for this status event. Changed disconnect() to send
state "offline", change "disconnect" -- instead of replaying last auth
failure. Changed unit tests accordingly.
Changed LLLoginInstance::handleLoginEvent() to use LLEventDispatcher to route
calls to handleLoginFailure() et al.
Added LLEventDispatcher::get() to allow retrieving Callable by name and
testing for empty().
2009-10-09 19:42:59 -04:00
Roxanne Skelly ff52ac089f DEV-34822 viewer 1.23 merge
DEV-32649 Merge the diamondware/vivox voice code
-r124876
-r125220
2009-07-15 21:50:42 +00:00
Roxanne Skelly 9e89819d55 DEV-34822 - merge with 1.23
certificate notification code
-r 118191

ignore-dead-branch
2009-07-08 00:45:17 +00:00
Roxie Linden fe71dd340a Merge giab-viewer-trunk 2497, general merge of more
secapi stuff as well as certificate handling stuff.
Grid manager as well
2010-02-01 15:10:19 -08:00
Nat Goodspeed 820d4a20d1 DEV-32777: Use a canonical boost::coroutines::coroutine signature, relying on
boost::bind() to pass any other coroutine arguments. This allows us to remove
the LLCoroBase and LLCoro constructs, directly storing a coroutine object in
our ptr_map. It also allows us to remove the multiple launch() overloads for
multiple arguments. Finally, it lets us move most launch() functionality into
a non-template method.
2009-06-04 16:01:40 +00:00
Nat Goodspeed a3d54c48c6 DEV-32777: When launching login coroutine, instead of binding _2, _3
placeholders and then asking Boost.Coroutine to pass parameters to them,
simply bind the desired values.
2009-06-04 02:37:59 +00:00
Nat Goodspeed 46291bf740 DEV-32777: Make coroutine's top-level function accept value params, not
reference params.
2009-06-04 01:59:31 +00:00
Nat Goodspeed 285613b892 DEV-32777: Introduce LLCoros, an LLSingleton registry of named coroutine
instances. LLCoros::launch() intends to address three issues:
- ownership of coroutine instance
- cleanup of coroutine instance when it terminates
- central place to twiddle MSVC optimizations to bypass DEV-32777 crash.
Initially coded on Mac; will address the third bullet on Windows.
Adapt listenerNameForCoro() to consult LLCoros::getName() if applicable.
Change LLLogin::Impl::connect() to use LLCoros::launch().
LLCoros::getName() relies on patch to boost::coroutines::coroutine::self to
introduce get_id().
2009-06-03 21:38:21 +00:00
Nat Goodspeed 7915162b96 DEV-31892: rev 119315 got lost somewhere along the way?! Reapplying. 2009-05-28 22:53:21 +00:00
Nat Goodspeed cb5918df31 Remove silly std::cout debugging output 2009-05-14 20:50:50 +00:00
Nat Goodspeed dc93462991 svn merge -r113003:119136 svn+ssh://svn.lindenlab.com/svn/linden/branches/login-api/login-api-2 svn+ssh://svn.lindenlab.com/svn/linden/branches/login-api/login-api-3 2009-05-11 20:05:46 +00:00