[evolution-ews/evolution-ews-3-12] Bug 733274 - EWS is very slow to download large messages
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews/evolution-ews-3-12] Bug 733274 - EWS is very slow to download large messages
- Date: Fri, 18 Jul 2014 12:10:22 +0000 (UTC)
commit 10eb3f47f184de1a014f413057a96496584a2255
Author: Milan Crha <mcrha redhat com>
Date: Fri Jul 18 14:08:16 2014 +0200
Bug 733274 - EWS is very slow to download large messages
src/server/e-ews-connection.c | 2 ++
src/server/e-ews-message.c | 23 +++++++++++++++++++++++
src/server/e-ews-message.h | 2 ++
3 files changed, 27 insertions(+), 0 deletions(-)
---
diff --git a/src/server/e-ews-connection.c b/src/server/e-ews-connection.c
index 1e589f4..352855a 100644
--- a/src/server/e-ews-connection.c
+++ b/src/server/e-ews-connection.c
@@ -2644,6 +2644,8 @@ e_ews_get_msg_for_url (const gchar *url,
return NULL;
}
+ e_ews_message_attach_chunk_allocator (msg);
+
soup_message_headers_append (
msg->request_headers,
"User-Agent", "libews/0.1");
diff --git a/src/server/e-ews-message.c b/src/server/e-ews-message.c
index 3612f84..b91aa3f 100644
--- a/src/server/e-ews-message.c
+++ b/src/server/e-ews-message.c
@@ -33,6 +33,27 @@
#include <libxml/tree.h>
#include "e-ews-message.h"
+static SoupBuffer *
+ews_soup_chunk_allocator (SoupMessage *message,
+ gsize max_len,
+ gpointer user_data)
+{
+ gsize len = 32768;
+ guchar *data;
+
+ data = g_new0 (guchar, len);
+
+ return soup_buffer_new_take (data, len);
+}
+
+void
+e_ews_message_attach_chunk_allocator (SoupMessage *message)
+{
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+
+ soup_message_set_chunk_allocator (message, ews_soup_chunk_allocator, NULL, NULL);
+}
+
static const gchar *
convert_server_version_to_string (EEwsServerVersion version)
{
@@ -84,6 +105,8 @@ e_ews_message_new_with_header (const gchar *uri,
return NULL;
}
+ e_ews_message_attach_chunk_allocator (SOUP_MESSAGE (msg));
+
soup_message_headers_append (
SOUP_MESSAGE (msg)->request_headers,
"Content-Type", "text/xml; charset=utf-8");
diff --git a/src/server/e-ews-message.h b/src/server/e-ews-message.h
index aca180d..f387c29 100644
--- a/src/server/e-ews-message.h
+++ b/src/server/e-ews-message.h
@@ -38,6 +38,8 @@ typedef enum {
E_EWS_EXCHANGE_FUTURE
} EEwsServerVersion;
+void e_ews_message_attach_chunk_allocator
+ (SoupMessage *message);
ESoapMessage * e_ews_message_new_with_header (const gchar *uri,
const gchar *impersonate_user,
const gchar *method_name,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]