summaryrefslogtreecommitdiff
path: root/indra/llcorehttp
AgeCommit message (Collapse)Author
2020-03-25DRTVWR-476: Use OpenSSL API suitable for 64-bit pointers.Nat Goodspeed
In three different places we use the same pattern: an ssl_thread_id_callback() function (a static member of LLCrashLogger, in that case) that used to be passed to CRYPTO_set_id_callback() and therefore returned an unsigned long representing the ID of the current thread. But GetCurrentThread() is a HANDLE, an alias for a pointer, and you can't uniquely cram a 64-bit pointer into an unsigned long. Fortunately OpenSSL has a more modern API for retrieving thread ID. Pass each ssl_thread_id_callback() function to CRYPTO_THREADID_set_callback() instead, converting it to accept CRYPTO_THREADID* and call CRYPTO_THREADID_set_pointer() or CRYPTO_THREADID_set_numeric() as appropriate().
2020-03-25DRTVWR-494: Use std::thread::id for LLThread::currentID().Nat Goodspeed
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.
2020-03-04SL-12421 Viewer's certificate validation does not reject connectionsAndrey Kleshchev
2019-10-23SL-11727 Fix build warningsandreykproductengine
2019-03-02convert to an explicit USE_BUGSPLAT switch in cmake, revise LL_ERRS approachOz Linden
2019-04-11SL-10948: Fix for crash in llcorehttp/_httplibcurl.cpp.Brad Kittenbrink
The crash can appear on some non-windows platforms (any LP64 model platforms). Depending on alignment this can overwrite one word of the pointer `op` declared above. Subsequently it will crash when later writing to memory through that pointer
2019-02-15Teamcity W64 build freeze.andreykproductengine
2019-02-08Fix for teamcity W64 build freeze.andreykproductengine
2019-01-29SL-2364 Fixed Viewer Caches Login Host DNS Entries Indefinetelyandreykproductengine
2019-01-15SL-10291 Replace apr_atomic with standard C++11 functionalityandreykproductengine
2019-01-14SL-10291 Replace apr_mutex with standard C++11 functionalityandreykproductengine
2018-08-30disable RefCounted tests in llcorehttp because they hang the win64 build in ↵Oz Linden
TeamCity
2018-08-29SL-967 simplify viewer log file field syntaxOz Linden
MAINT-8991: only escape log message characters once, add unit test remove extra log line created by LL_ERRS document that tags may not contain spaces
2018-06-04MAINT-8686 Better http termination loggingandreykproductengine
2018-05-24MAINT-8675: In Darwin-specific CMake, use cp, not cmake -E copy.Nat Goodspeed
cmake -E copy does only one file at a time, and older CMake versions don't handle wildcards. But cmake -E copy is specifically for portability. When the copy operation itself is Darwin-only, we can count on having 'cp' available.
2018-01-18copy all versions of libnghttp for testsOz Linden
2018-01-17merge 5.1.0-releaseOz Linden
2017-10-24MAINT-7081: Only request HTTP2 with $VIEWERASSET override (testing)Nat Goodspeed
2017-10-24MAINT-7081: Merge from lindenlab/viewer64.Nat Goodspeed
2017-10-11Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-10-11merge changes for 5.0.8-releaseOz Linden
2017-09-30MAINT-7081: Eliminate unused variable errors after new refactoring.Nat Goodspeed
The new helper functions check_curl_easy_setopt() and check_curl_multi_setopt() encapsulate the pervasive idiom: code = curl_{easy,multi}_setopt(handle, option, arg); check_curl_{easy,multi}_code(code, option); But since each of these helper functions contains its own local CURL{,M}code variable 'code', having a caller-scope variable reused for every such call is no longer necessary -- in fact is no longer used at all. That produces a fatal warning with MSVC. Get rid of those now-unused variables.
2017-09-29MAINT-7081: Try requesting HTTP/2 when a request wants pipelining.Nat Goodspeed
2017-09-27MAINT-7081: Mention nghttp2 library wherever it must be mentioned.Nat Goodspeed
2017-09-20DRTVWR-418: Disable more needlessly fragile memory consumption tests.Nat Goodspeed
2017-08-15DRTVWR-418: Disable another fragile llcorehttp memory-usage check.Nat Goodspeed
2017-08-14MAINT-7634: Feedback from code review, move enum to string converter to own ↵Rider Linden
function.
2017-08-08MAINT-7634: Logging and instrumentation canges to narrow down viewer crashes.Rider Linden
2017-07-28MAINT-7634: Move StatsAccumulator into llcommon, collect data sent and error ↵Rider Linden
codes from core.
2017-07-24MAINT-7495 Viewer retries too many time apon 504 from login.cgiandreykproductengine
2017-04-14Change certificate store infrastructure to key off of the Subject KeyOz Linden
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.
2017-02-02merge changes for 5.0.1-releaseOz Linden
2016-12-13MAINT-6978 Proxy should not be initialized outside of startLLProxy()andreykproductengine
2016-12-08Automated merge with ssh://bitbucket.org/lindenlab/viewer-skip-llcorehttp-testNat Goodspeed
2016-12-07DRTVWR-418: Apparently (some) Windows hosts still need freeport().Nat Goodspeed
This is the function in indra/llmessage/tests/testrunner.py that iterates through ports in a specified range, looking for an available one. Other platforms understand a specification of port 0 to mean: "You pick one. I'll just use whichever one you picked."
2016-12-07DRTVWR-418: Reinstate test that we THOUGHT was killing test run.Nat Goodspeed
But since the real problem is quite different, try with that suspected test restored.
2016-12-07DRTVWR-418: Fix a couple variable references in debugging output.Nat Goodspeed
2016-12-07DRTVWR-418: Revamp testrunner to shutdown server Thread at end.Nat Goodspeed
Instead of having testrunner.run()'s caller pass a Thread object on which to run the caller's server instance's serve_forever() method, just pass the server instance. testrunner.run() now constructs the Thread. This API change allows run() to also call shutdown() on the server instance when done, and then join() the Thread. The hope is that this will avoid the Python runtime forcing the process termination code to 1 due to forcibly killing the daemon thread still running serve_forever(). While at it, eliminate calls to testrunner.freeport() -- just make the runtime pick a suitable port instead.
2016-12-06DRTVWR-418: Remove duplicate testrunner.pyNat Goodspeed
2016-12-06Fix minor error in forwarding shutdown_request() call.Nat Goodspeed
2016-12-06Try even harder to ignore errors in llcorehttp's dummy server.Nat Goodspeed
2016-12-06DRTVWR-418: Skip the whole of the failing llcorehttp test function.Nat Goodspeed
2016-12-06DRTVWR-418: Skip the llcorehttp test that breaks test machinery.Nat Goodspeed
Loath though I am to skip testing, this consistent failure is not a failure in the software being tested (llcorehttp) but rather in the dummy server with which we're testing it.
2016-12-06pull in hack to comment out llcorehttp_testOz Linden
2016-12-06comment out llcorehttp_test until it can be debugged againOz Linden
2016-11-16merge changes for 4.1.2-releaseOz Linden
2017-02-13DRTVWR-418: Fix syntax for previous test skip.Nat Goodspeed
2017-02-13DRTVWR-418: Reluctantly skip llcorehttp 503-with-retry test on W64.Nat Goodspeed
2017-02-03Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2016-12-19DRTVWR-418: Use U32 for int (and hex) of HttpStatus in 64-bit too.Nat Goodspeed
Turns out that Monty didn't intend for the int-flavored representation of HttpStatus to expand to 64 bits even when unsigned long is that wide. So change the implicit conversion operator, and its uses, to U32 instead. That produces a consistent toHex() result for both 32-bit and 64-bit builds.