* Additional error checking in http handlers.
* Uniform log spam for http errors.
* Switch to using constants for http heads and status codes.
* Fixed bugs in incorrectly checking if parsing LLSD xml resulted in an error.
* Reduced spam regarding LLSD parsing errors in the default completedRaw http handler. It should not longer be necessary to short-circuit completedRaw to avoid spam.
* Ported over a few bug fixes from the server code.
* Switch mode http status codes to use S32 instead of U32.
* Ported LLSD::asStringRef from server code; avoids copying strings all over the place.
* Ported server change to LLSD::asBinary; this always returns a reference now instead of copying the entire binary blob.
* Ported server pretty notation format (and pretty binary format) to llsd serialization.
* The new LLCurl::Responder API no longer has two error handlers to choose from. Overriding the following methods have been deprecated:
** error - use httpFailure
** errorWithContent - use httpFailure
** result - use httpSuccess
** completed - use httpCompleted
** completedHeader - no longer necessary; call getResponseHeaders() from a completion method to obtain these headers.
* In order to 'catch' a completed http request, override one of these methods:
** httpSuccess - Called for any 2xx status code.
** httpFailure - Called for any non-2xx status code.
** httpComplete - Called for all status codes. Default implementation is to call either httpSuccess or httpFailure.
* It is recommended to keep these methods protected/private in order to avoid triggering of these methods without using a 'push' method (see below).
* Uniform error handling should followed whenever possible by calling a variant of this during httpFailure:
** llwarns << dumpResponse() << llendl;
* Be sure to include LOG_CLASS(your_class_name) in your class in order for the log entry to give more context.
* In order to 'push' a result into the responder, you should no longer call error, errorWithContent, result, or completed.
* Nor should you directly call httpSuccess/Failure/Completed (unless passing a message up to a parent class).
* Instead, you can set the internal content of a responder and trigger a corresponding method using the following methods:
** successResult - Sets results and calls httpSuccess
** failureResult - Sets results and calls httpFailure
** completedResult - Sets results and calls httpCompleted
* To obtain information about a the response from a reponder method, use the following getters:
** getStatus - HTTP status code
** getReason - Reason string
** getContent - Content (Parsed body LLSD)
** getResponseHeaders - Response Headers (LLSD map)
** getHTTPMethod - HTTP method of the request
** getURL - URL of the request
* It is still possible to override completeRaw if you want to manipulate data directly out of LLPumpIO.
* See indra/llmessage/llcurl.h for more information.
Incoming changes from two different project repos left viewer-development with
LLInventoryModel::removeItem() and removeCategory() plus free functions
remove_item() and remove_category() in llinventoryfunctions.cpp.
remove_category() was actually the better implementation; migrated its body
into LLInventoryModel::removeCategory(). Clearly the previous state of affairs
-- with LLInventoryModel::removeItem() plus a remove_category() free function
in a very different source file -- fooled two different developers into
overlooking the other of the pair. Unfortunately we each added different
"missing" functions, leaving us with a complete set of four.
Fix existing references to remove_item() and remove_category() free functions.
Introduce new LLInventoryModel::removeCategory() method comparable to
removeItem(), but for folder objects (using changeCategoryParent() rather than
changeItemParent()). Introduce removeObject() method that calls one of the
above, depending on runtime object type.
The body of removeItem() was already nearly identical to the body of
changeItemParent(); this eliminates the redundancy.
Improve logging for changeItemParent().
It's not really clear why they're in llinventoryfunctions.{h,cpp} instead of
LLInventoryModel, and in fact LLInventoryModel::removeItem() already contains
code essentially cloned from change_item_parent() -- or perhaps vice-versa.
This changeset addresses only migrating the functions, and fixing up existing
references, to simplify code review.
A complete fix for a single cause of caching issues, does not solve all caching issues.
Fixes the issue of inventory links that were incorrectly being marked as broken.
Broken links get a second chance to see if their base objects exist in inventory now.
- This happens if something was added to the category before it was initialized,
so accountForUpdate didn't update descendent count and thus the category thinks
it has fewer descendents than it actually has.
EXP-1731 FIX
EXP-1735 FIX
EXP-1736 FIX
EXP-1737 FIX
EXP-1738 FIX
EXP-1739 FIX
* Users can no longer drag and drop items to the outbox from in world, notecards or the library.
* Drag and drop now blocks the creation of hierarchies that are too deep, too many folders or contain too many items.
* Settings now exist to specify drag and drop limitations to the outbox, named:
InventoryOutboxMaxFolderDepth (4)
InventoryOutboxMaxFolderCount (20)
InventoryOutboxMaxItemCount (200)
the sim notifies the viewer that the folder is created. Unfortunately, the
sim is not yet doing this so a relog is required to properly get this working.
The problem was caused by an outdated message name stored in LLInventoryObserver::mMessageName and not updated properly in LLInventoryModel::notifyObservers().
The message name used in LLInventoryAddedObserver::changed() was the name of the message most recently passed by LLInventoryModel::notifyObservers(), instead of the name of the latest actually received message. Using the most recent message name in this case fixed the problem.
I couldn't reproduce the problem (it has happened for only two users, both running MacOSX),
but from what I see in the logs, it might have been caused by (or related to) NULL COF items.
I haven't found out how they appear nor what exactly causes the crash, but just for any
case I added a check to make sure we don't try to update wearables ordering info for such items.
Reviewed by Sergey Litovchuk at https://codereview.productengine.com/secondlife/r/876/
--HG--
branch : product-engine
There were two issues:
* "Male - Get lost" and "Female - Get lost" gestures have by 2 spaces before "-" in their names.
* Folders were not processed to be localize. This was not implemented correctly in EXT-7051.
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/753/
--HG--
branch : product-engine
- added check on whether avatar name exists in Name Cache before using its getter with callback (which raises notifyObservers).
Reviewed by Brad Payne at https://codereview.productengine.com/secondlife/r/526/
--HG--
branch : product-engine
Resident-submitted patch, cleaned up so it matches style and compiles/builds
well. Appears to work for stated goals but will need some more UI work to
ensure consistency.
WIP checkin, will be code reviewed before pushing.
LLObjectBridge::openItem() was concurrency modified.
Applied behavior that was changed in c3220f7f7699 according to
VWR-13743 FIXED Change Request: Change double click action for inventory wearables
DEV-33391 FIXED Change Request: Change double click action for inventory wearables
--HG--
branch : product-engine
Superficial header file cleanup
Lots of moving functions around and recategorizing in LLInventoryModel.h
Removed some obsolete functions, changed scoping of others
Moved some static functions from LLInventoryModel into llinventoryfunctions.h
Minor cleanup to start using DEFAULT_SORT_ORDER versus plain text "InventorySortOrder" in a few plaecs in the code. Makes this sorting code a lot easier to debug.
Related to major bug EXT-3985 [BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer 1.23.x
Removed auto-cleanup patch to repair Lanmarks in Favorite bar (remove LM Sort prefixes)
--HG--
branch : product-engine
-- implemented patch to remove LM prefixes from landmarks' names
*NOTE: It will be unnecessary after the first successful session in viewer 2.0.
Can be removed before public release.
Implementation details:
At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and
updates them on the viewer and server sides.
Also it calls fetching agent's inventory to process not yet loaded landmarks too.
If fetching is successfully done it will store special per-agent empty file-marker
in the user temporary folder (where cached inventory is loaded) while caching agent's inventory.
After that in will not affect the viewer until cached marker is removed.
--HG--
branch : product-engine
-- reason: there was two places where identical resorting of Favorite landmarks functionality was implemented: InventoryBridge & Favorite bar.
It was not impelnmented properly in favorites bar: LLInventoryObserver::SORT flag was not set after d-n-d.
-- fix: moved identical functionality to update & save order of Favorite landmarks from these places to Inventory Panel
--HG--
branch : product-engine
-- refactoring: move functionality to rearange Favorite landmarks from Inventory Folder bridge to Inventory model
-- improved logic to place dragged landmark before target one.
--HG--
branch : product-engine
EXT-4320 : Mismatch in folder descendents count is causing fetch descendents to never complete
EXT-2244 : My Outfits bars should be populated from Library on first 2.0 login
Implemented a workaround for an issue where descendent count was becoming unsynchronized. EXT-4320 is the workaround, this solves for EXT-2244, and EXT-4319 is the actual bug (whose fix is still pending).
HACK code to fix inventory root folder for some broken accounts
code executed only once and takes O(N) where N - number of inventory items.
--HG--
branch : product-engine