From 1f3cbf037541543ed408ef4982b5ba99e0e8ec57 Mon Sep 17 00:00:00 2001 From: OBATA Akio Date: Wed, 6 May 2020 14:31:28 +0900 Subject: [PATCH] Fix to set error code and message properly Signed-off-by: OBATA Akio (cherry picked from commit afa497c628eb6a8a96f234db5215d5c4cc0489af) --- src/delete-caldav-object.c | 95 +++++++++++++++++++------------------- src/modify-caldav-object.c | 90 +++++++++++++++++------------------- 2 files changed, 91 insertions(+), 94 deletions(-) diff --git a/src/delete-caldav-object.c b/src/delete-caldav-object.c index 3e5c078..f55eae3 100644 --- a/src/delete-caldav-object.c +++ b/src/delete-caldav-object.c @@ -200,6 +200,8 @@ gboolean caldav_delete(caldav_settings* settings, caldav_error* error) { if (url) { int lock = 0; caldav_error lock_error; + lock_error.code = 0; + lock_error.str = NULL; file = g_strdup(etag); g_free(etag); @@ -254,37 +256,37 @@ gboolean caldav_delete(caldav_settings* settings, caldav_error* error) { curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1); curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); res = curl_easy_perform(curl); + if (res != 0) { + error->code = -1; + error->str = g_strdup_printf("%s", error_buf); + result = TRUE; + } + else { + long code; + res = curl_easy_getinfo( + curl, CURLINFO_RESPONSE_CODE, &code); + if (code != 204) { + error->code = code; + error->str = g_strdup(chunk.memory); + result = TRUE; + } + } if (LOCKSUPPORT) { caldav_unlock_object( lock_token, url, settings, &lock_error); } } + else { + error->code = lock_error.code; + error->str = g_strdup(lock_error.str); + result = TRUE; + } g_free(url); g_free(lock_token); - if (res != 0 || lock < 0) { - /* Is this a lock_error don't change error*/ - if (lock == 0 || lock_error.code == 423) { - error->code = code; - error->str = g_strdup(chunk.memory); - } - else { - error->code = lock_error.code; - error->str = g_strdup(lock_error.str); - } - result = TRUE; + if (result) { g_free(settings->file); settings->file = NULL; } - else { - long code; - res = curl_easy_getinfo( - curl, CURLINFO_RESPONSE_CODE, &code); - if (code != 204) { - error->code = code; - error->str = g_strdup(chunk.memory); - result = TRUE; - } - } curl_slist_free_all(http_header); } else { @@ -433,6 +435,8 @@ gboolean caldav_tasks_delete(caldav_settings* settings, caldav_error* error) { if (url) { int lock = 0; caldav_error lock_error; + lock_error.code = 0; + lock_error.str = NULL; file = g_strdup(etag); g_free(etag); @@ -487,45 +491,42 @@ gboolean caldav_tasks_delete(caldav_settings* settings, caldav_error* error) { curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1); curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); res = curl_easy_perform(curl); + if (res != 0) { + error->code = -1; + error->str = g_strdup_printf("%s", error_buf); + result = TRUE; + } + else { + long code; + res = curl_easy_getinfo( + curl, CURLINFO_RESPONSE_CODE, &code); + if (code != 204) { + error->code = code; + error->str = g_strdup(chunk.memory); + result = TRUE; + } + } if (LOCKSUPPORT) { caldav_unlock_object( lock_token, url, settings, &lock_error); } } + else { + error->code = lock_error.code; + error->str = g_strdup(lock_error.str); + result = TRUE; + } g_free(url); g_free(lock_token); - if (res != 0 || lock < 0) { - /* Is this a lock_error don't change error*/ - if (lock == 0 || lock_error.code == 423) { - error->code = code; - error->str = g_strdup(chunk.memory); - } - else { - error->code = lock_error.code; - error->str = g_strdup(lock_error.str); - } - result = TRUE; + if (result) { g_free(settings->file); settings->file = NULL; } - else { - long code; - res = curl_easy_getinfo( - curl, CURLINFO_RESPONSE_CODE, &code); - if (code != 204) { - error->code = code; - error->str = g_strdup(chunk.memory); - result = TRUE; - } - } curl_slist_free_all(http_header); } else { - error->code = code; - if (chunk.memory) - error->str = g_strdup(chunk.memory); - else - error->str = g_strdup("No object found"); + error->code = -1; + error->str = g_strdup("No object found"); result = TRUE; } } diff --git a/src/modify-caldav-object.c b/src/modify-caldav-object.c index 3db1e59..67bdb54 100644 --- a/src/modify-caldav-object.c +++ b/src/modify-caldav-object.c @@ -200,6 +200,8 @@ gboolean caldav_modify(caldav_settings* settings, caldav_error* error) { if (url) { int lock = 0; caldav_error lock_error; + lock_error.code = 0; + lock_error.str = NULL; file = g_strdup(etag); g_free(etag); @@ -255,37 +257,37 @@ gboolean caldav_modify(caldav_settings* settings, caldav_error* error) { curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); res = curl_easy_perform(curl); + if (res != 0) { + error->code = -1; + error->str = g_strdup_printf("%s", error_buf); + result = TRUE; + } + else { + long code; + res = curl_easy_getinfo( + cur, CURLINFO_RESPONSE_CODE, &code); + if (code != 204) { + error->code = code; + error->str = g_strdup(chunk.memory); + result = TRUE; + } + } if (LOCKSUPPORT) { caldav_unlock_object( lock_token, url, settings, &lock_error); } } + else { + error->code = lock_error.code; + error->str = g_strdup(lock_error.str); + result = TRUE; + } g_free(url); g_free(lock_token); - if (res != 0 || lock < 0) { - /* Is this a lock_error don't change error*/ - if (lock == 0 || lock_error.code == 423) { - error->code = code; - error->str = g_strdup(chunk.memory); - } - else { - error->code = lock_error.code; - error->str = g_strdup(lock_error.str); - } - result = TRUE; + if (result) { g_free(settings->file); settings->file = NULL; } - else { - long code; - res = curl_easy_getinfo( - curl, CURLINFO_RESPONSE_CODE, &code); - if (code != 204) { - error->code = code; - error->str = g_strdup(chunk.memory); - result = TRUE; - } - } curl_slist_free_all(http_header); } else { @@ -443,6 +445,8 @@ gboolean caldav_tasks_modify(caldav_settings* settings, caldav_error* error) { if (url) { int lock = 0; caldav_error lock_error; + lock_error.code = 0; + lock_error.str = NULL; file = g_strdup(etag); g_free(etag); @@ -495,6 +499,21 @@ gboolean caldav_tasks_modify(caldav_settings* settings, caldav_error* error) { curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); res = curl_easy_perform(curl); + if (res != 0) { + error->code = -1; + error->str = g_strdup_printf("%s", error_buf); + result = TRUE; + } + else { + long code; + res = curl_easy_getinfo( + curl, CURLINFO_RESPONSE_CODE, &code); + if (code != 204) { + error->code = code; + error->str = g_strdup(chnk.memory); + result = TRUE; + } + } if (LOCKSUPPORT) { caldav_unlock_object( lock_token, url, settings, &lock_error); @@ -502,38 +521,15 @@ gboolean caldav_tasks_modify(caldav_settings* settings, caldav_error* error) { } g_free(url); g_free(lock_token); - if (res != 0 || lock < 0) { - /* Is this a lock_error don't change error*/ - if (lock == 0 || lock_error.code == 423) { - error->code = code; - error->str = g_strdup(chunk.memory); - } - else { - error->code = lock_error.code; - error->str = g_strdup(lock_error.str); - } - result = TRUE; + if (result) { g_free(settings->file); settings->file = NULL; } - else { - long code; - res = curl_easy_getinfo( - curl, CURLINFO_RESPONSE_CODE, &code); - if (code != 204) { - error->code = code; - error->str = g_strdup(chunk.memory); - result = TRUE; - } - } curl_slist_free_all(http_header); } else { - error->code = code; - if (chunk.memory) - error->str = g_strdup(chunk.memory); - else - error->str = g_strdup("No object found"); + error->code = -1; + error->str = g_strdup("No object found"); result = TRUE; } }