From 7ba97b44a23a1e0e0d7e9872c008ea0f5d3461bb Mon Sep 17 00:00:00 2001 From: discomfitor Date: Wed, 7 Mar 2012 17:06:33 +0000 Subject: [PATCH] check return code on CURLINFO_RESPONSE_CODE and add helper function for it git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@69008 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/ecore_con/ecore_con_private.h | 1 + src/lib/ecore_con/ecore_con_url.c | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore_con/ecore_con_private.h b/src/lib/ecore_con/ecore_con_private.h index 1c6937a..91f5d39 100644 --- a/src/lib/ecore_con/ecore_con_private.h +++ b/src/lib/ecore_con/ecore_con_private.h @@ -207,6 +207,7 @@ struct _Ecore_Con_Url Eina_List *response_headers; const char *url; long proxy_type; + int status; Ecore_Timer *timer; diff --git a/src/lib/ecore_con/ecore_con_url.c b/src/lib/ecore_con/ecore_con_url.c index a541db6..90e8447 100644 --- a/src/lib/ecore_con/ecore_con_url.c +++ b/src/lib/ecore_con/ecore_con_url.c @@ -1267,19 +1267,29 @@ ecore_con_url_proxy_password_set(Ecore_Con_Url *url_con, const char *password) #ifdef HAVE_CURL static void +_ecore_con_url_status_get(Ecore_Con_Url *url_con) +{ + long status = 0; + if (curl_easy_getinfo(url_con->curl_easy, CURLINFO_RESPONSE_CODE, &status)) + url_con->status = status; +} + +static void _ecore_con_url_event_url_complete(Ecore_Con_Url *url_con, CURLMsg *curlmsg) { Ecore_Con_Event_Url_Complete *e; - long status = 0; e = calloc(1, sizeof(Ecore_Con_Event_Url_Complete)); if (!e) return; if (curlmsg && (curlmsg->data.result == CURLE_OK)) - curl_easy_getinfo(curlmsg->easy_handle, CURLINFO_RESPONSE_CODE, &status); + { + if (!url_con->status) + _ecore_con_url_status_get(url_con); + } else ERR("Curl message have errors: %d", curlmsg->data.result); - e->status = status; + e->status = url_con->status; e->url_con = url_con; url_con->event_count++; ecore_event_add(ECORE_CON_EVENT_URL_COMPLETE, e, (Ecore_End_Cb)_ecore_con_event_url_free, url_con); -- 2.7.4