From: Ilya Kosarev <i.kosarev@tarantool.org> To: tarantool-patches@freelists.org Cc: tarantool-patches@dev.tarantool.org Subject: [Tarantool-patches] [PATCH v3 3/4] http: enrich httpc_request with curl error message buffer Date: Mon, 28 Oct 2019 18:51:48 +0300 [thread overview] Message-ID: <34286a5a167256f11a6bc1caa61dccf381db26c3.1572276894.git.i.kosarev@tarantool.org> (raw) In-Reply-To: <cover.1572276894.git.i.kosarev@tarantool.org> In-Reply-To: <cover.1572276894.git.i.kosarev@tarantool.org> When processing curl request error code, we are collecting error message using curl_easy_strerror. Now we are providing more info in errmsg, which is obtained using curl_easy_setopt with CURLOPT_ERRORBUFFER option. Closes #4578 @TarantoolBot document Title: http: new field in client_object:request return table Update the documentation for client_object:request method to reflect new field errmsg in return table. It contains extended curl request error message obtained using CURLOPT_ERRORBUFFER option. See https://curl.haxx.se/libcurl/c/CURLOPT_ERRORBUFFER.html --- src/httpc.c | 1 + src/httpc.h | 5 +++++ src/lua/httpc.c | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/src/httpc.c b/src/httpc.c index 22b54d16a..b493a8498 100644 --- a/src/httpc.c +++ b/src/httpc.c @@ -398,6 +398,7 @@ httpc_execute(struct httpc_request *req, double timeout) curl_easy_setopt(req->curl_request.easy, CURLOPT_HEADERDATA, (void *) req); curl_easy_setopt(req->curl_request.easy, CURLOPT_PRIVATE, (void *) &req->curl_request); curl_easy_setopt(req->curl_request.easy, CURLOPT_HTTPHEADER, req->headers); + curl_easy_setopt(req->curl_request.easy, CURLOPT_ERRORBUFFER, req->errmsg); ++env->stat.total_requests; diff --git a/src/httpc.h b/src/httpc.h index f710b3d13..145b59929 100644 --- a/src/httpc.h +++ b/src/httpc.h @@ -105,6 +105,11 @@ struct httpc_request { int status; /** Error message */ const char *reason; + /** + * Buffer for error message obtained using + * CURLOPT_ERRORBUFFER option. + */ + const char errmsg[CURL_ERROR_SIZE]; /** buffer of headers */ struct region resp_headers; /** buffer of body */ diff --git a/src/lua/httpc.c b/src/lua/httpc.c index 6ed4eb788..9fb8e4801 100644 --- a/src/lua/httpc.c +++ b/src/lua/httpc.c @@ -335,6 +335,10 @@ luaT_httpc_request(lua_State *L) lua_pushstring(L, req->reason); lua_settable(L, -3); + lua_pushstring(L, "errmsg"); + lua_pushstring(L, req->errmsg); + lua_settable(L, -3); + size_t headers_len = region_used(&req->resp_headers); if (headers_len > 0) { char *headers = region_join(&req->resp_headers, headers_len); -- 2.17.1
next prev parent reply other threads:[~2019-10-28 15:52 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-10-28 15:51 [Tarantool-patches] [PATCH v3 0/4] http: add CURLOPT_ACCEPT_ENCODING option Ilya Kosarev 2019-10-28 15:51 ` [Tarantool-patches] [PATCH v3 1/4] " Ilya Kosarev 2019-10-28 15:51 ` [Tarantool-patches] [PATCH v3 2/4] http: remove redundant & incorrect case for curl_request code Ilya Kosarev 2019-10-28 15:51 ` Ilya Kosarev [this message] 2019-10-28 15:51 ` [Tarantool-patches] [PATCH v3 4/4] http: add CURLE_BAD_CONTENT_ENCODING " Ilya Kosarev
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=34286a5a167256f11a6bc1caa61dccf381db26c3.1572276894.git.i.kosarev@tarantool.org \ --to=i.kosarev@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [Tarantool-patches] [PATCH v3 3/4] http: enrich httpc_request with curl error message buffer' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox