@@ -95,7 +95,8 @@ int AsyncHttpClient::doTask(const HttpClientTaskPtr& task) {
if (task->retry_delay) {
// try again after delay
setTimeout(ctx->task->retry_delay, [this, task](TimerID timerID){
- doTask(task);
+ hlogi("retry %s %s", http_method_str(task->req->method), task->req->url.c_str());
+ sendInLoop(task);
});
} else {
send(task);
@@ -117,8 +117,8 @@ public:
task->req = req;
task->cb = std::move(resp_cb);
task->start_time = hloop_now_hrtime(loop_thread.hloop());
- task->retry_cnt = DEFAULT_FAIL_RETRY_COUNT;
task->retry_delay = DEFAULT_FAIL_RETRY_DELAY;
+ task->retry_cnt = MIN(DEFAULT_FAIL_RETRY_COUNT, req->timeout * 1000 / task->retry_delay - 1);
return send(task);
}