<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/llcorehttp/httpcommon.cpp, branch cef_147</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://www.megapahit.org/viewer.git/atom?h=cef_147</id>
<link rel='self' href='https://www.megapahit.org/viewer.git/atom?h=cef_147'/>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/'/>
<updated>2025-07-03T05:36:50Z</updated>
<entry>
<title>Anticipate curl 8 from not being able to download</title>
<updated>2025-07-03T05:36:50Z</updated>
<author>
<name>Erik Kundiman</name>
<email>erik@megapahit.org</email>
</author>
<published>2023-07-29T04:58:51Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=d6eb08d0740c30eed00bd600091d60128a6d079a'/>
<id>urn:sha1:d6eb08d0740c30eed00bd600091d60128a6d079a</id>
<content type='text'>
This is cherry-picked from an old commit which was reverted before, but
modified so that it only affects the platform that has to use system
libcurl 8 (only Windows ARM64 so far).

System libcurl, which is typically newer, doesn't accept when SL server
responses with an invalid Content-Encoding value (usually some value
that's probably meant to be put as the Content-Type value), that we'd
get "unrecognized or bad HTTP Content or Transfer-Encoding"

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding

A way to fix this would be to just not expect decompressed contents, by
letting libcurl have the default value for CURLOPT_ACCEPT_ENCODING, which
is NULL.
</content>
</entry>
<entry>
<title>Revert to using isolated old cURL and old OpenSSL</title>
<updated>2024-06-07T05:57:31Z</updated>
<author>
<name>Erik Kundiman</name>
<email>erik@megapahit.org</email>
</author>
<published>2024-06-07T05:57:31Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=b9a79fa2eb424facaec0e2a552111311c5d2bcf4'/>
<id>urn:sha1:b9a79fa2eb424facaec0e2a552111311c5d2bcf4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge tag '7.1.7-release'</title>
<updated>2024-05-16T05:52:40Z</updated>
<author>
<name>Erik Kundiman</name>
<email>erik@megapahit.org</email>
</author>
<published>2024-05-16T05:52:40Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=6d51e91895a7f2435c46a876410ccc6c63fe8c82'/>
<id>urn:sha1:6d51e91895a7f2435c46a876410ccc6c63fe8c82</id>
<content type='text'>
source for viewer 7.1.7.8974243247
</content>
</entry>
<entry>
<title>#824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed</title>
<updated>2024-04-29T04:56:09Z</updated>
<author>
<name>Andrey Lihatskiy</name>
<email>alihatskiy@productengine.com</email>
</author>
<published>2024-04-29T04:43:28Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=1b68f71348ecf3983b76b40d7940da8377f049b7'/>
<id>urn:sha1:1b68f71348ecf3983b76b40d7940da8377f049b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix newer libcurl from not being able to download</title>
<updated>2023-07-29T04:58:51Z</updated>
<author>
<name>Erik Kundiman</name>
<email>erik@megapahit.org</email>
</author>
<published>2023-07-29T04:58:51Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=5776c0a692ad2848339d3bef9cae18032d6ad23a'/>
<id>urn:sha1:5776c0a692ad2848339d3bef9cae18032d6ad23a</id>
<content type='text'>
System libcurl, which is typically newer, doesn't accept when SL server
responses with an invalid Content-Encoding value (usually some value
that's probably meant to be put as the Content-Type value), that we'd
get "unrecognized or bad HTTP Content or Transfer-Encoding"

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding

A way to fix this would be to just not expect decompressed contents, by
letting libcurl have the default value for CURLOPT_ACCEPT_ENCODING, which
is NULL.
</content>
</entry>
<entry>
<title>SL-15902 Cleanup gSecAPIHandler</title>
<updated>2021-09-03T19:21:29Z</updated>
<author>
<name>Mnikolenko ProductEngine</name>
<email>mnikolenko@productengine.com</email>
</author>
<published>2021-09-03T19:21:29Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=8c7db0ad6cbdcfa7d80636ed13ba657e7189420e'/>
<id>urn:sha1:8c7db0ad6cbdcfa7d80636ed13ba657e7189420e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-15211 Remove unsused functions</title>
<updated>2021-05-27T09:56:35Z</updated>
<author>
<name>Andrey Kleshchev</name>
<email>andreykproductengine@lindenlab.com</email>
</author>
<published>2021-05-27T09:32:31Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=c518a8cf0f5032ad9b8e80907e2d553b1911424d'/>
<id>urn:sha1:c518a8cf0f5032ad9b8e80907e2d553b1911424d</id>
<content type='text'>
CRYPTO_set_id_callback and CRYPTO_set_locking_callback are no-op in ssl 1.1.x
</content>
</entry>
<entry>
<title>DRTVWR-494: Use std::thread::id for LLThread::currentID().</title>
<updated>2020-03-25T19:28:17Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-12-06T21:31:49Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=5e7df752a66b2082d063d2c4a10bc7013d479f55'/>
<id>urn:sha1:5e7df752a66b2082d063d2c4a10bc7013d479f55</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>SL-10291 Replace apr_mutex with standard C++11 functionality</title>
<updated>2019-01-14T20:04:44Z</updated>
<author>
<name>andreykproductengine</name>
<email>andreykproductengine@lindenlab.com</email>
</author>
<published>2019-01-14T20:04:44Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=26fae750ba753f32f58bd56d297f2d98c5759e50'/>
<id>urn:sha1:26fae750ba753f32f58bd56d297f2d98c5759e50</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-418: Use U32 for int (and hex) of HttpStatus in 64-bit too.</title>
<updated>2016-12-19T21:30:19Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2016-12-19T21:30:19Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=40fb9d3e58fcb28778c57a835795ff4a1ef90b98'/>
<id>urn:sha1:40fb9d3e58fcb28778c57a835795ff4a1ef90b98</id>
<content type='text'>
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.
</content>
</entry>
</feed>
