Skip to content
Snippets Groups Projects
  1. Jul 28, 2017
  2. Apr 14, 2017
    • Oz Linden's avatar
      Change certificate store infrastructure to key off of the Subject Key · fd3628ef
      Oz Linden authored
      Id rather than sha1 hash, since that is rarely used in modern
      certs. The previous form was storing trusted certs using an empty sha1
      hash value as the key, which meant most certificates matched... not good.
      
      Modify the LLCertException to pass certificate information back as
      LLSD rather than an LLPointer<LLCertificate>, because when the
      exception is being thown from the certificate constructor that results
      in one of a couple of other exceptions (even refcounting won't save
      you when the problem is that the thing you're pointing to never
      finished coming into being properly).
      
      Update the certificates in the llsechandler_basic_test to modern
      conventions, and extend the classes to allow for an optional
      validation date so that the test can use a fixed date. Also make all
      the certificates include the plain text form for ease of reference.
      fd3628ef
  3. Aug 18, 2016
    • Nat Goodspeed's avatar
      MAINT-5011: Catch unhandled exceptions in LLCoros coroutines. · 4d10172d
      Nat Goodspeed authored
      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.
      4d10172d
  4. Aug 17, 2016
    • Nat Goodspeed's avatar
      MAINT-5011: Try to enrich catch (...) logging throughout viewer. · 993f54f6
      Nat Goodspeed authored
      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.
      993f54f6
  5. Jul 28, 2016
  6. Jul 19, 2016
    • Nat Goodspeed's avatar
      DRTVWR-418: Remove rogue getMessage() from llsecapi.h exceptions. · 47d93e4f
      Nat Goodspeed authored
      The LLProtectedDataException and LLCertException exception classes didn't used
      to be derived from std::exception, so they followed their own getMessage()
      convention instead of the standard what() convention. Now that they're derived
      from std::exception, remove getMessage() and change its few consumers to use
      what() instead. Thanks NickyD for suggesting.
      47d93e4f
  7. Apr 25, 2016
  8. Feb 19, 2016
  9. Feb 02, 2016
  10. Nov 10, 2015
  11. Oct 15, 2015
  12. Oct 14, 2015
  13. Sep 15, 2015
  14. Mar 27, 2015
  15. Mar 26, 2015
  16. Mar 25, 2015
  17. Mar 20, 2015
  18. Mar 16, 2015
  19. Aug 22, 2014
    • Monty Brandenberg's avatar
      Add an HTTP policy class for inventory operations using four (4) · 85cba58a
      Monty Brandenberg authored
      connections.  Convert background and foreground fetches, both
      items and folders/inventory and library, to use new HTTP.
      Non-fetch inventory operations continue to use LLHTTPClient
      (at least for now).  Error handling and retry on fetches wasn't
      100% previously and that's still the case.  I'll rip through
      this again to clean that up.  Cleaned up logging in much of
      the inventory code with consistent labels on logging events
      and correct macros (removed deprecation warnings).
      
      This started as an attempt to get libcurl to do pipelining
      on POSTs and PUTs.  Discovered that this is going to be
      very difficult to support in general in libcurl.  May
      look at that again in the future.
      85cba58a
  20. Aug 21, 2014
  21. Aug 12, 2014
    • Monty Brandenberg's avatar
      Better support for dynamic option changes in llcorehttp. Libcurl has · e79a88c8
      Monty Brandenberg authored
      some problems disabling pipelining on a multi handle with outstanding
      requests so build a more conservative system that allows requests
      to drain before setting curl multi options.  Would rather not have
      this but it is significantly safer.  "HttpPipelining" debug setting
      is now fully dynamic.  Connection limits can also be made dynamic
      in the near future.  Upped the default connection count back to 8 for
      now but will revisit this in the tuning phase.  It might be time to
      combine mesh and textures into a single asset class.  For normal
      server operations that would be a clear path, but for server under
      load, the current scheme may be better.  Minor cleanup in logging
      to elminate some redundant strings.  Might add some more tracing to the
      stall logic 'just in case'.
      e79a88c8
  22. Jun 27, 2014
    • Monty Brandenberg's avatar
      Cleanup and tuning. Use a consistent index on some initialization · 17da4cf5
      Monty Brandenberg authored
      data so their isn't an opportunity for gaps over overruns (init_data).
      Start some preliminary tweaking of policy class numbers.  It looks
      like I can easily drop the default connection count to '4' and
      still hit the throttles.  Did some experiments running pipeline
      deeper which was mostly fine for textures but tended to slow
      meshes.  Reason uncertain but a depth of '5' seems generally healthy
      for mesh.  I had one run of 52.6S with a theoretical minimum of 51.2S.
      That's as good as I've ever seen.
      17da4cf5
  23. Jun 23, 2014
    • Monty Brandenberg's avatar
      First HTTP pipelining viewer. Enable pipelining for · 5cca78e7
      Monty Brandenberg authored
      GetTexture and GetMesh2 at a pipeline depth of 5.  Create
      global debug option, HttpPipelining, to enable and disable
      HTTP pipelining (defaults to true).  Tweak texture and
      mesh low- and high-water request levels based on pipelining
      status and depth.  Fixup texture console which was damaged
      in a recent release.  Split logging of the no-request
      HTTP error case into two cases:  one for missing URL in
      HTTP request, one for HTTP request not created.  A refactor
      in llcorehttp is coming:  I will be moving all libcurl-
      using code into libcurl-specific modules.
      5cca78e7
  24. Sep 18, 2013
  25. Aug 05, 2013
  26. Jul 30, 2013
    • Monty Brandenberg's avatar
      SH-4371 Reduce 22mS inter-connection latency. · f3927c6c
      Monty Brandenberg authored
      This really extended into the client-side request throttling.
      Moved this from llmeshrepository (which doesn't really want
      to do connection management) into llcorehttp.  It's now a
      class option with configurable rate.  This still isn't the
      right thing to do as it creates coupling between viewer
      and services.  When we get to pipelining, this notion becomes
      invalid.
      f3927c6c
  27. Jul 12, 2013
    • Monty Brandenberg's avatar
      SH-4312 Configuration data between viewer and llcorehttp is clumsy. · eff651cf
      Monty Brandenberg authored
      Much improved.  Unified the global and class options into a single
      option list.  Implemented static and dynamic setting paths as much
      as possible.  Dynamic path does require packet/RPC but otherwise
      there's near unification.  Dynamic modes can't get values back yet
      due to the response/notifier scheme but this doesn't bother me.
      Flatten global and class options into simpler struct-like entities.
      Setter/getter available on these when needed (external APIs) but code
      can otherwise fiddle directly when it knows what to do.  Much duplicated
      options/state removed from HttpPolicy.  Comments cleaned up.  Threads
      better described and consistently mentioned in API docs.  Integration
      test extended for 503 responses with Reply-After headers.
      eff651cf
  28. Jun 28, 2013
  29. Jun 20, 2013
    • Monty Brandenberg's avatar
      SH-4257 Preparation for a new cap grant: GetMesh2 · d6cbcd59
      Monty Brandenberg authored
      Mesh repo is using three policy classes now:  one for
      large objects, one for GetMesh2 regions, one for
      GetMesh regions.  It's also detecting the presence
      of the cap and using the correct class.  Class
      initialization cleaned up significantly in llappcorehttp
      using data-directed code.  Pulled in the changes to
      HttpHeader done for sunshine-internal then did a
      refactoring pass on the header callback which now
      uses a unified approach to clean up and deliver
      header information to all interested parties.  Added
      support for using Retry-After header information on
      503 retries.
      d6cbcd59
  30. Jun 19, 2013
    • Monty Brandenberg's avatar
      SH-4252 Add second policy class for large mesh asset downloads · 626752be
      Monty Brandenberg authored
      Added second mesh class as well as an asset upload class.
      Refactored initialization to use less code and more data to
      cleanly get http started.  Modified mesh to use the new
      http class for large requests (>2MB for now).  Added additional
      timeout setting to llcorehttp to distinguish connection timeout
      from transport timeout and are now using transport timeout
      values for large asset downloads that may need more time.
      626752be
  31. May 08, 2013
  32. May 07, 2013
  33. Mar 29, 2013
  34. Aug 17, 2012
  35. Jul 19, 2012
Loading