summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOBATA Akio <obache@wizdas.com>2020-05-06 14:31:28 +0900
committerSlávek Banko <slavek.banko@axis.cz>2020-05-06 10:55:29 +0200
commit1f3cbf037541543ed408ef4982b5ba99e0e8ec57 (patch)
treeccd17730358b7fb0cca7c864245c11672bdfd2a1
parent1878ff088b3b08876c607d9caf8bada1f6c16956 (diff)
downloadlibcaldav-1f3cbf037541543ed408ef4982b5ba99e0e8ec57.tar.gz
libcaldav-1f3cbf037541543ed408ef4982b5ba99e0e8ec57.zip
Fix to set error code and message properly
Signed-off-by: OBATA Akio <obache@wizdas.com> (cherry picked from commit afa497c628eb6a8a96f234db5215d5c4cc0489af)
-rw-r--r--src/delete-caldav-object.c95
-rw-r--r--src/modify-caldav-object.c90
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;
}
}