- Jul 08, 2013
-
-
Monty Brandenberg authored
termination test. Sheesh. Also get some more numbers out of the example/load test program which drives traffic. This should give some useful insights into how the current http throttle works (or doesn't) with varying client demands.
-
- Jul 03, 2013
-
-
Monty Brandenberg authored
request feed logic to use high/low-water level logic as is done in viewer code.
-
- Jun 27, 2013
-
-
Monty Brandenberg authored
Pay correct attention to status codes coming back from services. Generate better and consistent error messages when problems arise. There's more to do in error handling, need a way to cleanly fail all request types, only have that for LOD at this point. Do better keeping the HTTP pipeline between the low and high water marks. This was made challenging because the outer most code couldn't really see what's going on internally (whose actions are delayed in a worker thread). More to do here, the debug-like requests don't honor limits, that will come later. Made retry counts available from llcorehttp which can be used by the throttle-anticipating logic to advance the count. It helps but it reinforces the coupling between viewer and server which I do not like.
-
- Jun 20, 2013
-
-
Monty Brandenberg authored
Mesh repo is using three policy classes now: one for large objects, one for GetMesh2 regions, one for GetMesh regions. It's also detecting the presence of the cap and using the correct class. Class initialization cleaned up significantly in llappcorehttp using data-directed code. Pulled in the changes to HttpHeader done for sunshine-internal then did a refactoring pass on the header callback which now uses a unified approach to clean up and deliver header information to all interested parties. Added support for using Retry-After header information on 503 retries.
-
- Apr 15, 2013
-
-
Monty Brandenberg authored
Header container moves from a vector of raw lines to a vector of string pairs representing name/value pairs in headers. For incoming headers, we normalize the name to lowercase and trim it. Values are only left-trimmed. Outgoing headers are left as-is. Simple find() method for the common case, forward and reverse iterators for those few who need to do it themselves. The HTTP status line (e.g. 'HTTP/1.1 200 Ok') is no longer treated as a header to be returned to caller. Unit tests, as usual, were a bear but they absolutely ensured outgoing HTTP header conformance after the change. Grunt work paid off. LLTextureFetch was also given a second options structure for texture fetches. Same as the original but with header return to caller requested. Baked textures should use this, the other 20,000 texture fetch requests should continue to use the original.
-
- Jun 19, 2013
-
-
Monty Brandenberg authored
Added second mesh class as well as an asset upload class. Refactored initialization to use less code and more data to cleanly get http started. Modified mesh to use the new http class for large requests (>2MB for now). Added additional timeout setting to llcorehttp to distinguish connection timeout from transport timeout and are now using transport timeout values for large asset downloads that may need more time.
-
- May 07, 2013
-
-
Monty Brandenberg authored
Initial work completed on linux, moving over to windows to do debug and refinement. This includes 5/6 handlers based on existing responders and use of llcorehttp for the mesh header fetch.
-
- Mar 29, 2013
-
-
Graham Madarasz authored
-
- Dec 21, 2012
-
-
Monty Brandenberg authored
request. During readcallback, would generate an overrun-type message about reading position beyond end-of-data. Mistake was is messaging when state is exactly at end of data (which is expected) versus an overrun. Both result in declaring end-of-data to libcurl. Also changed some of the status logging for the metrics payload to be less chatty on success, more informative on error.
-
- Dec 07, 2012
-
-
Logan Dethrow authored
Removed duplicated block of code in LLAddBuildTest.cmake. Added comment to point to duplicated code. Replaced hard-coded tcmalloc link option with variable that is created in GooglePerfTools.cmake.
-
Logan Dethrow authored
Restored test_llcorehttp_peer.py, hopefully breaking the 'hg copy' link that was causing changesets intended for its copy parent to be applied to the child file.
-
Logan Dethrow authored
Deleting test_llcorehttp_peer.py because it has been corrupted by changes to test_llsdmessage_peer.py, which it was copied from. The file will be recreated using an unchanged file.
-
- Nov 27, 2012
-
-
Monty Brandenberg authored
will run with higher connection concurrencies. I'm using this to test the listener queue length reporting on apaches and everything is consistent and as expected with this change (stuck at eight before).
-
- Nov 26, 2012
-
-
Monty Brandenberg authored
Bumped the default retry limit up from 5 to 8 which gives up to 15 seconds more dwell time should the viewer get a 503 or other recoverable error on access.
-
- Nov 16, 2012
-
-
Nat Goodspeed authored
Given that third-party libraries (such as Boost) can and do use those names, properly namespace-scoped, it's unpardonable to break any such innocent usage with a macro. Given the pervasiveness of the need, introduce a header file with the requisite #undef directives.
-
Nat Goodspeed authored
-
- Jan 31, 2013
-
-
Oz Linden authored
-
- Sep 07, 2012
-
-
Monty Brandenberg authored
Cmake files not merged correctly and had to be done by hand. New memory allocation made some memory usage tests in the llcorehttp integration tests no longer valid. Would like to work on LLLog sometime and get it to be consistent. Special flags needed for windows build of example program.
-
- Aug 01, 2012
-
-
Monty Brandenberg authored
Reformatted messages around request retry. Successfully retried requests also message so you can see the cycle closed. Added additional retryable error codes (timeout, other libcurl failures). Commenting and removed some unnecessary std::min logic.
-
- Jul 24, 2012
-
-
Monty Brandenberg authored
-
- Jul 23, 2012
-
-
Monty Brandenberg authored
Add to-do list to _httpinternal.h to guide anyone who wants to pitch in and help.
-
Monty Brandenberg authored
-
- Jul 16, 2012
-
-
Monty Brandenberg authored
Define expectations for headers for GET, POST, PUT requests. Document those in the interface, test those with integration tests. Verify that header overrides work as expected.
-
Monty Brandenberg authored
When releasing HTTP waiters, avoid unnecessary sort activity. For Content-Type in responses, let libcurl do the work and removed my parsing of headers. Drop Content-Encoding as libcurl will deal with that. If anyone is interested, they can parse.
-
- Jul 13, 2012
-
-
Monty Brandenberg authored
First round of integration tests. Added a request header 'reflector' to the web server to sent the client's headers back with a 'X-Reflect-' prefix. Use boost::regex to check various headers. Run a test on a simple GET and a byte-ranged GET a la texture fetch.
-
- Jul 12, 2012
-
-
Monty Brandenberg authored
Using http_texture_load as the test subject, library looks clean. Did some better shutdown in the program itself and it looks better. Libcurl itself is making a lot of noise. Adapted testrunner to run valgrind as well but the memory allocation tester in the tools themselves grossly interferes with Valgrind operations.
-
- Jul 11, 2012
-
-
Monty Brandenberg authored
HttpResponse object now has two strings for these content headers. Either or both may be empty. Tidied up the cross-platform string code and got more defensive about the length of a header line. Integration test for the new response object.
-
- Jul 10, 2012
-
-
Monty Brandenberg authored
Well, achieved that by doing work in bulk when needed. But turned into some additional things. Change timebase from mS to uS as, well, things are headed that way. Implement an HttpReplyQueue::fetchAll method (advertised one, hadn't implemented it).
-
- Jul 09, 2012
-
-
Monty Brandenberg authored
30-second hang doesn't break subsequent tests. Did this by introducing threads into the HTTP server as I can't find the magic to detect that my client has gone away.
-
Monty Brandenberg authored
First, try to issue ranged GETs that are always at least partially satisfiable. This will keep Varnish-type caches from simply sending back 200/full asset responses to unsatisfiable requests. Implement awareness of Content-Range headers as well. Currently they're not coming back but they will be someday.
-
- Jul 07, 2012
-
-
Monty Brandenberg authored
Also added some comments and changed the callback userdata argument to be an HttpOpRequest rather than a libcurl handle. Less code, less clutter.
-
- Jul 06, 2012
-
-
Monty Brandenberg authored
-
Monty Brandenberg authored
sort things out or use policy classes (eventually) to arrange low and high priority traffic. Subjectively, I think this works better in practice (as I haven't implemented a dynamic priority setter yet).
-
Monty Brandenberg authored
Think I have found the major factor that causes the Linksys WRT54G V5 to fall over in testing scenarios: DNS. For some historical reason, we're trying to use libcurl without any DNS caching. My implementation echoed that and implemented it correctly and I was seeing a DNS request per request on the wire. The existing implementation tries to do that and has bugs because it is clearing caching DNS data querying only once every few seconds. Once I started emulating the bug, comms through the WRT became much, much more reliable.
-
- Jul 04, 2012
-
-
Monty Brandenberg authored
-
- Jul 03, 2012
-
-
Monty Brandenberg authored
Data problems after connections are established should be retried as well. Extend to appropriate libcurl codes. Also allow our connectivity to drop to as low as a single connection when trying to recover.
-
Monty Brandenberg authored
The fetch state machine received a new timeout during the WAIT_HTTP_REQ state. For the integration, rather than jump the state to done, we issue a request cancel and let the notification plumbing do the rest without any race conditions or special-case logic.
-
- Jun 26, 2012
-
-
Monty Brandenberg authored
SH-3184/SH-3221 More work on cleanup with better unit test work and more aggressive shutdown of a thread. Some additional work let me enable a memory check for the clean shutdown case and generally do a better job on other interfaces. Request queue waiters now awake on shutdown and don't sleep once the queue is turned off. Much better semantically for how this will be used.
-
- Jun 23, 2012
-
-
Monty Brandenberg authored
With this commit, the cleanup paths should be production quality. Unit tests have been expanded to include cases requiring thread termination and cleanup by the worker thread. Special operation/request added to support the unit tests. Thread interface expanded to include a very aggressive cancel() method that does not do cleanup but prevents the thread from accessing objects that will be destroyed.
-
- Jun 22, 2012
-
-
Monty Brandenberg authored
Groundwork is used for the default class which currently represents texture fetching. Class options implemented from API user into HttpLibcurl. Policy layer is going to start doing some traffic shaping like work to solve problems with consumer-grade gear. Need to have dynamic aspects to policies and that starts now...
-