summaryrefslogtreecommitdiff
path: root/indra/llcommon/llsd.cpp
AgeCommit message (Collapse)Author
2013-12-05mergeBrad Payne (Vir Linden)
2013-08-20MAINT-3005 FIXED Set max persistent notifications to reduce log-in timemaxim@mnikolenko
2013-05-21mergeBrad Payne (Vir Linden)
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-03-13Large changes to the LLCurl::Responder API, as well as pulling in some ↵Don Kjer
changes to common libraries from the server codebase: * 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.
2012-04-25SEC-995 FIX viewer is easily spammed to death by chatKelly Washington
removed a couple more unnecessary string copies from unfortunate LLSD behavior. reviewed with simon, post review from Richard.
2011-12-06LLSD-14: Extract remaining conditional LLSD mbrs to namespace llsd.Nat Goodspeed
Per Monty's code review, it's dubious practice to have a class in which certain members are sometimes visible, other times not. If these were virtual methods, or non-static data members, the error would be obvious -- but even with static data members and non-virtual methods, it looks like an ODR violation. Extract conditional methods as free functions, as in changeset 07cd70e75473.
2011-12-05LLSD-14: Optional entry points need conditional decls turned on.Nat Goodspeed
Changeset 07cd70e75473 moved LLSD::outstandingCount() and allocationCount() to free functions so we could turn their visibility on/off via LLSD_DEBUG_INFO. But on some platforms, without proper LL_COMMON_API declarations visible when we compile llsd.cpp, those free functions lack proper linkage directives. Declare LLSD_DEBUG_INFO in llsd.cpp so that when the llcommon library is built, the free functions get proper linkage -- independent of compilations of LLSD consumers.
2011-12-01LLSD-14: Move LLSD::(outstanding|allocation)Count() to free functions.Nat Goodspeed
Free functions can be unconditionally compiled into the .o file, but conditionally hidden in the header file. Static class methods don't have that flexibility: without a declaration in the header file, you can't compile a function definition in the .cpp file. That makes it awkward to use the same llcommon build for production and for unit tests. Why make the function declarations conditional at all? These are debugging functions. They break the abstraction, they peek under the covers. Production code should not use them. Making them conditional on an #ifdef symbol in the unit-test source file means the compiler would reject any use by production code. Put differently, it allows us to assert with confidence that only unit tests do use them. Put new free functions in (lowercase) llsd namespace so as not to clutter global namespace. Tweak the one known consumer (llsd_new_tut.cpp) accordingly.
2011-11-19Make LLSD diagnostic methods conditional on LLSD_DEBUG_INFO.Nat Goodspeed
This establishes that there are no viewer-side unit tests relying on these methods. The point is to try to clean up the LLSD public API. In the same vein, remove from LLSD public API a diagnostic method which is nothing more than an implementation detail for the corresponding LLSD::Impl method. The same effect can be achieved by making LLSD::Impl a friend of LLSD, moving the method with the messy signature (classic-C arrays!) into LLSD::Impl itself.
2011-11-17LLSD-14: fixed way-too-overloaded local variable.Nat Goodspeed
2011-11-17LLSD-14: Make dumpStats()/calcStats() implementation more robustNat Goodspeed
per Monty code review
2011-11-17LLSD-14: Fix silly syntax error in subscript bounds check.Nat Goodspeed
2011-11-17LLSD-14: Bring over llsd.{h,cpp} enhancements from server-trunk.Nat Goodspeed
Because new enum values have been added to the LLSD type field, a few external switch statements must be adjusted to suppress fatal warnings, even though we never expect to encounter an LLSD instance containing any of the new values.
2010-08-13Change license from GPL to LGPL (version 2.1)Oz Linden
2009-12-01DEV-43622 : API change (no functionality change) to fix a design error in LLSDKent Quirk
I made it about a year and a half ago; Zero found it while reading code. I had added a return value to LLSD::insert(), but a) did it wrong, and b) broke the STL-like semantics of insert(). So I've put insert() back to returning void and created LLSD::with(), which does what my earlier insert() did. The compiler then caught all the cases where insert()'s return value were being used, and I changed those to use with() instead.
2009-08-24merge -r 130399-131510 skinning-21 -> viewer-2.0.0-3Richard Nelson
DEV-11254 DEV-11254 DEV-2003: DEV-21567 DEV-37301 EXT-104 EXT-138 EXT-217 EXT-256 EXT-259 EXT-259 EXT-328 EXT-348 EXT-386 EXT-399 EXT-403 EXT-460 EXT-492 EXT-492 EXT-531 EXT-537 EXT-684 improved text editor (handles multiple fonts simultaneously as well as inline widgets)
2009-07-16Merged work for DEV-2066 (and formerly QAR-1538) in Viewer 2.Mark Palange
merged all changes, post copy, from the following branches: linden/brachnes/enable-o-v user/cg/qar-1538 user/mani/viewer2-enable-o-v
2009-01-08Result of svn merge -r107256:107258 ↵Aaron Brashears
svn+ssh://svn/svn/user/phoenix/license_2009_merge into trunk. QAR-1165
2009-01-05svn merge -r106715:HEAD ↵Kent Quirk
svn+ssh://svn.lindenlab.com/svn/linden/branches/q/notifications-merge-r106715 . QAR-1149 -- Final merge of notifications to trunk.
2008-06-02svn merge -r88066:88786 ↵Bryan O'Sullivan
svn+ssh://svn.lindenlab.com/svn/linden/branches/cmake-9-merge dataserver-is-deprecated for-fucks-sake-whats-with-these-commit-markers
2008-05-13svn merge -r87349:87423 ↵Ryan Williams
svn+ssh://svn.lindenlab.com/svn/linden/branches/escrow/liquid-banjo-03-merge release dataserver-is-deprecated
2007-12-01 svn merge -r74808:74832 svn+ssh://svn/svn/linden/branches/qa-dpo-9aChristian Goetze
2007-11-07merge svn+ssh://steve@svn/svn/linden/branches/viewer-cleanup-3 -r 73026:73079Steven Bennetts
2007-10-04Result of svn merge -r71162:71205 ↵Aaron Brashears
svn+ssh://svn/svn/linden/branches/new-license into release. only changes files which are not deployed or the comments section of code.
2007-10-04Result of svn merge -r70873:71086 ↵Aaron Brashears
svn+ssh://svn/svn/linden/branches/enable-exceptions into release.
2007-06-21merge -r62831:64079 branches/maintenance to releaseKelly Washington
2007-02-09Result of svn merge -r57350:57790 ↵Aaron Brashears
svn+ssh://svn/svn/linden/branches/os-patches.001 into release.
2007-02-07Fixed a linux build issue when the llhavok suddenly required rtti in order ↵Andrew Meadows
to link. I added a #ifndef hack to v3math.h to eliminate LLString's from the llhavok project. I also removed lluuid.h's dependency on LLString (using std::string) instead and then fixed a bunch of bad dependency fallout on a few files around the project that suddenly lost their hidden access to some fundamental includes. The important parts were reviewed with James.
2007-02-06merge in of error-refactor-3Mark Lentczner
concludes (fixes) SL-31187 pair programmed and reviewed by markl and karen
2007-01-02Print done when done.James Cook