Skip to content
Snippets Groups Projects
  1. Aug 24, 2020
  2. Aug 23, 2020
  3. Jul 21, 2020
  4. Mar 25, 2020
    • Nat Goodspeed's avatar
      DRTVWR-494: Use std::thread::id for LLThread::currentID(). · 5e7df752
      Nat Goodspeed authored
      LLThread::currentID() used to return a U32, a distinct unsigned value
      incremented by explicitly constructing LLThread or by calling LLThread::
      registerThreadID() early in a thread launched by other means. The latter
      imposed an unobvious requirement on new code based on std::thread. Using
      std::thread::id instead delegates to the compiler/library the problem of
      distinguishing threads launched by any means.
      
      Change lots of explicit U32 declarations. Introduce LLThread::id_t typedef to
      avoid having to run around fixing uses again if we later revisit this decision.
      
      LLMutex, which stores an LLThread::id_t, wants a distinguished value meaning
      NO_THREAD, and had an enum with that name. But as std::thread::id promises
      that the default-constructed value is distinct from every valid value,
      NO_THREAD becomes unnecessary and goes away.
      
      Because LLMutex now stores LLThread::id_t instead of U32, make llmutex.h
      #include "llthread.h" instead of the other way around. This makes LLMutex an
      incomplete type within llthread.h, so move LLThread::lockData() and
      unlockData() to the .cpp file. Similarly, remove llrefcount.h's #include
      "llmutex.h" to break circularity; instead forward-declare LLMutex.
      
      It turns out that a number of source files assumed that #include "llthread.h"
      would get the definition for LLMutex. Sprinkle #include "llmutex.h" as needed.
      
      In the SAFE_SSL code in llcorehttp/httpcommon.cpp, there's an ssl_thread_id()
      callback that returns an unsigned long to the SSL library. When LLThread::
      currentID() was U32, we could simply return that. But std::thread::id is very
      deliberately opaque, and can't be reinterpret_cast to unsigned long.
      Fortunately it can be hashed because std::hash is specialized with that type.
      5e7df752
    • Nat Goodspeed's avatar
  5. Jan 15, 2019
  6. Jan 14, 2019
  7. Aug 21, 2018
  8. Feb 22, 2018
  9. Jan 29, 2018
  10. Aug 08, 2017
  11. 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
  12. Apr 22, 2016
  13. Nov 10, 2015
  14. Nov 20, 2014
  15. Nov 19, 2014
  16. Jan 30, 2014
  17. Dec 10, 2013
  18. Dec 06, 2013
  19. Oct 11, 2013
  20. Aug 09, 2013
  21. Aug 06, 2013
    • Monty Brandenberg's avatar
      SH-4411 Thread/mutex rework between main and worker thread · 0d932473
      Monty Brandenberg authored
      Have the ::notifyLoadedMeshes() method doing correct locking
      and stall avoidance at the same time.  This method now does
      lazy mutex lock acquisition (trylock()) and if it fails on
      either, it gives up and comes back later.  Capture the maximum
      number of sequential failures and report this at the end of
      the run in the log.  (So far, with big mesh regions, I've
      only seen 1s and 2s.)  Locking/mutex requirements sorted in
      other locations as well.  LLMutex gets trylock() method as
      well as new LLMutexTrylock scoped locking class.  Clean up
      some documentation, more to do.
      0d932473
  22. Jul 18, 2013
  23. Jul 15, 2013
  24. Jul 01, 2013
  25. Jun 30, 2013
  26. Jun 22, 2013
  27. May 29, 2013
  28. Apr 17, 2013
  29. Mar 29, 2013
  30. Feb 28, 2013
  31. Dec 05, 2012
  32. Nov 20, 2012
  33. Oct 10, 2012
  34. Oct 03, 2012
  35. Oct 02, 2012
  36. Oct 01, 2012
Loading