summaryrefslogtreecommitdiffstats
path: root/src/modify-carddav-object.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modify-carddav-object.c')
-rw-r--r--src/modify-carddav-object.c91
1 files changed, 43 insertions, 48 deletions
diff --git a/src/modify-carddav-object.c b/src/modify-carddav-object.c
index 30015d6..a6a9c84 100644
--- a/src/modify-carddav-object.c
+++ b/src/modify-carddav-object.c
@@ -182,6 +182,8 @@ gboolean carddav_modify(carddav_settings* settings, carddav_error* error) {
if (url) {
int lock = 0;
carddav_error lock_error;
+ lock_error.code = 0;
+ lock_error.str = NULL;
file = g_strdup(etag);
g_free(etag);
@@ -237,37 +239,37 @@ gboolean carddav_modify(carddav_settings* settings, carddav_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(chunk.memory);
+ result = TRUE;
+ }
+ }
if (LOCKSUPPORT) {
carddav_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 {
@@ -363,7 +365,6 @@ gboolean carddav_modify_by_uri(carddav_settings* settings, carddav_error* error)
g_free(file);
/* enable uploading */
- long code;
gchar* url = NULL;
gchar* etag = NULL;
url = uid;
@@ -383,6 +384,8 @@ gboolean carddav_modify_by_uri(carddav_settings* settings, carddav_error* error)
if (url) {
int lock = 0;
carddav_error lock_error;
+ lock_error.code = 0;
+ lock_error.str = NULL;
file = g_strdup(etag);
g_free(etag);
@@ -435,6 +438,21 @@ gboolean carddav_modify_by_uri(carddav_settings* settings, carddav_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(chunk.memory);
+ result = TRUE;
+ }
+ }
if (LOCKSUPPORT) {
carddav_unlock_object(
lock_token, url, settings, &lock_error);
@@ -442,38 +460,15 @@ gboolean carddav_modify_by_uri(carddav_settings* settings, carddav_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;
}
}