- curl_multi_remove_handle(m_multi_handle, msg->easy_handle);
- log_info << "DOWNLOAD DONE" << std::endl;
- //FIXME: finish_transfer(msg->easy_handle);
+ {
+ log_info << "Download completed" << std::endl;
+ curl_multi_remove_handle(m_multi_handle, msg->easy_handle);
+ auto it = std::find_if(m_transfers.begin(), m_transfers.end(),
+ [&msg](const std::unique_ptr<Transfer>& rhs) {
+ return rhs->get_curl_handle() == msg->easy_handle;
+ });
+ assert(it != m_transfers.end());
+ TransferStatusPtr status = (*it)->get_status();
+ m_transfers.erase(it);
+
+ status->status = TransferStatus::COMPLETED;
+ if (status->callback)
+ {
+ status->callback();
+ }
+ }