Skip to content
Snippets Groups Projects
  1. Jun 14, 2012
    • Monty Brandenberg's avatar
      LLMutex recursive lock, global & per-request tracing, simple GET request,... · b08125a5
      Monty Brandenberg authored
      LLMutex recursive lock, global & per-request tracing, simple GET request, LLProxy support, HttpOptions starting to work, HTTP resource waiting fixed.
      Non-LLThread-based threads need to do some registration or LLMutex locks taken out in these
      threads will not work as expected (SH-3154).  We'll get a better solution later, this fixes
      some things for now.  Tracing of operations now supported.  Global and per-request (via
      HttpOptions) tracing levels of [0..3].  The 2 and 3 levels use libcurl's VERBOSE mode
      combined with CURLOPT_DEBUGFUNCTION to stream high levels of detail into the log.  *Very*
      laggy but useful.  Simple GET request supported (no Range: header).  Really just a
      degenrate case of a ranged get but supplied an API anyway.  Global option to use the
      LLProxy interface to setup CURL handles for either socks5 or http proxy usage.  This
      isn't really the most encapsulated way to do this but a better solution will have to
      come later.  The wantHeaders and tracing options are now supported in HttpOptions giving
      per-request controls.  Big refactoring of the HTTP resource waiter in lltexturefetch.
      What I was doing before wasn't correct.  Instead, I'm implementing the resource wait
      after the Semaphore model (though not using system semaphores).  So instead of having
      a sequence like:  SEND_HTTP_REQ -> WAIT_HTTP_RESOURCE -> SEND_HTTP_REQ, we now
      do WAIT_HTTP_RESOURCE -> WAIT_HTTP_RESOURCE2 (actual wait) -> SEND_HTTP_REQ.  Works
      well but the prioritized filling of the corehttp library needs some performance
      work later.
      b08125a5
  2. Jun 13, 2012
  3. Jun 12, 2012
    • Monty Brandenberg's avatar
      Really need to figure out the 'static const' problem on Windows. · c71e808a
      Monty Brandenberg authored
      For now, workaround...
      c71e808a
    • Monty Brandenberg's avatar
      HTTP Proxy, PUT & POST, unit tests and refactoring. · 7adeb392
      Monty Brandenberg authored
      Implemented/modified PUT & POST to not used chunked encoding for the request.
      Made the unit test much happier and probably a better thing for the pipeline.
      Have a cheesy static & dynamic proxy capability using both local options and
      a way to wire into LLProxy in llmessages.  Not a clean thing but it will get
      the proxy path working with both socks5 & http proxies.  Refactoring to get
      rid of unneeded library handler and unified an HttpStatus return for all
      requests.  Big batch of code removed as a result of that and more is possible
      as well as some syscall avoidance with a bit more work.  Boosted the unit
      tests for simple PUT & POST test which revealed the test harness does *not*
      like chunked encoding so we'll avoid it for now (and don't really need it
      in any of our schemes).
      7adeb392
    • Monty Brandenberg's avatar
      Convert _refcounted.h over to using LLAtomic32<>. · 24e16e16
      Monty Brandenberg authored
      Beware of bad documentation.  operator--(int) does not return what
      the header claimed it did.
      24e16e16
  4. Jun 11, 2012
  5. Jun 08, 2012
  6. Jun 07, 2012
    • Monty Brandenberg's avatar
      First efforts at getting the texture cache working. This is · cab68bb0
      Monty Brandenberg authored
      now avoiding doing HTTP fetches for read data.  Not certain it's
      completely correct but the difference is already significant.
      cab68bb0
    • Monty Brandenberg's avatar
      Lock/Mutex fixes, documentation, new resource wait state, dtor cleanups · 196e1d46
      Monty Brandenberg authored
      Went through all the code and tried to document lock and thread usage
      in the module.  There's a huge comment block introducing all of this
      at the beginning and I believe it's correct (though not quite complete).
      Keep it updated, people.  Added a new state, WAIT_HTTP_RESOURCE, that's
      sort of a side-state of SEND_HTTP_REQ.  If we hit a high-water mark
      for HTTP requests, the extra are shunted to the new state once.  Once
      levels fall to a low-water mark, we run through a wait list of UUIDs,
      sort the valid ones by priority and release them for service.  This
      keeps the HTTP layer busy while leaving the active queue shallow enough
      that requests can still be re-prioritzed cheaply.  Priority model
      changed.  The new state uses the PRIORITY_LOW mask, the old users
      of _LOW are now at PRIORITY_NORMAL and sleepers woken up after an
      external event are kicked off at PRIORITY_HIGH.  This combination
      along with the new state should avoid priority inversion and keep
      things running without resorting to an infinite pipeline.  New
      state displays as "HTW" with green text in the texture console.
      Request cancelation and worker run-down should now be more
      correct but this edge case may need more attention.
      196e1d46
  7. Jun 06, 2012
    • Monty Brandenberg's avatar
    • Monty Brandenberg's avatar
      Policy + caching fixes + https support + POST working · 05af16a2
      Monty Brandenberg authored
      Implemented first global policy definitions to support SSL CA certificate configuration
      to support https: operations.  Fixed HTTP 206 status handling to match what is currently
      being done by grid services and to lay a foundation for fixes that will be a response
      to ER-1824.  More libcurl CURLOPT options set on easy handles to do peer verification
      in the traditional way.  HTTP POST working and now reporting asset metrics back to
      grid for the viewer's asset system.  This uses LLSD so that is also showing as compatible
      with the new library.
      05af16a2
  8. Jun 05, 2012
  9. Jun 01, 2012
  10. May 23, 2012
    • Monty Brandenberg's avatar
      Integrate llcorehttp library into lltexturefetch design. · 8fc35012
      Monty Brandenberg authored
      This is the first functional viewer pass with the HTTP work of the texture fetch
      code performed by the llcorehttp library.  Not exactly a 'drop-in' replacement
      but a work-alike with some changes (e.g. handler notification in consumer
      thread versus responder notification in worker thread).
      
      This also includes some temporary changes in the priority scheme to prevent
      the kind of priority inversion found in VWR-28996.  Scheme used here does
      provide liveness if not optimal responsiveness or order-of-operation.
      
      The llcorehttp library at this point is far from optimally performing.
      Its worker thread is making relatively poor use of cycles it gets and
      it doesn't idle or sleep intelligently yet.  This early integration step
      helps shake out the interfaces, implementation niceties will be covered
      soon.
      8fc35012
  11. May 09, 2012
  12. May 08, 2012
Loading