[evolution-data-server/gnome-3-28] Bug 796206 - CalDAV PUT's If-Match ETag is double quoted
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-28] Bug 796206 - CalDAV PUT's If-Match ETag is double quoted
- Date: Fri, 18 May 2018 07:17:31 +0000 (UTC)
commit 09360780a4fdf7e8d1edfb1c61c64f7018021302
Author: Milan Crha <mcrha redhat com>
Date: Fri May 18 09:17:32 2018 +0200
Bug 796206 - CalDAV PUT's If-Match ETag is double quoted
src/libedataserver/e-webdav-session.c | 58 ++++++++++++++------------------
1 files changed, 25 insertions(+), 33 deletions(-)
---
diff --git a/src/libedataserver/e-webdav-session.c b/src/libedataserver/e-webdav-session.c
index fc9a646..6c79806 100644
--- a/src/libedataserver/e-webdav-session.c
+++ b/src/libedataserver/e-webdav-session.c
@@ -2154,6 +2154,28 @@ e_webdav_session_write_restarted (SoupMessage *message,
}
}
+static void
+e_webdav_session_set_if_match_header (SoupMessage *message,
+ const gchar *etag)
+{
+ gint len;
+
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+ g_return_if_fail (etag != NULL);
+
+ len = strlen (etag);
+
+ if ((*etag == '\"' && len > 2 && etag[len - 1] == '\"') || strchr (etag, '\"')) {
+ soup_message_headers_replace (message->request_headers, "If-Match", etag);
+ } else {
+ gchar *quoted;
+
+ quoted = g_strconcat ("\"", etag, "\"", NULL);
+ soup_message_headers_replace (message->request_headers, "If-Match", quoted);
+ g_free (quoted);
+ }
+}
+
/**
* e_webdav_session_put_sync:
* @webdav: an #EWebDAVSession
@@ -2249,17 +2271,7 @@ e_webdav_session_put_sync (EWebDAVSession *webdav,
if (!avoid_ifmatch) {
if (etag) {
- gint len = strlen (etag);
-
- if (*etag == '\"' && len > 2 && etag[len - 1] == '\"') {
- soup_message_headers_replace (message->request_headers, "If-Match",
etag);
- } else {
- gchar *quoted;
-
- quoted = g_strconcat ("\"", etag, "\"", NULL);
- soup_message_headers_replace (message->request_headers, "If-Match",
quoted);
- g_free (quoted);
- }
+ e_webdav_session_set_if_match_header (message, etag);
} else {
soup_message_headers_replace (message->request_headers, "If-None-Match", "*");
}
@@ -2424,17 +2436,7 @@ e_webdav_session_put_data_sync (EWebDAVSession *webdav,
if (!avoid_ifmatch) {
if (etag) {
- gint len = strlen (etag);
-
- if (*etag == '\"' && len > 2 && etag[len - 1] == '\"') {
- soup_message_headers_replace (message->request_headers, "If-Match",
etag);
- } else {
- gchar *quoted;
-
- quoted = g_strconcat ("\"", etag, "\"", NULL);
- soup_message_headers_replace (message->request_headers, "If-Match",
quoted);
- g_free (quoted);
- }
+ e_webdav_session_set_if_match_header (message, etag);
} else {
soup_message_headers_replace (message->request_headers, "If-None-Match", "*");
}
@@ -2539,17 +2541,7 @@ e_webdav_session_delete_sync (EWebDAVSession *webdav,
}
if (!avoid_ifmatch) {
- gint len = strlen (etag);
-
- if (*etag == '\"' && len > 2 && etag[len - 1] == '\"') {
- soup_message_headers_replace (message->request_headers, "If-Match", etag);
- } else {
- gchar *quoted;
-
- quoted = g_strconcat ("\"", etag, "\"", NULL);
- soup_message_headers_replace (message->request_headers, "If-Match", quoted);
- g_free (quoted);
- }
+ e_webdav_session_set_if_match_header (message, etag);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]