0
  • I've implemented multi example with libevent (multi-event)
  • Additionally I add curl_easy_setopt(curl_easy, CURLOPT_TIMEOUT_MS, 10000);
  • on_timeout do callback when after 10000ms, but I need the exactlly curl_easy obj which curl_easy_setopt calls;
  • Tried check_multi_info curl_multi_info_read, got nothing;

How can I known which curl_easy timeout? Thanks!

My main event looper:

void HttpLooper::Run() {
  CURLcode ret = curl_global_init(CURL_GLOBAL_ALL);
  if (ret) {
    LOG(ERROR) << "curl_global_init error: " << ret;
    return;
  }

  event_timeout_ = evtimer_new(event_base_, on_timeout, this);

  g_curl = curl_multi_init();

  curl_multi_setopt(g_curl, CURLMOPT_SOCKETFUNCTION, handle_socket);
  curl_multi_setopt(g_curl, CURLMOPT_SOCKETDATA, this);
  curl_multi_setopt(g_curl, CURLMOPT_TIMERFUNCTION, start_timeout);
  curl_multi_setopt(g_curl, CURLMOPT_TIMERDATA, this);

  for (;;) {
    StartDoTasks();

    event_base_dispatch(event_base_);

    if (!keep_running_)
      break;
  }

  curl_multi_cleanup(g_curl);

  event_free(event_timeout_);

  curl_global_cleanup();
}
Qilin Li
  • 25
  • 5
  • Not sure, but have you looked at [`CURLMOPT_TIMERDATA`](https://curl.se/libcurl/c/CURLMOPT_TIMERDATA.html)? – Ted Lyngmo Dec 24 '20 at 08:20
  • @TedLyngmo Thanks for your suggestion, I've add my main loop codes, see I've add CURLMOPT_TIMERDATA opt as g_curl's params . – Qilin Li Dec 27 '20 at 08:19

0 Answers0