Let statemachine honor approvements.
The inventory bulk fetch is not thread-safe, so the it doesn't start right away, causing the approvement not to be honored upon return from post_approved (formerly post_nb). This patch renames wantsMoreHTTPReqestsFor to approveHTTPRequestFor, and has it return NULL or a AIPerService::Approvement object. The latter is now passed to the CurlEasyHandle object instead of just a boolean mQueueIfTooMuchBandwidthUsage, and then the Approvement is honored by the state machine right after the request is actually added to the command queue. This should avoid a flood of inventory requests in the case approveHTTPRequestFor is called multiple times before the main thread adds the requests to the command queue. I don't think that actually ever happens, but I added debug code (to find some problem) that is so damn strictly checking everything that I need to be this precise in order to do that testing.
This commit is contained in:
@@ -66,7 +66,8 @@ class LLURLRequest : public AICurlEasyRequestStateMachine {
|
||||
*/
|
||||
LLURLRequest(ERequestAction action, std::string const& url, Injector* body,
|
||||
LLHTTPClient::ResponderPtr responder, AIHTTPHeaders& headers,
|
||||
bool keepalive, bool is_auth, bool no_compression, bool queue_if_too_much_bandwidth_usage);
|
||||
AIPerService::Approvement* approved,
|
||||
bool keepalive, bool is_auth, bool no_compression);
|
||||
|
||||
/**
|
||||
* @brief Cached value of responder->getName() as passed to the constructor.
|
||||
|
||||
Reference in New Issue
Block a user