Allow changing CurlTimeout Debug Settings on the fly.
Same for NoVerifySSLCert and CurlConcurrentConnections.
This commit is contained in:
@@ -602,8 +602,6 @@ void AIHTTPTimeoutPolicy::sanity_checks(void) const
|
||||
//=======================================================================================================
|
||||
// Start of policy definitions.
|
||||
|
||||
// AIFIXME: update all policies whenever a CurlTimeout* settings is changed.
|
||||
|
||||
// Policy with hardcoded default values.
|
||||
AIHTTPTimeoutPolicyBase HTTPTimeoutPolicy_default(
|
||||
AITP_default_DNS_lookup_grace,
|
||||
@@ -646,6 +644,132 @@ AIHTTPTimeoutPolicyBase connect_40s(AIHTTPTimeoutPolicyBase::getDebugSettingsCur
|
||||
// End of policy definitions.
|
||||
//=======================================================================================================
|
||||
|
||||
bool validateCurlTimeoutDNSLookup(LLSD const& newvalue)
|
||||
{
|
||||
U32 new_value = newvalue.asInteger();
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::DNS op(new_value);
|
||||
op.perform(&timeout);
|
||||
return timeout.getDNSLookup() == new_value;
|
||||
}
|
||||
|
||||
bool handleCurlTimeoutDNSLookup(LLSD const& newvalue)
|
||||
{
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::DNS op(newvalue.asInteger());
|
||||
op.perform(&timeout);
|
||||
AIHTTPTimeoutPolicy::setDefaultCurlTimeout(timeout);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool validateCurlTimeoutConnect(LLSD const& newvalue)
|
||||
{
|
||||
U32 new_value = newvalue.asInteger();
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Connect op(new_value);
|
||||
op.perform(&timeout);
|
||||
return timeout.getConnect() == new_value;
|
||||
}
|
||||
|
||||
bool handleCurlTimeoutConnect(LLSD const& newvalue)
|
||||
{
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Connect op(newvalue.asInteger());
|
||||
op.perform(&timeout);
|
||||
AIHTTPTimeoutPolicy::setDefaultCurlTimeout(timeout);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool validateCurlTimeoutReplyDelay(LLSD const& newvalue)
|
||||
{
|
||||
U32 new_value = newvalue.asInteger();
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Reply op(new_value);
|
||||
op.perform(&timeout);
|
||||
return timeout.getReplyDelay() == new_value;
|
||||
}
|
||||
|
||||
bool handleCurlTimeoutReplyDelay(LLSD const& newvalue)
|
||||
{
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Reply op(newvalue.asInteger());
|
||||
op.perform(&timeout);
|
||||
AIHTTPTimeoutPolicy::setDefaultCurlTimeout(timeout);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool validateCurlTimeoutLowSpeedLimit(LLSD const& newvalue)
|
||||
{
|
||||
U32 new_value = newvalue.asInteger();
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Speed op(timeout.getLowSpeedTime(), new_value);
|
||||
op.perform(&timeout);
|
||||
return timeout.getLowSpeedLimit() == new_value;
|
||||
}
|
||||
|
||||
bool handleCurlTimeoutLowSpeedLimit(LLSD const& newvalue)
|
||||
{
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Speed op(timeout.getLowSpeedTime(), newvalue.asInteger());
|
||||
op.perform(&timeout);
|
||||
AIHTTPTimeoutPolicy::setDefaultCurlTimeout(timeout);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool validateCurlTimeoutLowSpeedTime(LLSD const& newvalue)
|
||||
{
|
||||
U32 new_value = newvalue.asInteger();
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Speed op(new_value, timeout.getLowSpeedLimit());
|
||||
op.perform(&timeout);
|
||||
return timeout.getLowSpeedTime() == new_value;
|
||||
}
|
||||
|
||||
bool handleCurlTimeoutLowSpeedTime(LLSD const& newvalue)
|
||||
{
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Speed op(newvalue.asInteger(), timeout.getLowSpeedLimit());
|
||||
op.perform(&timeout);
|
||||
AIHTTPTimeoutPolicy::setDefaultCurlTimeout(timeout);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool validateCurlTimeoutMaxTransaction(LLSD const& newvalue)
|
||||
{
|
||||
U32 new_value = newvalue.asInteger();
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Transaction op(new_value);
|
||||
op.perform(&timeout);
|
||||
return timeout.getCurlTransaction() == new_value;
|
||||
}
|
||||
|
||||
bool handleCurlTimeoutMaxTransaction(LLSD const& newvalue)
|
||||
{
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Transaction op(newvalue.asInteger());
|
||||
op.perform(&timeout);
|
||||
AIHTTPTimeoutPolicy::setDefaultCurlTimeout(timeout);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool validateCurlTimeoutMaxTotalDelay(LLSD const& newvalue)
|
||||
{
|
||||
U32 new_value = newvalue.asInteger();
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Total op(new_value);
|
||||
op.perform(&timeout);
|
||||
return timeout.getTotalDelay() == new_value;
|
||||
}
|
||||
|
||||
bool handleCurlTimeoutMaxTotalDelay(LLSD const& newvalue)
|
||||
{
|
||||
AIHTTPTimeoutPolicyBase timeout = AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout();
|
||||
AIHTTPTimeoutPolicyOperators::Total op(newvalue.asInteger());
|
||||
op.perform(&timeout);
|
||||
AIHTTPTimeoutPolicy::setDefaultCurlTimeout(timeout);
|
||||
return true;
|
||||
}
|
||||
|
||||
//static
|
||||
AIHTTPTimeoutPolicy::namemap_t AIHTTPTimeoutPolicy::sNameMap;
|
||||
|
||||
|
||||
@@ -94,6 +94,8 @@ class AIHTTPTimeoutPolicy {
|
||||
// Accessors.
|
||||
char const* name(void) const { return mName; }
|
||||
U16 getConnectTimeout(std::string const& hostname) const;
|
||||
U16 getDNSLookup(void) const { return mDNSLookupGrace; }
|
||||
U16 getConnect(void) const { return mMaximumConnectTime; }
|
||||
U16 getReplyDelay(void) const { return mMaximumReplyDelay; }
|
||||
U16 getLowSpeedTime(void) const { return mLowSpeedTime; }
|
||||
U32 getLowSpeedLimit(void) const { return mLowSpeedLimit; }
|
||||
@@ -115,4 +117,22 @@ class AIHTTPTimeoutPolicy {
|
||||
AIHTTPTimeoutPolicy& operator=(AIHTTPTimeoutPolicy const&);
|
||||
};
|
||||
|
||||
class LLSD;
|
||||
|
||||
// Handlers for Debug Setting changes.
|
||||
bool validateCurlTimeoutDNSLookup(LLSD const& newvalue);
|
||||
bool handleCurlTimeoutDNSLookup(LLSD const& newvalue);
|
||||
bool validateCurlTimeoutConnect(LLSD const& newvalue);
|
||||
bool handleCurlTimeoutConnect(LLSD const& newvalue);
|
||||
bool validateCurlTimeoutReplyDelay(LLSD const& newvalue);
|
||||
bool handleCurlTimeoutReplyDelay(LLSD const& newvalue);
|
||||
bool validateCurlTimeoutLowSpeedLimit(LLSD const& newvalue);
|
||||
bool handleCurlTimeoutLowSpeedLimit(LLSD const& newvalue);
|
||||
bool validateCurlTimeoutLowSpeedTime(LLSD const& newvalue);
|
||||
bool handleCurlTimeoutLowSpeedTime(LLSD const& newvalue);
|
||||
bool validateCurlTimeoutMaxTransaction(LLSD const& newvalue);
|
||||
bool handleCurlTimeoutMaxTransaction(LLSD const& newvalue);
|
||||
bool validateCurlTimeoutMaxTotalDelay(LLSD const& newvalue);
|
||||
bool handleCurlTimeoutMaxTotalDelay(LLSD const& newvalue);
|
||||
|
||||
#endif // AIHTTPTIMEOUTPOLICY_H
|
||||
|
||||
Reference in New Issue
Block a user