The HttpRequest objects used in inventory ops are created lazily
when needed. The update() operation didn't protect against their
not being created. Added some guard tests around the update()
operations and we're good.
on the HTTP requests for inventory. We'll benchmark with that
and see how it goes. Document some of the history of the
background fetcher for future devs. Suggest some future
projects to make things faster. Pointers on using LLSD with
the llcorehttp library in the readme. And restructured
the LLSD onCompleted() processing phases using do{}while(false)
which produced a code flow that is fairly attractive.
accept headers in mesh and textures. For texture metrics
reporting, use the AP_INVENTORY policy class which is
non-pipelined and pointing (usually) in the right direction.
Use a do-while(false) structure to manage common exit path
code in onCompleted() methods. Identical to a 'goto' but
might amuse the pedantic. Tuning on background fetch to
have it cycle faster. This is experimental. I suspect
with HTTP balancing in llcorehttp, we can do away with the
timers here.
First, introduced some LLSD-based interfaces to the llcorehttp code
using utils classes (in llcorehttputil). I've kept LLSD out of
the llcorehttp library up to now and will continue to do that.
Functions provide a requestPost based on LLSD body and conversion
utils for HttpResponse-to-LLSD and HttpResponse-to-string
conversions. Inventory fetch operations now do more thorough
error checking including 200-with-error status checking. Still
do retry forever on folders though I don't like that.
connections. Convert background and foreground fetches, both
items and folders/inventory and library, to use new HTTP.
Non-fetch inventory operations continue to use LLHTTPClient
(at least for now). Error handling and retry on fetches wasn't
100% previously and that's still the case. I'll rip through
this again to clean that up. Cleaned up logging in much of
the inventory code with consistent labels on logging events
and correct macros (removed deprecation warnings).
This started as an attempt to get libcurl to do pipelining
on POSTs and PUTs. Discovered that this is going to be
very difficult to support in general in libcurl. May
look at that again in the future.