@@ -46,7 +46,7 @@ inline auto f$curl_multi_add_handle(kphp::web::curl::multi_type multi_id, kphp::
4646
4747 auto res{co_await kphp::forks::id_managed (kphp::web::composite_transfer_add (kphp::web::composite_transfer{multi_id}, kphp::web::simple_transfer{easy_id}))};
4848 if (!res.has_value ()) [[unlikely]] {
49- multi_ctx.set_errno (res.error ().code , res. error (). description );
49+ multi_ctx.set_errno (res.error ().code );
5050 kphp::web::curl::print_error (" could not add a curl easy handler into multi handle" , std::move (res.error ()));
5151 co_return multi_ctx.error_code ;
5252 }
@@ -67,7 +67,7 @@ inline auto f$curl_multi_remove_handle(kphp::web::curl::multi_type multi_id,
6767 auto res{
6868 co_await kphp::forks::id_managed (kphp::web::composite_transfer_remove (kphp::web::composite_transfer{multi_id}, kphp::web::simple_transfer{easy_id}))};
6969 if (!res.has_value ()) [[unlikely]] {
70- multi_ctx.set_errno (res.error ().code , res. error (). description );
70+ multi_ctx.set_errno (res.error ().code );
7171 kphp::web::curl::print_error (" could not remove a curl easy handler from multi handle" , std::move (res.error ()));
7272 co_return multi_ctx.error_code ;
7373 }
@@ -100,7 +100,7 @@ inline auto f$curl_multi_setopt(kphp::web::curl::multi_type multi_id, int64_t op
100100 return true ;
101101 }
102102 default :
103- multi_ctx.set_errno (kphp::web::curl::CURLME::UNKNOWN_OPTION, " a libcurl function was given an incorrect PROXYTYPE kind " );
103+ multi_ctx.set_errno (kphp::web::curl::CURLME::UNKNOWN_OPTION);
104104 return false ;
105105 }
106106 }
@@ -130,7 +130,7 @@ inline auto f$curl_multi_exec(kphp::web::curl::multi_type multi_id, int64_t& sti
130130 auto res{co_await kphp::forks::id_managed (kphp::web::composite_transfer_perform (kphp::web::composite_transfer{multi_id}))};
131131 auto & multi_ctx{curl_state.multi_ctx .get_or_init (multi_id)};
132132 if (!res.has_value ()) [[unlikely]] {
133- multi_ctx.set_errno (res.error ().code , res. error (). description );
133+ multi_ctx.set_errno (res.error ().code );
134134 kphp::web::curl::print_error (" could not execute curl multi handle" , std::move (res.error ()));
135135 co_return multi_ctx.error_code ;
136136 }
@@ -148,7 +148,7 @@ inline auto f$curl_multi_getcontent(kphp::web::curl::easy_type easy_id) noexcept
148148 if (easy_ctx.return_transfer ) {
149149 auto res{co_await kphp::forks::id_managed (kphp::web::simple_transfer_get_response (kphp::web::simple_transfer{easy_id}))};
150150 if (!res.has_value ()) [[unlikely]] {
151- easy_ctx.set_errno (res.error ().code , res. error (). description );
151+ easy_ctx.set_errno (res.error ().code );
152152 kphp::web::curl::print_error (" could not get response of curl easy handle" , std::move (res.error ()));
153153 co_return false ;
154154 }
@@ -165,26 +165,47 @@ inline auto f$curl_multi_close(kphp::web::curl::multi_type multi_id) noexcept ->
165165 auto & multi_ctx{curl_state.multi_ctx .get_or_init (multi_id)};
166166 auto res{co_await kphp::forks::id_managed (kphp::web::composite_transfer_close (kphp::web::composite_transfer{multi_id}))};
167167 if (!res.has_value ()) [[unlikely]] {
168- multi_ctx.set_errno (res.error ().code , res. error (). description );
168+ multi_ctx.set_errno (res.error ().code );
169169 kphp::web::curl::print_error (" could not close curl multi handle" , std::move (res.error ()));
170170 co_return ;
171171 }
172172 multi_ctx.set_errno (kphp::web::curl::CURLE::OK);
173173 co_return ;
174174}
175175
176- inline auto f$curl_multi_strerror(kphp::web::curl::multi_type multi_id) noexcept -> Optional<string> {
177- auto & curl_state{CurlInstanceState::get ()};
178- if (!curl_state.multi_ctx .has (multi_id)) [[unlikely]] {
176+ inline auto f$curl_multi_strerror(int64_t error_num) noexcept -> Optional<string> {
177+ switch (static_cast <kphp::web::curl::CURLME>(error_num)) {
178+ case kphp::web::curl::CURLME::CALL_MULTI_PERFORM:
179+ return CurlImageState::get ().CURLME_CALL_MULTI_PERFORM ;
180+ case kphp::web::curl::CURLME::OK:
181+ return CurlImageState::get ().CURLME_OK ;
182+ case kphp::web::curl::CURLME::BAD_HANDLE:
183+ return CurlImageState::get ().CURLME_BAD_HANDLE ;
184+ case kphp::web::curl::CURLME::BAD_EASY_HANDLE:
185+ return CurlImageState::get ().CURLME_BAD_EASY_HANDLE ;
186+ case kphp::web::curl::CURLME::OUT_OF_MEMORY:
187+ return CurlImageState::get ().CURLME_OUT_OF_MEMORY ;
188+ case kphp::web::curl::CURLME::INTERNAL_ERROR:
189+ return CurlImageState::get ().CURLME_INTERNAL_ERROR ;
190+ case kphp::web::curl::CURLME::BAD_SOCKET:
191+ return CurlImageState::get ().CURLME_BAD_SOCKET ;
192+ case kphp::web::curl::CURLME::UNKNOWN_OPTION:
193+ return CurlImageState::get ().CURLME_UNKNOWN_OPTION ;
194+ case kphp::web::curl::CURLME::ADDED_ALREADY:
195+ return CurlImageState::get ().CURLME_ADDED_ALREADY ;
196+ case kphp::web::curl::CURLME::RECURSIVE_API_CALL:
197+ return CurlImageState::get ().CURLME_RECURSIVE_API_CALL ;
198+ case kphp::web::curl::CURLME::WAKEUP_FAILURE:
199+ return CurlImageState::get ().CURLME_WAKEUP_FAILURE ;
200+ case kphp::web::curl::CURLME::BAD_FUNCTION_ARGUMENT:
201+ return CurlImageState::get ().CURLME_BAD_FUNCTION_ARGUMENT ;
202+ case kphp::web::curl::CURLME::ABORTED_BY_CALLBACK:
203+ return CurlImageState::get ().CURLME_ABORTED_BY_CALLBACK ;
204+ case kphp::web::curl::CURLME::UNRECOVERABLE_POLL:
205+ return CurlImageState::get ().CURLME_UNRECOVERABLE_POLL ;
206+ default :
179207 return {};
180208 }
181- auto & multi_ctx{curl_state.multi_ctx .get_or_init (multi_id)};
182- if (multi_ctx.error_code != static_cast <int64_t >(kphp::web::curl::CURLME::OK)) [[likely]] {
183- const auto * const desc_data{reinterpret_cast <const char *>(multi_ctx.error_description .data ())};
184- const auto desc_size{static_cast <string::size_type>(multi_ctx.error_description .size ())};
185- return string{desc_data, desc_size};
186- }
187- return {};
188209}
189210
190211inline auto f$curl_multi_errno(kphp::web::curl::multi_type multi_id) noexcept -> Optional<int64_t > {
@@ -205,7 +226,7 @@ inline auto f$curl_multi_select(kphp::web::curl::multi_type multi_id, double tim
205226 auto res{co_await kphp::forks::id_managed (kphp::web::composite_transfer_wait_updates (
206227 kphp::web::composite_transfer{multi_id}, std::chrono::duration_cast<std::chrono::seconds>(std::chrono::duration<double >{timeout})))};
207228 if (!res.has_value ()) [[unlikely]] {
208- multi_ctx.set_errno (res.error ().code , res. error (). description );
229+ multi_ctx.set_errno (res.error ().code );
209230 kphp::web::curl::print_error (" could not select curl multi handle" , std::move (res.error ()));
210231 co_return multi_ctx.error_code ;
211232 }
0 commit comments