diff options
author | Henri Beauchamp <sldev@free.fr> | 2024-07-08 23:18:02 +0200 |
---|---|---|
committer | Henri Beauchamp <sldev@free.fr> | 2024-07-08 23:18:02 +0200 |
commit | 989cfe2f70441fe02222d369e84118a94dc96890 (patch) | |
tree | 50f52d9c4b956ce41fe3d4e5df135aab78fdbfb1 /indra/llcommon/threadpool_fwd.h | |
parent | 94a66b558401c77953c990a992a91c7b32493f82 (diff) |
Fix for crash in XMLRPC reply decoding on login with large inventories
Commit 2ea5ac0c43e3e28d2b1774f5367d099271a1da32 introduced a crash bug
due to the recursive construction of the XMLTreeNode wrapper class.
The constructor of the said class typically recurses twice as many times
as there are entries in the user's inventory list.
This commit:
- Moves the fromXMLRPCValue() method and its helper functions from the LLSD
class/module to the LLXMLNode class, where it belongs, thus making
LLSD::TreeNode (which was a wrapper class to avoid making llcommon
dependant on llxml, which is still the case after this commit) totally
moot; the fromXMLRPCValue() call is now done directly on the LLXMLNode.
- Moves the XML and XMLRPC decoding code out of the HTTP coroutine
LLXMLRPCTransaction::Handler (coroutines got an even smaller and fixed
stack), and into LLXMLRPCTransaction::Impl::process().
- Removes XMLTreeNode entirely, fixing the crash as a result.
Diffstat (limited to 'indra/llcommon/threadpool_fwd.h')
0 files changed, 0 insertions, 0 deletions