OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/evolution-data-server?expand=0&rev=1
This commit is contained in:
commit
4592257b28
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
29
167566-camel-groupwise-summary.patch
Normal file
29
167566-camel-groupwise-summary.patch
Normal file
@ -0,0 +1,29 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-summary.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-summary.c,v
|
||||
retrieving revision 1.10
|
||||
retrieving revision 1.11
|
||||
diff -u -p -r1.10 -r1.11
|
||||
--- camel/providers/groupwise/camel-groupwise-summary.c 9 Nov 2005 14:23:44 -0000 1.10
|
||||
+++ camel/providers/groupwise/camel-groupwise-summary.c 20 Apr 2006 07:47:21 -0000 1.11
|
||||
@@ -330,15 +330,17 @@ groupwise_summary_clear (CamelFolderSumm
|
||||
CamelFolderChangeInfo *changes;
|
||||
CamelMessageInfo *info;
|
||||
int i, count;
|
||||
+ const char *uid;
|
||||
|
||||
changes = camel_folder_change_info_new ();
|
||||
count = camel_folder_summary_count (summary);
|
||||
for (i = 0; i < count; i++) {
|
||||
if (!(info = camel_folder_summary_index (summary, i)))
|
||||
continue;
|
||||
-
|
||||
- camel_folder_change_info_remove_uid (changes, camel_message_info_uid (info));
|
||||
- camel_folder_summary_remove(summary, info);
|
||||
+
|
||||
+ uid = camel_message_info_uid (info);
|
||||
+ camel_folder_change_info_remove_uid (changes, uid);
|
||||
+ camel_folder_summary_remove_uid (summary, uid);
|
||||
camel_message_info_free(info);
|
||||
}
|
||||
|
16
167640-camel-groupwise-store.patch
Normal file
16
167640-camel-groupwise-store.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
|
||||
retrieving revision 1.99
|
||||
diff -u -p -r1.99 camel-groupwise-store.c
|
||||
--- camel/providers/groupwise/camel-groupwise-store.c 6 Apr 2006 05:57:40 -0000 1.99
|
||||
+++ camel/providers/groupwise/camel-groupwise-store.c 20 Apr 2006 09:05:34 -0000
|
||||
@@ -224,7 +224,7 @@ groupwise_auth_loop (CamelService *servi
|
||||
}
|
||||
if (!E_IS_GW_CONNECTION(priv->cnc)) {
|
||||
errbuf = g_strdup_printf (_("Unable to authenticate "
|
||||
- "to GroupWise server."));
|
||||
+ "to GroupWise server. "));
|
||||
|
||||
camel_exception_clear (ex);
|
||||
} else
|
79
backend-timeout-fix.patch
Normal file
79
backend-timeout-fix.patch
Normal file
@ -0,0 +1,79 @@
|
||||
Index: servers/exchange/lib/e2k-context.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-context.c,v
|
||||
retrieving revision 1.6
|
||||
diff -u -p -r1.6 e2k-context.c
|
||||
--- servers/exchange/lib/e2k-context.c 13 Dec 2005 03:54:28 -0000 1.6
|
||||
+++ servers/exchange/lib/e2k-context.c 24 Feb 2006 21:58:51 -0000
|
||||
@@ -110,6 +110,9 @@ struct _E2kContextPrivate {
|
||||
#define E2K_CONTEXT_MIN_BATCH_SIZE 25
|
||||
#define E2K_CONTEXT_MAX_BATCH_SIZE 100
|
||||
|
||||
+/* For soup sync session timeout */
|
||||
+#define E2K_SOUP_SESSION_TIMEOUT 30
|
||||
+
|
||||
#ifdef E2K_DEBUG
|
||||
char *e2k_debug;
|
||||
int e2k_debug_level;
|
||||
@@ -357,6 +360,7 @@ e2k_context_set_auth (E2kContext *ctx, c
|
||||
const char *domain, const char *authmech,
|
||||
const char *password)
|
||||
{
|
||||
+ guint timeout = E2K_SOUP_SESSION_TIMEOUT;
|
||||
|
||||
g_return_if_fail (E2K_IS_CONTEXT (ctx));
|
||||
|
||||
@@ -381,8 +385,15 @@ e2k_context_set_auth (E2kContext *ctx, c
|
||||
if (ctx->priv->async_session)
|
||||
g_object_unref (ctx->priv->async_session);
|
||||
|
||||
+ /* Set a default timeout value of 30 seconds.
|
||||
+ FIXME: Make timeout configurable
|
||||
+ */
|
||||
+ if (g_getenv ("SOUP_SESSION_TIMEOUT"))
|
||||
+ timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
|
||||
+
|
||||
ctx->priv->session = soup_session_sync_new_with_options (
|
||||
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
|
||||
+ SOUP_SESSION_TIMEOUT, timeout,
|
||||
NULL);
|
||||
g_signal_connect (ctx->priv->session, "authenticate",
|
||||
G_CALLBACK (session_authenticate), ctx);
|
||||
Index: groupwise/e-gw-connection.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.c,v
|
||||
retrieving revision 1.138
|
||||
diff -u -p -r1.138 e-gw-connection.c
|
||||
--- servers/groupwise/e-gw-connection.c 23 Jan 2006 11:07:49 -0000 1.138
|
||||
+++ servers/groupwise/e-gw-connection.c 24 Feb 2006 21:58:51 -0000
|
||||
@@ -34,6 +34,8 @@
|
||||
#include "e-gw-message.h"
|
||||
#include "e-gw-filter.h"
|
||||
|
||||
+/* For soup sync session timeout */
|
||||
+#define GW_SOUP_SESSION_TIMEOUT 30
|
||||
|
||||
static GObjectClass *parent_class = NULL;
|
||||
static GHashTable *loaded_connections_permissions = NULL;
|
||||
@@ -355,13 +357,20 @@ static void
|
||||
e_gw_connection_init (EGwConnection *cnc, EGwConnectionClass *klass)
|
||||
{
|
||||
EGwConnectionPrivate *priv;
|
||||
+ guint timeout = GW_SOUP_SESSION_TIMEOUT;
|
||||
|
||||
/* allocate internal structure */
|
||||
priv = g_new0 (EGwConnectionPrivate, 1);
|
||||
cnc->priv = priv;
|
||||
|
||||
+ /* Set a default timeout value of 30 seconds.
|
||||
+ FIXME: Make timeout configurable
|
||||
+ */
|
||||
+ if (g_getenv ("SOUP_SESSION_TIMEOUT"))
|
||||
+ timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
|
||||
+
|
||||
/* create the SoupSession for this connection */
|
||||
- priv->soup_session = soup_session_sync_new ();
|
||||
+ priv->soup_session = soup_session_sync_new_with_options (SOUP_SESSION_TIMEOUT, timeout, NULL);
|
||||
priv->reauth_mutex = g_mutex_new ();
|
||||
priv->categories_by_id = NULL;
|
||||
priv->categories_by_name = NULL;
|
559
beagle-meta-summary.patch
Normal file
559
beagle-meta-summary.patch
Normal file
@ -0,0 +1,559 @@
|
||||
Index: camel/camel-file-utils.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/camel-file-utils.c,v
|
||||
retrieving revision 1.16
|
||||
diff -u -p -r1.16 camel-file-utils.c
|
||||
--- camel/camel-file-utils.c 10 Jan 2006 07:56:46 -0000 1.16
|
||||
+++ camel/camel-file-utils.c 12 Mar 2006 20:49:46 -0000
|
||||
@@ -316,6 +316,72 @@ camel_file_util_decode_string (FILE *in,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * camel_file_util_encode_fixed_string:
|
||||
+ * @out: file to output to
|
||||
+ * @str: value to output
|
||||
+ * @len: total-len of str to store
|
||||
+ *
|
||||
+ * Encode a normal string and save it in the output file.
|
||||
+ * Unlike @camel_file_util_encode_string, it pads the
|
||||
+ * @str with "NULL" bytes, if @len is > strlen(str)
|
||||
+ *
|
||||
+ * Return value: 0 on success, -1 on error.
|
||||
+ **/
|
||||
+int
|
||||
+camel_file_util_encode_fixed_string (FILE *out, const char *str, size_t len)
|
||||
+{
|
||||
+ char buf[len];
|
||||
+
|
||||
+ /* Don't allow empty strings to be written */
|
||||
+ if (len < 1)
|
||||
+ return -1;
|
||||
+
|
||||
+ /* Max size is 64K */
|
||||
+ if (len > 65536)
|
||||
+ len = 65536;
|
||||
+
|
||||
+ memset(buf, 0x00, len);
|
||||
+ g_strlcpy(buf, str, len);
|
||||
+
|
||||
+ if (fwrite (buf, len, 1, out) == len)
|
||||
+ return 0;
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/**
|
||||
+ * camel_file_util_decode_fixed_string:
|
||||
+ * @in: file to read from
|
||||
+ * @str: pointer to a variable to store the value in
|
||||
+ * @len: total-len to decode.
|
||||
+ *
|
||||
+ * Decode a normal string from the input file.
|
||||
+ *
|
||||
+ * Return value: 0 on success, -1 on error.
|
||||
+ **/
|
||||
+int
|
||||
+camel_file_util_decode_fixed_string (FILE *in, char **str, size_t len)
|
||||
+{
|
||||
+ register char *ret;
|
||||
+
|
||||
+ if (len > 65536) {
|
||||
+ *str = NULL;
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ret = g_malloc (len+1);
|
||||
+ if (len > 0 && fread (ret, len, 1, in) != 1) {
|
||||
+ g_free (ret);
|
||||
+ *str = NULL;
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ret[len] = 0;
|
||||
+ *str = ret;
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
/**
|
||||
* camel_file_util_safe_filename:
|
||||
Index: camel/camel-file-utils.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/camel-file-utils.h,v
|
||||
retrieving revision 1.11
|
||||
diff -u -p -r1.11 camel-file-utils.h
|
||||
--- camel/camel-file-utils.h 10 Jan 2006 07:56:46 -0000 1.11
|
||||
+++ camel/camel-file-utils.h 12 Mar 2006 20:49:46 -0000
|
||||
@@ -54,6 +54,9 @@ int camel_file_util_encode_size_t (FILE
|
||||
int camel_file_util_decode_size_t (FILE *in, size_t *);
|
||||
int camel_file_util_encode_string (FILE *out, const char *);
|
||||
int camel_file_util_decode_string (FILE *in, char **);
|
||||
+int camel_file_util_encode_fixed_string (FILE *out, const char *str, size_t len);
|
||||
+int camel_file_util_decode_fixed_string (FILE *in, char **str, size_t len);
|
||||
+
|
||||
|
||||
char *camel_file_util_safe_filename (const char *name);
|
||||
|
||||
Index: camel/camel-folder-summary.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/camel-folder-summary.c,v
|
||||
retrieving revision 1.147
|
||||
diff -u -p -r1.147 camel-folder-summary.c
|
||||
--- camel/camel-folder-summary.c 2 Feb 2006 05:38:25 -0000 1.147
|
||||
+++ camel/camel-folder-summary.c 12 Mar 2006 20:49:47 -0000
|
||||
@@ -78,6 +78,8 @@ extern int strdup_count, malloc_count, f
|
||||
|
||||
#define _PRIVATE(o) (((CamelFolderSummary *)(o))->priv)
|
||||
|
||||
+#define META_SUMMARY_SUFFIX_LEN 5 /* strlen("-meta") */
|
||||
+
|
||||
/* trivial lists, just because ... */
|
||||
struct _node {
|
||||
struct _node *next;
|
||||
@@ -88,12 +90,15 @@ static int my_list_size(struct _node **l
|
||||
|
||||
static int summary_header_load(CamelFolderSummary *, FILE *);
|
||||
static int summary_header_save(CamelFolderSummary *, FILE *);
|
||||
+static int summary_meta_header_load(CamelFolderSummary *, FILE *);
|
||||
+static int summary_meta_header_save(CamelFolderSummary *, FILE *);
|
||||
|
||||
static CamelMessageInfo * message_info_new_from_header(CamelFolderSummary *, struct _camel_header_raw *);
|
||||
static CamelMessageInfo * message_info_new_from_parser(CamelFolderSummary *, CamelMimeParser *);
|
||||
static CamelMessageInfo * message_info_new_from_message(CamelFolderSummary *s, CamelMimeMessage *msg);
|
||||
static CamelMessageInfo * message_info_load(CamelFolderSummary *, FILE *);
|
||||
static int message_info_save(CamelFolderSummary *, FILE *, CamelMessageInfo *);
|
||||
+static int meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *info);
|
||||
static void message_info_free(CamelFolderSummary *, CamelMessageInfo *);
|
||||
|
||||
static CamelMessageContentInfo * content_info_new_from_header(CamelFolderSummary *, struct _camel_header_raw *);
|
||||
@@ -146,6 +151,13 @@ camel_folder_summary_init (CamelFolderSu
|
||||
p->filter_lock = g_mutex_new();
|
||||
p->alloc_lock = g_mutex_new();
|
||||
p->ref_lock = g_mutex_new();
|
||||
+
|
||||
+ s->meta_summary = g_malloc0(sizeof(CamelFolderMetaSummary));
|
||||
+
|
||||
+ /* Default is 20, any implementor having UIDs that has length
|
||||
+ exceeding 20, has to override this value
|
||||
+ */
|
||||
+ s->meta_summary->uid_len = 20;
|
||||
}
|
||||
|
||||
static void free_o_name(void *key, void *value, void *data)
|
||||
@@ -193,6 +205,10 @@ camel_folder_summary_finalize (CamelObje
|
||||
camel_object_unref((CamelObject *)p->filter_stream);
|
||||
if (p->index)
|
||||
camel_object_unref((CamelObject *)p->index);
|
||||
+
|
||||
+ /* Freeing memory occupied by meta-summary-header */
|
||||
+ g_free(s->meta_summary->path);
|
||||
+ g_free(s->meta_summary);
|
||||
|
||||
g_mutex_free(p->summary_lock);
|
||||
g_mutex_free(p->io_lock);
|
||||
@@ -256,6 +272,9 @@ camel_folder_summary_set_filename(CamelF
|
||||
g_free(s->summary_path);
|
||||
s->summary_path = g_strdup(name);
|
||||
|
||||
+ g_free(s->meta_summary->path);
|
||||
+ s->meta_summary->path = g_strconcat(name, "-meta", NULL);
|
||||
+
|
||||
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
|
||||
}
|
||||
|
||||
@@ -544,7 +563,8 @@ camel_folder_summary_load(CamelFolderSum
|
||||
int i;
|
||||
CamelMessageInfo *mi;
|
||||
|
||||
- if (s->summary_path == NULL)
|
||||
+ if (s->summary_path == NULL ||
|
||||
+ s->meta_summary->path == NULL)
|
||||
return 0;
|
||||
|
||||
in = g_fopen(s->summary_path, "rb");
|
||||
@@ -630,14 +650,17 @@ int
|
||||
camel_folder_summary_save(CamelFolderSummary *s)
|
||||
{
|
||||
FILE *out;
|
||||
- int fd, i;
|
||||
+ FILE *out_meta;
|
||||
+ int fd, i, fd_meta;
|
||||
guint32 count;
|
||||
CamelMessageInfo *mi;
|
||||
char *path;
|
||||
+ char *path_meta;
|
||||
|
||||
g_assert(s->message_info_size >= sizeof(CamelMessageInfoBase));
|
||||
|
||||
- if (s->summary_path == NULL
|
||||
+ if (s->summary_path == NULL
|
||||
+ || s->meta_summary->path == NULL
|
||||
|| (s->flags & CAMEL_SUMMARY_DIRTY) == 0)
|
||||
return 0;
|
||||
|
||||
@@ -655,32 +678,65 @@ camel_folder_summary_save(CamelFolderSum
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ /* Meta summary code */
|
||||
+ /* This meta summary will be used by beagle in order to
|
||||
+ quickly pass through the actual summary file, which
|
||||
+ is quite time consuming otherwise.
|
||||
+ */
|
||||
+ /* FIXME: Merge meta-summary and summary */
|
||||
+ path_meta = alloca(strlen(s->meta_summary->path)+4);
|
||||
+ sprintf(path_meta, "%s~", s->meta_summary->path);
|
||||
+ fd_meta = g_open(path_meta, O_RDWR|O_CREAT|O_TRUNC|O_BINARY, 0600);
|
||||
+ if (fd_meta == -1)
|
||||
+ return -1;
|
||||
+ out_meta = fdopen(fd_meta, "wb");
|
||||
+ if (out_meta == NULL) {
|
||||
+ i = errno;
|
||||
+ g_unlink(path);
|
||||
+ g_unlink(path_meta);
|
||||
+ close(fd);
|
||||
+ close(fd_meta);
|
||||
+ errno = i;
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
io(printf("saving header\n"));
|
||||
|
||||
CAMEL_SUMMARY_LOCK(s, io_lock);
|
||||
|
||||
if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_save(s, out) == -1)
|
||||
goto exception;
|
||||
-
|
||||
+
|
||||
+ if (summary_meta_header_save(s, out_meta) == -1)
|
||||
+ goto exception;
|
||||
+
|
||||
/* now write out each message ... */
|
||||
/* we check ferorr when done for i/o errors */
|
||||
count = s->messages->len;
|
||||
for (i = 0; i < count; i++) {
|
||||
mi = s->messages->pdata[i];
|
||||
- if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->message_info_save (s, out, mi) == -1)
|
||||
+ if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->meta_message_info_save (s, out_meta, out, mi) == -1)
|
||||
goto exception;
|
||||
|
||||
+ if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->message_info_save (s, out, mi) == -1)
|
||||
+ goto exception;
|
||||
+
|
||||
if (s->build_content) {
|
||||
if (perform_content_info_save (s, out, ((CamelMessageInfoBase *)mi)->content) == -1)
|
||||
goto exception;
|
||||
}
|
||||
}
|
||||
|
||||
+ /* FIXME: Can't we use the above "fd" variables, instead of fileno()? */
|
||||
if (fflush (out) != 0 || fsync (fileno (out)) == -1)
|
||||
goto exception;
|
||||
|
||||
+ if (fflush (out_meta) != 0 || fsync (fileno (out_meta)) == -1)
|
||||
+ goto exception;
|
||||
+
|
||||
fclose (out);
|
||||
-
|
||||
+ fclose (out_meta);
|
||||
+
|
||||
CAMEL_SUMMARY_UNLOCK(s, io_lock);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
@@ -692,6 +748,13 @@ camel_folder_summary_save(CamelFolderSum
|
||||
errno = i;
|
||||
return -1;
|
||||
}
|
||||
+
|
||||
+ if (g_rename(path_meta, s->meta_summary->path) == -1) {
|
||||
+ i = errno;
|
||||
+ g_unlink(path_meta);
|
||||
+ errno = i;
|
||||
+ return -1;
|
||||
+ }
|
||||
|
||||
s->flags &= ~CAMEL_SUMMARY_DIRTY;
|
||||
return 0;
|
||||
@@ -701,10 +764,12 @@ camel_folder_summary_save(CamelFolderSum
|
||||
i = errno;
|
||||
|
||||
fclose (out);
|
||||
+ fclose (out_meta);
|
||||
|
||||
CAMEL_SUMMARY_UNLOCK(s, io_lock);
|
||||
|
||||
g_unlink (path);
|
||||
+ g_unlink (path_meta);
|
||||
errno = i;
|
||||
|
||||
return -1;
|
||||
@@ -725,20 +790,30 @@ int
|
||||
camel_folder_summary_header_load(CamelFolderSummary *s)
|
||||
{
|
||||
FILE *in;
|
||||
+ FILE *in_meta;
|
||||
int ret;
|
||||
|
||||
- if (s->summary_path == NULL)
|
||||
+ if (s->summary_path == NULL ||
|
||||
+ s->meta_summary->path == NULL)
|
||||
return 0;
|
||||
|
||||
in = g_fopen(s->summary_path, "rb");
|
||||
if (in == NULL)
|
||||
return -1;
|
||||
|
||||
+ in_meta = g_fopen(s->meta_summary->path, "rb");
|
||||
+ if (in_meta == NULL) {
|
||||
+ fclose(in);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
CAMEL_SUMMARY_LOCK(s, io_lock);
|
||||
ret = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_load(s, in);
|
||||
+ ret = summary_meta_header_load(s, in_meta);
|
||||
CAMEL_SUMMARY_UNLOCK(s, io_lock);
|
||||
|
||||
fclose(in);
|
||||
+ fclose(in_meta);
|
||||
s->flags &= ~CAMEL_SUMMARY_DIRTY;
|
||||
return ret;
|
||||
}
|
||||
@@ -1086,6 +1161,7 @@ camel_folder_summary_clear(CamelFolderSu
|
||||
g_hash_table_destroy(s->messages_uid);
|
||||
s->messages_uid = g_hash_table_new(g_str_hash, g_str_equal);
|
||||
s->flags |= CAMEL_SUMMARY_DIRTY;
|
||||
+ s->meta_summary->msg_expunged = TRUE;
|
||||
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
|
||||
}
|
||||
|
||||
@@ -1104,8 +1180,9 @@ camel_folder_summary_remove(CamelFolderS
|
||||
g_hash_table_remove(s->messages_uid, camel_message_info_uid(info));
|
||||
g_ptr_array_remove(s->messages, info);
|
||||
s->flags |= CAMEL_SUMMARY_DIRTY;
|
||||
+ s->meta_summary->msg_expunged = TRUE;
|
||||
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
|
||||
-
|
||||
+
|
||||
camel_message_info_free(info);
|
||||
}
|
||||
|
||||
@@ -1390,8 +1467,30 @@ my_list_size(struct _node **list)
|
||||
}
|
||||
|
||||
static int
|
||||
+summary_meta_header_load(CamelFolderSummary *s, FILE *in)
|
||||
+{
|
||||
+ if (!s->meta_summary->path)
|
||||
+ return -1;
|
||||
+
|
||||
+ fseek(in, 0, SEEK_SET);
|
||||
+
|
||||
+ io(printf("Loading meta-header\n"));
|
||||
+
|
||||
+ if (camel_file_util_decode_uint32(in, &s->meta_summary->major) == -1
|
||||
+ || camel_file_util_decode_uint32(in, &s->meta_summary->minor) == -1
|
||||
+ || camel_file_util_decode_uint32(in, &s->meta_summary->uid_len) == -1) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
summary_header_load(CamelFolderSummary *s, FILE *in)
|
||||
{
|
||||
+ if (!s->summary_path)
|
||||
+ return -1;
|
||||
+
|
||||
fseek(in, 0, SEEK_SET);
|
||||
|
||||
io(printf("Loading header\n"));
|
||||
@@ -1471,6 +1570,25 @@ summary_header_save(CamelFolderSummary *
|
||||
return camel_file_util_encode_fixed_int32(out, junk);
|
||||
}
|
||||
|
||||
+static int
|
||||
+summary_meta_header_save(CamelFolderSummary *s, FILE *out_meta)
|
||||
+{
|
||||
+ fseek(out_meta, 0, SEEK_SET);
|
||||
+
|
||||
+ /* Save meta-summary header */
|
||||
+ if (s->meta_summary->msg_expunged) {
|
||||
+ s->meta_summary->msg_expunged = FALSE;
|
||||
+ camel_file_util_encode_uint32(out_meta, ++s->meta_summary->major);
|
||||
+ camel_file_util_encode_uint32(out_meta, (s->meta_summary->minor=0));
|
||||
+ } else {
|
||||
+ camel_file_util_encode_uint32(out_meta, s->meta_summary->major);
|
||||
+ camel_file_util_encode_uint32(out_meta, ++s->meta_summary->minor);
|
||||
+ }
|
||||
+ camel_file_util_encode_uint32(out_meta, s->meta_summary->uid_len);
|
||||
+
|
||||
+ return ferror(out_meta);
|
||||
+}
|
||||
+
|
||||
/* are these even useful for anything??? */
|
||||
static CamelMessageInfo *
|
||||
message_info_new_from_parser(CamelFolderSummary *s, CamelMimeParser *mp)
|
||||
@@ -1774,6 +1892,25 @@ error:
|
||||
}
|
||||
|
||||
static int
|
||||
+meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *info)
|
||||
+{
|
||||
+ time_t timestamp;
|
||||
+ off_t offset;
|
||||
+ CamelMessageInfoBase *mi = (CamelMessageInfoBase *)info;
|
||||
+
|
||||
+ time (×tamp);
|
||||
+ offset = ftell (out);
|
||||
+ /* FIXME: errno check after ftell */
|
||||
+
|
||||
+ camel_file_util_encode_time_t(out_meta, timestamp);
|
||||
+ camel_file_util_encode_fixed_string(out_meta, camel_message_info_uid(mi), s->meta_summary->uid_len);
|
||||
+ camel_file_util_encode_uint32(out_meta, mi->flags);
|
||||
+ camel_file_util_encode_off_t(out_meta, offset);
|
||||
+
|
||||
+ return ferror(out);
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
|
||||
{
|
||||
guint32 count;
|
||||
@@ -3115,6 +3252,7 @@ camel_folder_summary_class_init (CamelFo
|
||||
klass->message_info_new_from_message = message_info_new_from_message;
|
||||
klass->message_info_load = message_info_load;
|
||||
klass->message_info_save = message_info_save;
|
||||
+ klass->meta_message_info_save = meta_message_info_save;
|
||||
klass->message_info_free = message_info_free;
|
||||
klass->message_info_clone = message_info_clone;
|
||||
|
||||
Index: camel/camel-folder-summary.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/camel-folder-summary.h,v
|
||||
retrieving revision 1.86
|
||||
diff -u -p -r1.86 camel-folder-summary.h
|
||||
--- camel/camel-folder-summary.h 31 Aug 2005 04:21:56 -0000 1.86
|
||||
+++ camel/camel-folder-summary.h 12 Mar 2006 20:49:47 -0000
|
||||
@@ -46,6 +46,8 @@ typedef struct _CamelFolderSummaryClass
|
||||
typedef struct _CamelMessageInfo CamelMessageInfo;
|
||||
typedef struct _CamelMessageInfoBase CamelMessageInfoBase;
|
||||
|
||||
+typedef struct _CamelFolderMetaSummary CamelFolderMetaSummary;
|
||||
+
|
||||
/* A tree of message content info structures
|
||||
describe the content structure of the message (if it has any) */
|
||||
struct _CamelMessageContentInfo {
|
||||
@@ -224,6 +226,7 @@ struct _CamelFolderSummary {
|
||||
GHashTable *messages_uid; /* CamelMessageInfo's by uid */
|
||||
|
||||
struct _CamelFolder *folder; /* parent folder, for events */
|
||||
+ struct _CamelFolderMetaSummary *meta_summary; /* Meta summary */
|
||||
};
|
||||
|
||||
struct _CamelFolderSummaryClass {
|
||||
@@ -238,7 +241,8 @@ struct _CamelFolderSummaryClass {
|
||||
CamelMessageInfo * (*message_info_new_from_parser)(CamelFolderSummary *, CamelMimeParser *);
|
||||
CamelMessageInfo * (*message_info_new_from_message)(CamelFolderSummary *, CamelMimeMessage *);
|
||||
CamelMessageInfo * (*message_info_load)(CamelFolderSummary *, FILE *);
|
||||
- int (*message_info_save)(CamelFolderSummary *, FILE *, CamelMessageInfo *);
|
||||
+ int (*message_info_save)(CamelFolderSummary *, FILE *, CamelMessageInfo *);
|
||||
+ int (*meta_message_info_save)(CamelFolderSummary *, FILE *, FILE *, CamelMessageInfo *);
|
||||
|
||||
void (*message_info_free)(CamelFolderSummary *, CamelMessageInfo *);
|
||||
CamelMessageInfo * (*message_info_clone)(CamelFolderSummary *, const CamelMessageInfo *);
|
||||
@@ -272,6 +276,15 @@ struct _CamelFolderSummaryClass {
|
||||
gboolean (*info_set_user_flag)(CamelMessageInfo *mi, const char *id, gboolean state);
|
||||
gboolean (*info_set_user_tag)(CamelMessageInfo *mi, const char *id, const char *val);
|
||||
gboolean (*info_set_flags)(CamelMessageInfo *mi, guint32 mask, guint32 set);
|
||||
+};
|
||||
+
|
||||
+/* Meta-summary info */
|
||||
+struct _CamelFolderMetaSummary {
|
||||
+ guint32 major; /* Major version of meta-summary */
|
||||
+ guint32 minor; /* Minor version of meta-summary */
|
||||
+ guint32 uid_len; /* Length of UID (for implementors to use) */
|
||||
+ gboolean msg_expunged; /* Whether any message is expunged or not */
|
||||
+ char *path; /* Path to meta-summary-file */
|
||||
};
|
||||
|
||||
CamelType camel_folder_summary_get_type (void);
|
||||
Index: camel/providers/groupwise/camel-groupwise-summary.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-summary.c,v
|
||||
retrieving revision 1.10
|
||||
diff -u -p -r1.10 camel-groupwise-summary.c
|
||||
--- camel/providers/groupwise/camel-groupwise-summary.c 9 Nov 2005 14:23:44 -0000 1.10
|
||||
+++ camel/providers/groupwise/camel-groupwise-summary.c 12 Mar 2006 20:49:47 -0000
|
||||
@@ -122,6 +122,9 @@ camel_groupwise_summary_init (CamelGroup
|
||||
/* subclasses need to set the right instance data sizes */
|
||||
s->message_info_size = sizeof(CamelGroupwiseMessageInfo);
|
||||
s->content_info_size = sizeof(CamelGroupwiseMessageContentInfo);
|
||||
+
|
||||
+ /* Meta-summary - Overriding UID len */
|
||||
+ s->meta_summary->uid_len = 2048;
|
||||
}
|
||||
|
||||
|
||||
Index: camel/providers/local/camel-mbox-summary.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/local/camel-mbox-summary.c,v
|
||||
retrieving revision 1.56
|
||||
diff -u -p -r1.56 camel-mbox-summary.c
|
||||
--- camel/providers/local/camel-mbox-summary.c 8 Dec 2005 11:28:47 -0000 1.56
|
||||
+++ camel/providers/local/camel-mbox-summary.c 12 Mar 2006 20:49:47 -0000
|
||||
@@ -54,6 +54,7 @@ static CamelMessageInfo * message_info_n
|
||||
static CamelMessageInfo * message_info_new_from_parser(CamelFolderSummary *, CamelMimeParser *);
|
||||
static CamelMessageInfo * message_info_load (CamelFolderSummary *, FILE *);
|
||||
static int message_info_save (CamelFolderSummary *, FILE *, CamelMessageInfo *);
|
||||
+static int meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *mi);
|
||||
/*static void message_info_free (CamelFolderSummary *, CamelMessageInfo *);*/
|
||||
|
||||
static char *mbox_summary_encode_x_evolution (CamelLocalSummary *cls, const CamelLocalMessageInfo *mi);
|
||||
@@ -153,6 +154,7 @@ camel_mbox_summary_class_init(CamelMboxS
|
||||
sklass->message_info_new_from_parser = message_info_new_from_parser;
|
||||
sklass->message_info_load = message_info_load;
|
||||
sklass->message_info_save = message_info_save;
|
||||
+ sklass->meta_message_info_save = meta_message_info_save;
|
||||
/*sklass->message_info_free = message_info_free;*/
|
||||
|
||||
sklass->info_set_user_flag = mbox_info_set_user_flag;
|
||||
@@ -378,6 +380,20 @@ message_info_load(CamelFolderSummary *s,
|
||||
error:
|
||||
camel_message_info_free(mi);
|
||||
return NULL;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *mi)
|
||||
+{
|
||||
+ CamelMboxMessageInfo *mbi = (CamelMboxMessageInfo *)mi;
|
||||
+
|
||||
+ io(printf("saving mbox message info\n"));
|
||||
+
|
||||
+ if (((CamelFolderSummaryClass *)camel_mbox_summary_parent)->meta_message_info_save(s, out_meta, out, mi) == -1
|
||||
+ || camel_file_util_encode_off_t(out_meta, mbi->frompos) == -1)
|
||||
+ return -1;
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
Index: camel/providers/local/camel-mbox-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/local/camel-mbox-store.c,v
|
||||
retrieving revision 1.44
|
||||
diff -u -p -r1.44 camel-mbox-store.c
|
||||
--- camel/providers/local/camel-mbox-store.c 10 Jan 2006 07:56:48 -0000 1.44
|
||||
+++ camel/providers/local/camel-mbox-store.c 13 Mar 2006 13:33:37 -0000
|
||||
@@ -99,7 +99,7 @@ camel_mbox_store_get_type(void)
|
||||
}
|
||||
|
||||
static char *extensions[] = {
|
||||
- ".msf", ".ev-summary", ".ibex.index", ".ibex.index.data", ".cmeta", ".lock"
|
||||
+ ".msf", ".ev-summary", ".ibex.index", ".ibex.index.data", ".cmeta", ".lock", ".ev-summary-meta"
|
||||
};
|
||||
|
||||
static gboolean
|
38
bgo-272307-evolution-clobbers-mail-address.patch
Normal file
38
bgo-272307-evolution-clobbers-mail-address.patch
Normal file
@ -0,0 +1,38 @@
|
||||
Index: camel/camel-mime-utils.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/camel-mime-utils.c,v
|
||||
retrieving revision 1.235
|
||||
diff -u -p -r1.235 camel-mime-utils.c
|
||||
--- camel/camel-mime-utils.c 23 Jan 2006 09:57:55 -0000 1.235
|
||||
+++ camel/camel-mime-utils.c 2 Mar 2006 10:14:36 -0000
|
||||
@@ -2247,7 +2247,7 @@ camel_content_type_unref(CamelContentTyp
|
||||
g_free(ct->type);
|
||||
g_free(ct->subtype);
|
||||
g_free(ct);
|
||||
- ct= NULL;
|
||||
+ ct = NULL;
|
||||
} else {
|
||||
ct->refcount--;
|
||||
}
|
||||
@@ -2449,7 +2449,7 @@ header_decode_mailbox(const char **in, c
|
||||
}
|
||||
}
|
||||
pre = header_decode_word (&inptr);
|
||||
- header_decode_lwsp(&inptr);
|
||||
+ /*header_decode_lwsp(&inptr);*/
|
||||
} else {
|
||||
w(g_warning("broken address? %s", *in));
|
||||
}
|
||||
@@ -2508,10 +2508,10 @@ header_decode_mailbox(const char **in, c
|
||||
g_string_truncate(name, 0);
|
||||
g_string_append(name, text);
|
||||
}
|
||||
- } else {
|
||||
+ }/* else {
|
||||
g_string_append(name, text?text:addr->str);
|
||||
g_string_truncate(addr, 0);
|
||||
- }
|
||||
+ }*/
|
||||
g_free(text);
|
||||
|
||||
/* or maybe that we've added up a bunch of broken bits to make an encoded word */
|
16
bgo-310433-eds-deny-rename-stdfolders.diff
Normal file
16
bgo-310433-eds-deny-rename-stdfolders.diff
Normal file
@ -0,0 +1,16 @@
|
||||
Index: servers/exchange/storage/exchange-hierarchy-webdav.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-hierarchy-webdav.c,v
|
||||
retrieving revision 1.11
|
||||
diff -u -p -r1.11 exchange-hierarchy-webdav.c
|
||||
--- servers/exchange/storage/exchange-hierarchy-webdav.c 25 Feb 2006 06:09:14 -0000 1.11
|
||||
+++ servers/exchange/storage/exchange-hierarchy-webdav.c 6 Apr 2006 13:50:35 -0000
|
||||
@@ -421,7 +421,7 @@ xfer_folder (ExchangeHierarchy *hier, EF
|
||||
* update folder size in case of rename.
|
||||
*/
|
||||
|
||||
- source_folder_name = strrchr (physical_uri + 1, '/');
|
||||
+ source_folder_name = strrchr (physical_uri, '/') + 1;
|
||||
source_parent = g_strndup (physical_uri,
|
||||
source_folder_name - physical_uri);
|
||||
if (!strcmp (e_folder_get_physical_uri (dest_parent), source_parent)) {
|
100
bgo-315976-INBOX-not-shown-when-override-namespace.patch
Normal file
100
bgo-315976-INBOX-not-shown-when-override-namespace.patch
Normal file
@ -0,0 +1,100 @@
|
||||
Index: camel/providers/imap/camel-imap-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-store.c,v
|
||||
retrieving revision 1.340.2.3
|
||||
diff -u -r1.340.2.3 camel/providers/imap/camel-imap-store.c
|
||||
--- camel/providers/imap/camel-imap-store.c 24 Apr 2006 15:18:25 -0000 1.340.2.3
|
||||
+++ camel/providers/imap/camel-imap-store.c 1 May 2006 21:14:40 -0000
|
||||
@@ -280,7 +280,7 @@
|
||||
imap_store->parameters = 0;
|
||||
if (camel_url_get_param (url, "use_lsub"))
|
||||
imap_store->parameters |= IMAP_PARAM_SUBSCRIPTIONS;
|
||||
- if (camel_url_get_param (url, "namespace")) {
|
||||
+ if (camel_url_get_param (url, "override_namespace") && camel_url_get_param (url, "namespace")) {
|
||||
imap_store->parameters |= IMAP_PARAM_OVERRIDE_NAMESPACE;
|
||||
g_free(imap_store->namespace);
|
||||
imap_store->namespace = g_strdup (camel_url_get_param (url, "namespace"));
|
||||
@@ -2618,7 +2618,10 @@
|
||||
|
||||
if (store->namespace && store->namespace[0]) {
|
||||
char *pattern;
|
||||
-
|
||||
+
|
||||
+ get_folders_sync(store, "INBOX", &m->ex);
|
||||
+ if (camel_exception_is_set(&m->ex))
|
||||
+ goto done;
|
||||
get_folders_sync(store, store->namespace, &m->ex);
|
||||
if (camel_exception_is_set(&m->ex))
|
||||
goto done;
|
||||
@@ -2697,6 +2700,10 @@
|
||||
|
||||
if (top[0] == 0) {
|
||||
if (imap_store->namespace && imap_store->namespace[0]) {
|
||||
+ get_folders_sync(imap_store, "INBOX", ex);
|
||||
+ if (camel_exception_is_set(ex))
|
||||
+ goto fail;
|
||||
+
|
||||
i = strlen(imap_store->namespace)-1;
|
||||
pattern = g_alloca(i+5);
|
||||
strcpy(pattern, imap_store->namespace);
|
||||
@@ -2711,7 +2718,7 @@
|
||||
}
|
||||
} else {
|
||||
char *name;
|
||||
-
|
||||
+
|
||||
name = camel_imap_store_summary_full_from_path(imap_store->summary, top);
|
||||
if (name == NULL)
|
||||
name = camel_imap_store_summary_path_to_full(imap_store->summary, top, imap_store->dir_sep);
|
||||
@@ -2748,6 +2755,7 @@
|
||||
guint32 flags, CamelException *ex)
|
||||
{
|
||||
CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
|
||||
+ gboolean include_inbox = FALSE;
|
||||
CamelFolderInfo *fi;
|
||||
GPtrArray *folders;
|
||||
char *pattern, *name;
|
||||
@@ -2760,12 +2768,14 @@
|
||||
|
||||
folders = g_ptr_array_new ();
|
||||
|
||||
- if (top == NULL)
|
||||
+ if (top == NULL || top[0] == '\0') {
|
||||
+ include_inbox = TRUE;
|
||||
top = "";
|
||||
+ }
|
||||
|
||||
/* get starting point */
|
||||
if (top[0] == 0) {
|
||||
- if (imap_store->namespace) {
|
||||
+ if (imap_store->namespace && imap_store->namespace[0]) {
|
||||
name = g_strdup(imap_store->summary->namespace->full_name);
|
||||
top = imap_store->summary->namespace->path;
|
||||
} else
|
||||
@@ -2789,9 +2799,10 @@
|
||||
|
||||
if (si == NULL)
|
||||
continue;
|
||||
-
|
||||
+
|
||||
if ((!strcmp(name, camel_imap_store_info_full_name(imap_store->summary, si))
|
||||
- || imap_match_pattern(imap_store->dir_sep, pattern, camel_imap_store_info_full_name(imap_store->summary, si)))
|
||||
+ || imap_match_pattern(imap_store->dir_sep, pattern, camel_imap_store_info_full_name(imap_store->summary, si))
|
||||
+ || (include_inbox && !g_ascii_strcasecmp (camel_imap_store_info_full_name(imap_store->summary, si), "INBOX")))
|
||||
&& ((imap_store->parameters & IMAP_PARAM_SUBSCRIPTIONS) == 0
|
||||
|| (flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED) == 0
|
||||
|| (si->flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED))) {
|
||||
@@ -2804,11 +2815,11 @@
|
||||
it. See create folder */
|
||||
if (fi->flags & CAMEL_FOLDER_NOINFERIORS)
|
||||
fi->flags = (fi->flags & ~CAMEL_FOLDER_NOINFERIORS) | CAMEL_FOLDER_NOCHILDREN;
|
||||
-
|
||||
+
|
||||
/* blah, this gets lost somewhere, i can't be bothered finding out why */
|
||||
if (!g_ascii_strcasecmp(fi->full_name, "inbox"))
|
||||
fi->flags = (fi->flags & ~CAMEL_FOLDER_TYPE_MASK) | CAMEL_FOLDER_TYPE_INBOX;
|
||||
-
|
||||
+
|
||||
if (si->flags & CAMEL_FOLDER_NOSELECT) {
|
||||
CamelURL *url = camel_url_new(fi->uri, NULL);
|
||||
|
104
bgo-321797.patch
Normal file
104
bgo-321797.patch
Normal file
@ -0,0 +1,104 @@
|
||||
Index: camel/providers/imap/camel-imap-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-store.c,v
|
||||
retrieving revision 1.340.2.2
|
||||
diff -u -r1.340.2.2 camel-imap-store.c
|
||||
--- camel/providers/imap/camel-imap-store.c 20 Apr 2006 21:12:15 -0000 1.340.2.2
|
||||
+++ camel/providers/imap/camel-imap-store.c 21 Apr 2006 18:56:51 -0000
|
||||
@@ -978,16 +978,11 @@
|
||||
camel_exception_clear (ex);
|
||||
ai = camel_getaddrinfo(service->url->host, port, &hints, ex);
|
||||
}
|
||||
+
|
||||
if (ai == NULL)
|
||||
return FALSE;
|
||||
|
||||
- if (!(ret = connect_to_server (service, ai, mode, ex)) && mode == MODE_SSL) {
|
||||
- camel_exception_clear (ex);
|
||||
- ret = connect_to_server (service, ai, MODE_TLS, ex);
|
||||
- } else if (!ret && mode == MODE_TLS) {
|
||||
- camel_exception_clear (ex);
|
||||
- ret = connect_to_server (service, ai, MODE_CLEAR, ex);
|
||||
- }
|
||||
+ ret = connect_to_server (service, ai, mode, ex);
|
||||
|
||||
camel_freeaddrinfo (ai);
|
||||
|
||||
Index: camel/providers/imap4/camel-imap4-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap4/camel-imap4-store.c,v
|
||||
retrieving revision 1.56.2.3
|
||||
diff -u -r1.56.2.3 camel-imap4-store.c
|
||||
--- camel/providers/imap4/camel-imap4-store.c 21 Apr 2006 15:42:20 -0000 1.56.2.3
|
||||
+++ camel/providers/imap4/camel-imap4-store.c 21 Apr 2006 18:56:51 -0000
|
||||
@@ -383,16 +383,11 @@
|
||||
camel_exception_clear (ex);
|
||||
ai = camel_getaddrinfo (service->url->host, port, &hints, ex);
|
||||
}
|
||||
+
|
||||
if (ai == NULL)
|
||||
return FALSE;
|
||||
|
||||
- if (!(ret = connect_to_server (engine, ai, mode, ex)) && mode == MODE_SSL) {
|
||||
- camel_exception_clear (ex);
|
||||
- ret = connect_to_server (engine, ai, MODE_TLS, ex);
|
||||
- } else if (!ret && mode == MODE_TLS) {
|
||||
- camel_exception_clear (ex);
|
||||
- ret = connect_to_server (engine, ai, MODE_CLEAR, ex);
|
||||
- }
|
||||
+ ret = connect_to_server (engine, ai, mode, ex);
|
||||
|
||||
camel_freeaddrinfo (ai);
|
||||
|
||||
Index: camel/providers/pop3/camel-pop3-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/pop3/camel-pop3-store.c,v
|
||||
retrieving revision 1.124
|
||||
diff -u -r1.124 camel-pop3-store.c
|
||||
--- camel/providers/pop3/camel-pop3-store.c 31 Aug 2005 04:26:04 -0000 1.124
|
||||
+++ camel/providers/pop3/camel-pop3-store.c 21 Apr 2006 18:56:51 -0000
|
||||
@@ -324,16 +324,11 @@
|
||||
camel_exception_clear (ex);
|
||||
ai = camel_getaddrinfo(service->url->host, port, &hints, ex);
|
||||
}
|
||||
+
|
||||
if (ai == NULL)
|
||||
return FALSE;
|
||||
|
||||
- if (!(ret = connect_to_server (service, ai, mode, ex)) && mode == MODE_SSL) {
|
||||
- camel_exception_clear (ex);
|
||||
- ret = connect_to_server (service, ai, MODE_TLS, ex);
|
||||
- } else if (!ret && mode == MODE_TLS) {
|
||||
- camel_exception_clear (ex);
|
||||
- ret = connect_to_server (service, ai, MODE_CLEAR, ex);
|
||||
- }
|
||||
+ ret = connect_to_server (service, ai, mode, ex);
|
||||
|
||||
camel_freeaddrinfo (ai);
|
||||
|
||||
Index: camel/providers/smtp/camel-smtp-transport.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/smtp/camel-smtp-transport.c,v
|
||||
retrieving revision 1.169.6.2
|
||||
diff -u -r1.169.6.2 camel-smtp-transport.c
|
||||
--- camel/providers/smtp/camel-smtp-transport.c 18 Apr 2006 20:59:29 -0000 1.169.6.2
|
||||
+++ camel/providers/smtp/camel-smtp-transport.c 21 Apr 2006 18:56:51 -0000
|
||||
@@ -431,16 +431,11 @@
|
||||
camel_exception_clear (ex);
|
||||
ai = camel_getaddrinfo(service->url->host, port, &hints, ex);
|
||||
}
|
||||
+
|
||||
if (ai == NULL)
|
||||
return FALSE;
|
||||
|
||||
- if (!(ret = connect_to_server (service, ai, mode, ex)) && mode == MODE_SSL) {
|
||||
- camel_exception_clear (ex);
|
||||
- ret = connect_to_server (service, ai, MODE_TLS, ex);
|
||||
- } else if (!ret && mode == MODE_TLS) {
|
||||
- camel_exception_clear (ex);
|
||||
- ret = connect_to_server (service, ai, MODE_CLEAR, ex);
|
||||
- }
|
||||
+ ret = connect_to_server (service, ai, mode, ex);
|
||||
|
||||
camel_freeaddrinfo (ai);
|
||||
|
13
bgo-323275-eds-crash-at-startup.patch
Normal file
13
bgo-323275-eds-crash-at-startup.patch
Normal file
@ -0,0 +1,13 @@
|
||||
--- calendar/libedata-cal/e-cal-backend-cache.c.orig 2006-01-19 09:41:58.000000000 +0100
|
||||
+++ calendar/libedata-cal/e-cal-backend-cache.c 2006-03-23 15:24:54.421930564 +0100
|
||||
@@ -235,7 +235,9 @@ e_cal_backend_cache_get_type (void)
|
||||
0,
|
||||
(GInstanceInitFunc) e_cal_backend_cache_init,
|
||||
};
|
||||
- type = g_type_register_static (E_TYPE_FILE_CACHE, "ECalBackendCache", &info, 0);
|
||||
+ /* Check if the type is already registered */
|
||||
+ if (!(type = g_type_from_name ("ECalBackendCache")))
|
||||
+ type = g_type_register_static (E_TYPE_FILE_CACHE, "ECalBackendCache", &info, 0);
|
||||
}
|
||||
g_static_mutex_unlock (®istering);
|
||||
|
144
bgo-329371-eds-fix-full-username-email-format.patch
Normal file
144
bgo-329371-eds-fix-full-username-email-format.patch
Normal file
@ -0,0 +1,144 @@
|
||||
Index: servers/exchange/lib/e2k-uri.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-uri.c,v
|
||||
retrieving revision 1.5
|
||||
diff -u -p -r1.5 e2k-uri.c
|
||||
--- servers/exchange/lib/e2k-uri.c 27 Jan 2006 14:16:06 -0000 1.5
|
||||
+++ servers/exchange/lib/e2k-uri.c 18 Apr 2006 10:00:10 -0000
|
||||
@@ -109,14 +109,6 @@ e2k_uri_new (const char *uri_string)
|
||||
*backslash = '\0';
|
||||
uri->user = g_strdup (backslash + 1);
|
||||
}
|
||||
- else {
|
||||
- /* if backslash is not there check for @ */
|
||||
- user_at = strchr (uri->user, '@');
|
||||
- if (user_at) {
|
||||
- *user_at = '\0';
|
||||
- uri->domain = g_strdup (user_at + 1);
|
||||
- }
|
||||
- }
|
||||
} else
|
||||
uri->user = uri->passwd = uri->domain = NULL;
|
||||
|
||||
Index: servers/exchange/lib/e2k-validate.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-validate.h,v
|
||||
retrieving revision 1.3
|
||||
diff -u -p -r1.3 e2k-validate.h
|
||||
--- servers/exchange/lib/e2k-validate.h 1 Jul 2005 05:43:21 -0000 1.3
|
||||
+++ servers/exchange/lib/e2k-validate.h 18 Apr 2006 10:00:47 -0000
|
||||
@@ -36,7 +36,7 @@ typedef enum {
|
||||
E2K_AUTOCONFIG_FAILED
|
||||
} E2kAutoconfigResult;
|
||||
|
||||
-gboolean e2k_validate_user (const char *owa_url, char *user, ExchangeParams *exchange_params, gboolean *remember_password, E2kAutoconfigResult *result);
|
||||
+gboolean e2k_validate_user (const char *owa_url, char **user, ExchangeParams *exchange_params, gboolean *remember_password, E2kAutoconfigResult *result);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
Index: servers/exchange/lib/e2k-autoconfig.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-autoconfig.c,v
|
||||
retrieving revision 1.14
|
||||
diff -u -p -r1.14 e2k-autoconfig.c
|
||||
--- servers/exchange/lib/e2k-autoconfig.c 6 Mar 2006 06:00:25 -0000 1.14
|
||||
+++ servers/exchange/lib/e2k-autoconfig.c 18 Apr 2006 10:02:36 -0000
|
||||
@@ -1002,6 +1002,7 @@ set_account_uri_string (E2kAutoconfig *a
|
||||
g_string_append (uri, ";mailbox=");
|
||||
e2k_uri_append_encoded (uri, mailbox, FALSE, ";?");
|
||||
}
|
||||
+ printf ("set account uri string: mailbox = %s \n", mailbox);
|
||||
g_string_append (uri, ";owa_path=/");
|
||||
e2k_uri_append_encoded (uri, path, FALSE, ";?");
|
||||
g_free (path);
|
||||
@@ -1505,6 +1506,7 @@ validate (const char *owa_url, char *use
|
||||
*mailbox++ = '\0';
|
||||
|
||||
exchange_params->mailbox = g_strdup (mailbox);
|
||||
+ printf ("validate: mailbox = %s \n", exchange_params->mailbox);
|
||||
exchange_params->owa_path = g_strdup_printf ("%s%s", "/", path);
|
||||
g_free (path);
|
||||
exchange_params->host = g_strdup (ac->pf_server);
|
||||
@@ -1619,14 +1621,20 @@ validate (const char *owa_url, char *use
|
||||
}
|
||||
|
||||
gboolean
|
||||
-e2k_validate_user (const char *owa_url, char *user,
|
||||
+e2k_validate_user (const char *owa_url, char **user,
|
||||
ExchangeParams *exchange_params, gboolean *remember_password,
|
||||
E2kAutoconfigResult *result)
|
||||
{
|
||||
gboolean valid = FALSE, remember=FALSE;
|
||||
char *key, *password, *prompt;
|
||||
+ char *username;
|
||||
+ gchar **usernames;
|
||||
+ int try = 0;
|
||||
|
||||
- key = g_strdup_printf ("%s//%s@%s/", "exchange:", user, owa_url); /* FIXME */
|
||||
+try_auth_again:
|
||||
+ username = g_strdup (*user);
|
||||
+
|
||||
+ key = g_strdup_printf ("%s//%s@%s/", "exchange:", username, owa_url); /* FIXME */
|
||||
password = e_passwords_get_password ("Exchange", key);
|
||||
if (password) {
|
||||
/* This can be the case, where user presses authenticate button and
|
||||
@@ -1636,7 +1644,7 @@ e2k_validate_user (const char *owa_url,
|
||||
e_passwords_forget_password ("Exchange", key);
|
||||
}
|
||||
|
||||
- prompt = g_strdup_printf (_("Enter password for %s"), user);
|
||||
+ prompt = g_strdup_printf (_("Enter password for %s"), username);
|
||||
password = e_passwords_ask_password (_("Enter password"),
|
||||
"Exchange", key, prompt,
|
||||
E_PASSWORDS_REMEMBER_FOREVER|E_PASSWORDS_SECRET,
|
||||
@@ -1644,10 +1652,11 @@ e2k_validate_user (const char *owa_url,
|
||||
g_free (prompt);
|
||||
if (!password) {
|
||||
g_free (key);
|
||||
+ g_free (username);
|
||||
return valid;
|
||||
}
|
||||
|
||||
- valid = validate (owa_url, user, password, exchange_params, result);
|
||||
+ valid = validate (owa_url, username, password, exchange_params, result);
|
||||
if (valid) {
|
||||
/* generate the proper key once the host name
|
||||
* is read and remember password temporarily,
|
||||
@@ -1659,18 +1668,35 @@ e2k_validate_user (const char *owa_url,
|
||||
g_free (key);
|
||||
if (exchange_params->is_ntlm)
|
||||
key = g_strdup_printf ("exchange://%s;auth=NTLM@%s/",
|
||||
- user, exchange_params->host);
|
||||
+ username, exchange_params->host);
|
||||
else
|
||||
- key = g_strdup_printf ("exchange://%s@%s/", user, exchange_params->host);
|
||||
+ key = g_strdup_printf ("exchange://%s@%s/", username, exchange_params->host);
|
||||
e_passwords_add_password (key, password);
|
||||
e_passwords_remember_password ("Exchange", key);
|
||||
}
|
||||
else {
|
||||
+ if (try == 0) {
|
||||
+ /* Check for name as e-mail id and try once again
|
||||
+ * extracing username from e-mail id.
|
||||
+ */
|
||||
+ usernames = g_strsplit (*user, "@", 2);
|
||||
+ if (usernames && usernames[0] && usernames[1]) {
|
||||
+ username = g_strdup (usernames[0]);
|
||||
+ g_strfreev (usernames);
|
||||
+ try ++;
|
||||
+ memset(*user, 0, strlen(*user));
|
||||
+ g_free (*user);
|
||||
+ *user = g_strdup (username);
|
||||
+ g_free (username);
|
||||
+ goto try_auth_again;
|
||||
+ }
|
||||
+ }
|
||||
/* if validation failed*/
|
||||
e_passwords_forget_password ("Exchange", key);
|
||||
}
|
||||
|
||||
g_free (key);
|
||||
g_free (password);
|
||||
+ g_free (username);
|
||||
return valid;
|
||||
}
|
40
bgo-331146-eds-crash-at-startup.patch
Normal file
40
bgo-331146-eds-crash-at-startup.patch
Normal file
@ -0,0 +1,40 @@
|
||||
--- calendar/backends/file/e-cal-backend-file.c.orig 2006-02-28 13:16:32.000000000 +0100
|
||||
+++ calendar/backends/file/e-cal-backend-file.c 2006-03-23 15:15:18.582703795 +0100
|
||||
@@ -399,13 +399,17 @@ check_dup_uid (ECalBackendFile *cbfile,
|
||||
{
|
||||
ECalBackendFilePrivate *priv;
|
||||
ECalBackendFileObject *obj_data;
|
||||
- const char *uid;
|
||||
+ const char *uid = NULL;
|
||||
char *new_uid;
|
||||
|
||||
priv = cbfile->priv;
|
||||
|
||||
e_cal_component_get_uid (comp, &uid);
|
||||
-
|
||||
+ if (!uid) {
|
||||
+ g_warning ("Checking for duplicate uid, the component does not have a valid UID skipping it\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
obj_data = g_hash_table_lookup (priv->comp_uid_hash, uid);
|
||||
if (!obj_data)
|
||||
return; /* Everything is fine */
|
||||
@@ -447,11 +451,16 @@ add_component (ECalBackendFile *cbfile,
|
||||
{
|
||||
ECalBackendFilePrivate *priv;
|
||||
ECalBackendFileObject *obj_data;
|
||||
- const char *uid;
|
||||
+ const char *uid = NULL;
|
||||
|
||||
priv = cbfile->priv;
|
||||
|
||||
e_cal_component_get_uid (comp, &uid);
|
||||
+ if (!uid) {
|
||||
+ g_warning ("The component does not have a valid UID skipping it\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
obj_data = g_hash_table_lookup (priv->comp_uid_hash, uid);
|
||||
if (e_cal_component_is_instance (comp)) {
|
||||
const char *rid;
|
12
bgo-334000-unexpected-dialog-creating-appt.patch
Normal file
12
bgo-334000-unexpected-dialog-creating-appt.patch
Normal file
@ -0,0 +1,12 @@
|
||||
--- calendar/libedata-cal/e-cal-backend.c.orig 2006-03-04 10:57:00.000000000 +0100
|
||||
+++ calendar/libedata-cal/e-cal-backend.c 2006-03-23 15:34:00.889158434 +0100
|
||||
@@ -1319,7 +1319,8 @@ e_cal_backend_notify_object_removed (ECa
|
||||
if (object == NULL) {
|
||||
/* if object == NULL, it means the object has been completely
|
||||
removed from the backend */
|
||||
- e_data_cal_view_notify_objects_removed_1 (query, id);
|
||||
+ if (e_data_cal_view_object_matches (query, old_object))
|
||||
+ e_data_cal_view_notify_objects_removed_1 (query, id);
|
||||
} else
|
||||
match_query_and_notify (query, old_object, object);
|
||||
|
12
bgo-334807-eds-crasher.patch
Normal file
12
bgo-334807-eds-crasher.patch
Normal file
@ -0,0 +1,12 @@
|
||||
--- libedataserver/e-source-group.c.orig 2005-12-08 08:59:00.000000000 +0100
|
||||
+++ libedataserver/e-source-group.c 2006-03-23 15:19:38.363378094 +0100
|
||||
@@ -216,6 +216,9 @@ e_source_group_new_from_xmldoc (xmlDocPt
|
||||
goto done;
|
||||
|
||||
new = g_object_new (e_source_group_get_type (), NULL);
|
||||
+ if (!new)
|
||||
+ goto done;
|
||||
+
|
||||
new->priv->uid = g_strdup (uid);
|
||||
|
||||
e_source_group_set_name (new, name);
|
15
bgo-369168-buffer-overrun.patch
Normal file
15
bgo-369168-buffer-overrun.patch
Normal file
@ -0,0 +1,15 @@
|
||||
--- camel/camel-mime-filter-crlf.c 2005-08-31 06:21:56.000000000 +0200
|
||||
+++ camel/camel-mime-filter-crlf.c.new 2006-11-06 07:40:33.000000000 +0100
|
||||
@@ -97,7 +97,11 @@ filter (CamelMimeFilter *f, char *in, si
|
||||
*outptr++ = *inptr++;
|
||||
}
|
||||
} else {
|
||||
- camel_mime_filter_set_size (f, len, FALSE);
|
||||
+ /* Output can "grow" by one byte if crlf->saw_cr was set as
|
||||
+ * a carry-over from the previous invocation. This will happen
|
||||
+ * in practice, as the input is processed in arbitrarily-sized
|
||||
+ * blocks. */
|
||||
+ camel_mime_filter_set_size (f, len+1, FALSE);
|
||||
|
||||
outptr = f->outbuf;
|
||||
while (inptr < inend) {
|
89
bnc-137357-newly-configured-gw-dont-work.patch
Normal file
89
bnc-137357-newly-configured-gw-dont-work.patch
Normal file
@ -0,0 +1,89 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
|
||||
retrieving revision 1.94
|
||||
diff -u -p -r1.94 camel-groupwise-store.c
|
||||
--- camel/providers/groupwise/camel-groupwise-store.c 13 Mar 2006 06:31:04 -0000 1.94
|
||||
+++ camel/providers/groupwise/camel-groupwise-store.c 13 Mar 2006 09:42:28 -0000
|
||||
@@ -169,9 +169,9 @@ groupwise_compare_folder_name (gconstpoi
|
||||
static gboolean
|
||||
groupwise_auth_loop (CamelService *service, CamelException *ex)
|
||||
{
|
||||
- CamelGroupwiseStore *groupwise_store = CAMEL_GROUPWISE_STORE (service);
|
||||
CamelSession *session = camel_service_get_session (service);
|
||||
CamelStore *store = CAMEL_STORE (service);
|
||||
+ CamelGroupwiseStore *groupwise_store = CAMEL_GROUPWISE_STORE (store);
|
||||
CamelGroupwiseStorePrivate *priv = groupwise_store->priv;
|
||||
char *errbuf = NULL;
|
||||
gboolean authenticated = FALSE;
|
||||
@@ -183,6 +183,7 @@ groupwise_auth_loop (CamelService *servi
|
||||
else
|
||||
uri = g_strconcat ("http://", priv->server_name, ":", priv->port, "/soap", NULL);
|
||||
service->url->passwd = NULL;
|
||||
+
|
||||
|
||||
while (!authenticated) {
|
||||
if (errbuf) {
|
||||
@@ -192,6 +193,7 @@ groupwise_auth_loop (CamelService *servi
|
||||
service->url->passwd = NULL;
|
||||
}
|
||||
|
||||
+
|
||||
if (!service->url->passwd && !(store->flags & CAMEL_STORE_PROXY)) {
|
||||
char *prompt;
|
||||
|
||||
@@ -268,10 +270,9 @@ groupwise_connect (CamelService *service
|
||||
d("in groupwise store connect\n");
|
||||
|
||||
/* if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
|
||||
- (service->status == CAMEL_SERVICE_DISCONNECTED))
|
||||
+ (service->status == CAMEL_SERVICE_DISCONNECTED))
|
||||
return FALSE; */
|
||||
-
|
||||
- if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL)
|
||||
+ if (service->status == CAMEL_SERVICE_DISCONNECTED)
|
||||
return FALSE;
|
||||
|
||||
if (!priv) {
|
||||
@@ -293,7 +294,9 @@ groupwise_connect (CamelService *service
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+
|
||||
service->status = CAMEL_SERVICE_CONNECTED;
|
||||
+ ((CamelOfflineStore *) store)->state = CAMEL_OFFLINE_STORE_NETWORK_AVAIL;
|
||||
|
||||
if (!e_gw_connection_get_version (priv->cnc)) {
|
||||
camel_session_alert_user(session,
|
||||
@@ -1110,6 +1113,7 @@ groupwise_get_folder_info (CamelStore *s
|
||||
if (top && groupwise_is_system_folder (top))
|
||||
return groupwise_build_folder_info (groupwise_store, NULL, top );
|
||||
|
||||
+
|
||||
/*
|
||||
* Thanks to Michael, for his cached folders implementation in IMAP
|
||||
* is used as is here.
|
||||
@@ -1141,6 +1145,12 @@ groupwise_get_folder_info (CamelStore *s
|
||||
|
||||
CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
if ((groupwise_store->list_loaded == FALSE) && check_for_connection((CamelService *)store, ex)) {
|
||||
+ if (!priv->cnc) {
|
||||
+ if (groupwise_connect ((CamelService *)store, ex)) {
|
||||
+ g_warning ("Could connect!!!\n");
|
||||
+ } else
|
||||
+ g_warning ("Could not connect..failure connecting\n");
|
||||
+ }
|
||||
if (camel_groupwise_store_connected ((CamelGroupwiseStore *)store, ex)) {
|
||||
groupwise_store->list_loaded = TRUE;
|
||||
groupwise_folders_sync (groupwise_store, ex);
|
||||
@@ -1416,8 +1426,9 @@ gboolean
|
||||
camel_groupwise_store_connected (CamelGroupwiseStore *store, CamelException *ex)
|
||||
{
|
||||
if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_AVAIL
|
||||
- && camel_service_connect ((CamelService *)store, ex))
|
||||
+ && camel_service_connect ((CamelService *)store, ex)) {
|
||||
return TRUE;
|
||||
+ }
|
||||
/*Not online, so return FALSE*/
|
||||
return FALSE;
|
||||
}
|
73
bnc-138047-password-passphrase-msg-inconsistency.patch
Normal file
73
bnc-138047-password-passphrase-msg-inconsistency.patch
Normal file
@ -0,0 +1,73 @@
|
||||
Index: camel/camel-gpg-context.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/camel-gpg-context.c,v
|
||||
retrieving revision 1.77
|
||||
diff -u -p -r1.77 camel-gpg-context.c
|
||||
--- camel/camel-gpg-context.c 2 Feb 2006 08:37:46 -0000 1.77
|
||||
+++ camel/camel-gpg-context.c 16 Mar 2006 05:04:39 -0000
|
||||
@@ -811,7 +811,7 @@ gpg_ctx_parse_status (struct _GpgCtx *gp
|
||||
"user: \"%s\""), name);
|
||||
}
|
||||
|
||||
- if ((passwd = camel_session_get_password (gpg->session, NULL, NULL, prompt, gpg->need_id, CAMEL_SESSION_PASSWORD_SECRET, ex)) && !gpg->utf8) {
|
||||
+ if ((passwd = camel_session_get_password (gpg->session, NULL, NULL, prompt, gpg->need_id, CAMEL_SESSION_PASSWORD_SECRET|CAMEL_SESSION_PASSPHRASE, ex)) && !gpg->utf8) {
|
||||
char *opasswd = passwd;
|
||||
|
||||
if ((passwd = g_locale_to_utf8 (passwd, -1, &nread, &nwritten, NULL))) {
|
||||
Index: camel/camel-session.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/camel-session.h,v
|
||||
retrieving revision 1.53
|
||||
diff -u -p -r1.53 camel-session.h
|
||||
--- camel/camel-session.h 22 Dec 2005 01:48:30 -0000 1.53
|
||||
+++ camel/camel-session.h 16 Mar 2006 05:04:39 -0000
|
||||
@@ -56,6 +56,7 @@ enum {
|
||||
CAMEL_SESSION_PASSWORD_REPROMPT = 1 << 0,
|
||||
CAMEL_SESSION_PASSWORD_SECRET = 1 << 2,
|
||||
CAMEL_SESSION_PASSWORD_STATIC = 1 << 3,
|
||||
+ CAMEL_SESSION_PASSPHRASE = 1 << 4,
|
||||
};
|
||||
|
||||
struct _CamelSession
|
||||
Index: libedataserverui/e-passwords.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/e-passwords.c,v
|
||||
retrieving revision 1.31
|
||||
diff -u -p -r1.31 e-passwords.c
|
||||
--- libedataserverui/e-passwords.c 24 Feb 2006 21:00:47 -0000 1.31
|
||||
+++ libedataserverui/e-passwords.c 16 Mar 2006 05:04:42 -0000
|
||||
@@ -467,9 +739,16 @@ ep_ask_password(EPassMsg *msg)
|
||||
/* static password, shouldn't be remembered between sessions,
|
||||
but will be remembered within the session beyond our control */
|
||||
if (type != E_PASSWORDS_REMEMBER_NEVER) {
|
||||
- msg->check = gtk_check_button_new_with_mnemonic(type == E_PASSWORDS_REMEMBER_FOREVER
|
||||
- ? _("_Remember this password")
|
||||
- : _("_Remember this password for the remainder of this session"));
|
||||
+ if (msg->flags & E_PASSWORDS_PASSPHRASE) {
|
||||
+ msg->check = gtk_check_button_new_with_mnemonic(type == E_PASSWORDS_REMEMBER_FOREVER
|
||||
+ ? _("_Remember this passphrase")
|
||||
+ : _("_Remember this passphrase for the remainder of this session"));
|
||||
+ } else {
|
||||
+ msg->check = gtk_check_button_new_with_mnemonic(type == E_PASSWORDS_REMEMBER_FOREVER
|
||||
+ ? _("_Remember this password")
|
||||
+ : _("_Remember this password for the remainder of this session"));
|
||||
+
|
||||
+ }
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (msg->check), *msg->remember);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), msg->check, TRUE, FALSE, 3);
|
||||
if ((msg->flags & E_PASSWORDS_DISABLE_REMEMBER))
|
||||
Index: libedataserverui/e-passwords.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/e-passwords.h,v
|
||||
retrieving revision 1.12
|
||||
diff -u -p -r1.12 e-passwords.h
|
||||
--- libedataserverui/e-passwords.h 31 Aug 2005 04:26:10 -0000 1.12
|
||||
+++ libedataserverui/e-passwords.h 16 Mar 2006 05:04:42 -0000
|
||||
@@ -58,6 +58,7 @@ typedef enum {
|
||||
E_PASSWORDS_REPROMPT = 1<<9,
|
||||
E_PASSWORDS_ONLINE = 1<<10, /* only ask if we're online */
|
||||
E_PASSWORDS_DISABLE_REMEMBER = 1<<11, /* disable the 'remember password' checkbox */
|
||||
+ E_PASSWORDS_PASSPHRASE = 1<<12, /* We are asking a passphrase */
|
||||
} EPasswordsRememberType;
|
||||
|
||||
char * e_passwords_ask_password (const char *title,
|
217
bnc-152062-evolution-wont-show-attachment.patch
Normal file
217
bnc-152062-evolution-wont-show-attachment.patch
Normal file
@ -0,0 +1,217 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.119
|
||||
diff -u -p -r1.119 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 15 Mar 2006 08:45:26 -0000 1.119
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 16 Mar 2006 11:29:35 -0000
|
||||
@@ -49,6 +49,8 @@
|
||||
#include <e-gw-connection.h>
|
||||
#include <e-gw-item.h>
|
||||
|
||||
+#include <libsoup/soup-misc.h>
|
||||
+
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@@ -58,6 +60,7 @@
|
||||
#define REMOVE_JUNK_ENTRY -1
|
||||
#define JUNK_FOLDER "Junk Mail"
|
||||
#define READ_CURSOR_MAX_IDS 500
|
||||
+#define MAX_ATTACHMENT_SIZE 1*1024*1024 /*In bytes*/
|
||||
|
||||
static CamelOfflineFolderClass *parent_class = NULL;
|
||||
|
||||
@@ -1455,7 +1458,7 @@ groupwise_folder_item_to_msg( CamelFolde
|
||||
const char *uid = NULL;
|
||||
gboolean is_text_html = FALSE;
|
||||
gboolean is_text_html_embed = FALSE;
|
||||
-
|
||||
+ gboolean is_base64_encoded = FALSE;
|
||||
|
||||
uid = e_gw_item_get_id(item);
|
||||
cnc = cnc_lookup (priv);
|
||||
@@ -1541,6 +1544,7 @@ groupwise_folder_item_to_msg( CamelFolde
|
||||
int len = 0;
|
||||
CamelMimePart *part;
|
||||
EGwItem *temp_item;
|
||||
+ is_base64_encoded = FALSE;
|
||||
|
||||
if (attach->contentid && (is_text_html_embed != TRUE))
|
||||
is_text_html_embed = TRUE;
|
||||
@@ -1568,9 +1572,36 @@ groupwise_folder_item_to_msg( CamelFolde
|
||||
}
|
||||
g_object_unref (temp_item);
|
||||
} else {
|
||||
- status = e_gw_connection_get_attachment (cnc,
|
||||
- attach->id, 0, -1,
|
||||
- (const char **)&attachment, &len);
|
||||
+ g_print ("%d:%d\n", attach->size, MAX_ATTACHMENT_SIZE);
|
||||
+ if (attach->size > MAX_ATTACHMENT_SIZE) {
|
||||
+ long count = 0;
|
||||
+ int i, t_len=0, offset=0, t_offset=0;
|
||||
+ char *t_attach = NULL;
|
||||
+ GString *gstr = g_string_new (NULL);
|
||||
+
|
||||
+ count = (attach->size)/(1024*1024);
|
||||
+ count++;
|
||||
+ len = 0;
|
||||
+ for (i = 0; i<count; i++) {
|
||||
+ status = e_gw_connection_get_attachment_base64 (cnc,
|
||||
+ attach->id, t_offset, MAX_ATTACHMENT_SIZE,
|
||||
+ (const char **)&t_attach, &t_len, &offset);
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
+ gstr = g_string_append (gstr, t_attach);
|
||||
+ t_offset = offset;
|
||||
+ g_free (t_attach);
|
||||
+ t_attach = NULL;
|
||||
+ t_len = 0;
|
||||
+ }
|
||||
+ }
|
||||
+ attachment = soup_base64_decode (gstr->str, &len);
|
||||
+ g_string_free (gstr, TRUE);
|
||||
+ is_base64_encoded = FALSE;
|
||||
+ } else {
|
||||
+ status = e_gw_connection_get_attachment (cnc,
|
||||
+ attach->id, 0, -1,
|
||||
+ (const char **)&attachment, &len);
|
||||
+ }
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
g_warning ("Could not get attachment\n");
|
||||
continue;
|
||||
@@ -1613,6 +1644,8 @@ groupwise_folder_item_to_msg( CamelFolde
|
||||
|
||||
//camel_mime_part_set_filename(part, g_strdup(attach->name));
|
||||
if (attach->contentType) {
|
||||
+ if (is_base64_encoded)
|
||||
+ camel_mime_part_set_encoding (part, CAMEL_TRANSFER_ENCODING_BASE64);
|
||||
camel_mime_part_set_content(part, attachment, len, attach->contentType);
|
||||
camel_content_type_set_param (((CamelDataWrapper *) part)->mime_type, "name", attach->name);
|
||||
} else
|
||||
@@ -1872,15 +1905,16 @@ groupwise_transfer_messages_to (CamelFol
|
||||
if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
if (delete_originals)
|
||||
camel_folder_delete_message(source, uids->pdata[index]);
|
||||
- /* Refresh the destination folder, if its not refreshed already */
|
||||
- if (gw_store->current_folder != destination ||
|
||||
- camel_folder_summary_count (destination->summary) == count)
|
||||
- camel_folder_refresh_info (destination, ex);
|
||||
} else {
|
||||
g_warning ("Warning!! Could not move item : %s\n", (char *)uids->pdata[index]);
|
||||
}
|
||||
index ++;
|
||||
}
|
||||
+ /* Refresh the destination folder, if its not refreshed already */
|
||||
+ if (gw_store->current_folder != destination ||
|
||||
+ camel_folder_summary_count (destination->summary) == count)
|
||||
+ camel_folder_refresh_info (destination, ex);
|
||||
+
|
||||
camel_folder_summary_touch (source->summary);
|
||||
camel_folder_summary_touch (destination->summary);
|
||||
|
||||
Index: servers/groupwise/e-gw-connection.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.c,v
|
||||
retrieving revision 1.139
|
||||
diff -u -p -r1.139 e-gw-connection.c
|
||||
--- servers/groupwise/e-gw-connection.c 15 Mar 2006 06:08:24 -0000 1.139
|
||||
+++ servers/groupwise/e-gw-connection.c 17 Mar 2006 05:22:38 -0000
|
||||
@@ -148,6 +148,7 @@ e_gw_connection_parse_response_status (S
|
||||
case 53530: return E_GW_CONNECTION_STATUS_OTHER;
|
||||
/* FIXME: 58652 should be changed with an enum.*/
|
||||
case 58652: return 58652;
|
||||
+ case 59922: return 59922; /*Very big attachment, get in chunks*/
|
||||
/* FIXME: map all error codes */
|
||||
}
|
||||
|
||||
@@ -2571,6 +2572,75 @@ e_gw_connection_get_attachment (EGwConne
|
||||
return E_GW_CONNECTION_STATUS_OK;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ *
|
||||
+ */
|
||||
+EGwConnectionStatus
|
||||
+e_gw_connection_get_attachment_base64 (EGwConnection *cnc, const char *id, int offset, int length, const char **attachment, int *attach_length, int *offset_r)
|
||||
+{
|
||||
+
|
||||
+ SoupSoapMessage *msg;
|
||||
+ SoupSoapResponse *response;
|
||||
+ EGwConnectionStatus status;
|
||||
+ SoupSoapParameter *param ;
|
||||
+ char *buffer = NULL, *buf_length = NULL, *o_return = NULL;
|
||||
+
|
||||
+ g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_OBJECT);
|
||||
+
|
||||
+ /* build the SOAP message */
|
||||
+ msg = e_gw_message_new_with_header (cnc->priv->uri, cnc->priv->session_id, "getAttachmentRequest");
|
||||
+ if (!msg) {
|
||||
+ g_warning (G_STRLOC ": Could not build SOAP message");
|
||||
+ return E_GW_CONNECTION_STATUS_UNKNOWN;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ e_gw_message_write_string_parameter (msg, "id", NULL, id);
|
||||
+ e_gw_message_write_int_parameter (msg, "offset", NULL, offset);
|
||||
+ e_gw_message_write_int_parameter (msg, "length", NULL, length);
|
||||
+
|
||||
+ e_gw_message_write_footer (msg);
|
||||
+
|
||||
+ /* send message to server */
|
||||
+ response = e_gw_connection_send_message (cnc, msg);
|
||||
+ if (!response) {
|
||||
+ g_object_unref (msg);
|
||||
+ return E_GW_CONNECTION_STATUS_NO_RESPONSE;
|
||||
+ }
|
||||
+
|
||||
+ status = e_gw_connection_parse_response_status (response);
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
+ if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
+ reauthenticate (cnc);
|
||||
+ g_object_unref (response);
|
||||
+ g_object_unref (msg);
|
||||
+ return status;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ param = soup_soap_response_get_first_parameter_by_name (response, "part") ;
|
||||
+ if (param) {
|
||||
+ buf_length = soup_soap_parameter_get_property (param, "length") ;
|
||||
+ o_return = soup_soap_parameter_get_property (param, "offset") ;
|
||||
+ buffer = soup_soap_parameter_get_string_value (param) ;
|
||||
+ }
|
||||
+
|
||||
+ if (buffer && buf_length) {
|
||||
+ int len = atoi (buf_length) ;
|
||||
+ *attachment = g_strdup (buffer);
|
||||
+ *attach_length = len;
|
||||
+ *offset_r = atoi (o_return);
|
||||
+ }
|
||||
+
|
||||
+ /* free memory */
|
||||
+ g_free (buffer) ;
|
||||
+ g_free (buf_length) ;
|
||||
+ g_free (o_return);
|
||||
+ g_object_unref (response);
|
||||
+ g_object_unref (msg);
|
||||
+
|
||||
+ return E_GW_CONNECTION_STATUS_OK;
|
||||
+}
|
||||
|
||||
EGwConnectionStatus
|
||||
e_gw_connection_add_item (EGwConnection *cnc, const char *container, const char *id)
|
||||
Index: servers/groupwise/e-gw-connection.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.h,v
|
||||
retrieving revision 1.68
|
||||
diff -u -p -r1.68 e-gw-connection.h
|
||||
--- servers/groupwise/e-gw-connection.h 31 Aug 2005 04:26:07 -0000 1.68
|
||||
+++ servers/groupwise/e-gw-connection.h 17 Mar 2006 05:22:38 -0000
|
||||
@@ -144,6 +144,7 @@ EGwConnectionStatus e_gw_connection_get_
|
||||
EGwConnectionStatus e_gw_connection_create_folder(EGwConnection *cnc, const char *parent_name,const char *folder_name, char **container_id) ;
|
||||
EGwConnectionStatus
|
||||
e_gw_connection_get_attachment (EGwConnection *cnc, const char *id, int offset, int length, const char **attachment, int *attach_length) ;
|
||||
+EGwConnectionStatus e_gw_connection_get_attachment_base64 (EGwConnection *cnc, const char *id, int offset, int length, const char **attachment, int *attach_length, int *offset_r);
|
||||
EGwConnectionStatus e_gw_connection_add_item (EGwConnection *cnc, const char *container, const char *id) ;
|
||||
EGwConnectionStatus e_gw_connection_add_items (EGwConnection *cnc, const char *container, GList *item_ids) ;
|
||||
EGwConnectionStatus e_gw_connection_move_item (EGwConnection *cnc, const char *id, const char *dest_container_id, const char *from_container_id);
|
19
bnc-152070-eds-crash.patch
Normal file
19
bnc-152070-eds-crash.patch
Normal file
@ -0,0 +1,19 @@
|
||||
Index: addressbook/backends/groupwise/e-book-backend-groupwise.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c,v
|
||||
retrieving revision 1.74
|
||||
diff -u -p -r1.74 e-book-backend-groupwise.c
|
||||
--- addressbook/backends/groupwise/e-book-backend-groupwise.c 10 Apr 2006 11:02:36 -0000 1.74
|
||||
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 16 Apr 2006 07:30:20 -0000
|
||||
@@ -2334,6 +2334,11 @@ find_book_view (EBookBackendGroupwise *e
|
||||
return NULL;
|
||||
EIterator *iter = e_list_get_iterator (views);
|
||||
EDataBookView *rv = NULL;
|
||||
+
|
||||
+ if (!iter) {
|
||||
+ g_object_unref (views);
|
||||
+ return NULL;
|
||||
+ }
|
||||
|
||||
if (e_iterator_is_valid (iter)) {
|
||||
/* just always use the first book view */
|
154
bnc-152355-mails-doesnt-show-gw.patch
Normal file
154
bnc-152355-mails-doesnt-show-gw.patch
Normal file
@ -0,0 +1,154 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.117
|
||||
diff -u -p -r1.117 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 11 Mar 2006 12:27:42 -0000 1.117
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 13 Mar 2006 06:27:53 -0000
|
||||
@@ -881,7 +881,8 @@ groupwise_refresh_info(CamelFolder *fold
|
||||
/* We probably could not get the messages the first time. (get_folder) failed???!
|
||||
* so do a get_folder again. And hope that it works
|
||||
*/
|
||||
- gw_store_reload_folder ((CamelStore *)gw_store, folder->name, 0, ex);
|
||||
+ g_print("Reloading folder...something wrong with the summary....\n");
|
||||
+ gw_store_reload_folder (gw_store, folder, 0, ex);
|
||||
}
|
||||
}
|
||||
|
||||
Index: camel-groupwise-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
|
||||
retrieving revision 1.93
|
||||
diff -u -p -r1.93 camel-groupwise-store.c
|
||||
--- camel/providers/groupwise/camel-groupwise-store.c 11 Mar 2006 09:52:29 -0000 1.93
|
||||
+++ camel/providers/groupwise/camel-groupwise-store.c 13 Mar 2006 06:27:54 -0000
|
||||
@@ -674,8 +674,112 @@ groupwise_get_folder (CamelStore *store,
|
||||
}
|
||||
|
||||
void
|
||||
-gw_store_reload_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex)
|
||||
+gw_store_reload_folder (CamelGroupwiseStore *gw_store, CamelFolder *folder, guint32 flags, CamelException *ex)
|
||||
{
|
||||
+ CamelGroupwiseStorePrivate *priv = gw_store->priv;
|
||||
+ CamelGroupwiseSummary *summary;
|
||||
+ char *container_id, *folder_dir, *storage_path;
|
||||
+ EGwConnectionStatus status;
|
||||
+ GList *list = NULL;
|
||||
+ gboolean done = FALSE;
|
||||
+ const char *position = E_GW_CURSOR_POSITION_END;
|
||||
+ int count = 0, cursor, summary_count = 0;
|
||||
+ CamelStoreInfo *si = NULL;
|
||||
+ guint total;
|
||||
+
|
||||
+ camel_exception_clear (ex);
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+
|
||||
+ if (!camel_groupwise_store_connected (gw_store, ex)) {
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!E_IS_GW_CONNECTION( priv->cnc)) {
|
||||
+ if (!groupwise_connect (CAMEL_SERVICE((CamelStore*)gw_store), ex)) {
|
||||
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE, _("Authentication failed"));
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ container_id = g_strdup (g_hash_table_lookup (priv->name_hash, folder->full_name));
|
||||
+
|
||||
+ si = camel_store_summary_path ((CamelStoreSummary *)gw_store->summary, folder->name);
|
||||
+ if (si) {
|
||||
+ total = si->total;
|
||||
+ camel_store_summary_info_free ((CamelStoreSummary *)(gw_store)->summary, si);
|
||||
+ }
|
||||
+
|
||||
+ summary = (CamelGroupwiseSummary *) folder->summary;
|
||||
+ camel_folder_summary_clear (folder->summary);
|
||||
+ camel_folder_summary_save (folder->summary);
|
||||
+
|
||||
+ summary_count = camel_folder_summary_count (folder->summary);
|
||||
+ if(!summary_count || !summary->time_string) {
|
||||
+ d(g_print ("\n\n** %s **: Summary missing???? Reloading summary....\n\n", folder->name);)
|
||||
+
|
||||
+ status = e_gw_connection_create_cursor (priv->cnc, container_id,
|
||||
+ "peek id recipient attachments distribution subject status options priority startDate created delivered size",
|
||||
+ NULL,
|
||||
+ &cursor);
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+ g_free (container_id);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ camel_operation_start (NULL, _("Fetching summary information for new messages in %s"), folder->name);
|
||||
+
|
||||
+ while (!done) {
|
||||
+ status = e_gw_connection_read_cursor (priv->cnc, container_id,
|
||||
+ cursor, FALSE,
|
||||
+ CURSOR_ITEM_LIMIT, position, &list);
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+ e_gw_connection_destroy_cursor (priv->cnc, container_id, cursor);
|
||||
+ camel_folder_summary_clear (folder->summary);
|
||||
+ camel_folder_summary_save (folder->summary);
|
||||
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
|
||||
+ camel_operation_end (NULL);
|
||||
+ camel_object_unref (folder);
|
||||
+ g_free (container_id);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ count += g_list_length (list);
|
||||
+
|
||||
+ if (total > 0)
|
||||
+ camel_operation_progress (NULL, (100*count)/total);
|
||||
+ gw_update_summary (folder, list, ex);
|
||||
+
|
||||
+ if (!list)
|
||||
+ done = TRUE;
|
||||
+ g_list_foreach (list, (GFunc)g_object_unref, NULL);
|
||||
+ g_list_free (list);
|
||||
+ list = NULL;
|
||||
+ position = E_GW_CURSOR_POSITION_CURRENT;
|
||||
+ }
|
||||
+
|
||||
+ e_gw_connection_destroy_cursor (priv->cnc, container_id, cursor);
|
||||
+
|
||||
+ camel_operation_end (NULL);
|
||||
+ }
|
||||
+
|
||||
+ if (done) {
|
||||
+ if (summary->time_string)
|
||||
+ g_free (summary->time_string);
|
||||
+ summary->time_string = g_strdup (e_gw_connection_get_server_time (priv->cnc));
|
||||
+ }
|
||||
+
|
||||
+ camel_folder_summary_save (folder->summary);
|
||||
+
|
||||
+ gw_store->current_folder = folder;
|
||||
+
|
||||
+ g_free (container_id);
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+ return;
|
||||
}
|
||||
|
||||
CamelFolderInfo *
|
||||
Index: camel/providers/groupwise/camel-groupwise-store.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.h,v
|
||||
retrieving revision 1.12
|
||||
diff -u -p -r1.12 camel-groupwise-store.h
|
||||
--- camel/providers/groupwise/camel-groupwise-store.h 11 Mar 2006 09:52:29 -0000 1.12
|
||||
+++ camel/providers/groupwise/camel-groupwise-store.h 13 Mar 2006 06:27:54 -0000
|
||||
@@ -82,7 +82,7 @@ char *storage_path_lookup (CamelGroupwis
|
||||
const char *groupwise_base_url_lookup (CamelGroupwiseStorePrivate *priv);
|
||||
CamelFolderInfo * create_junk_folder (CamelStore *store);
|
||||
gboolean camel_groupwise_store_connected (CamelGroupwiseStore *store, CamelException *ex);
|
||||
-void gw_store_reload_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
|
||||
+void gw_store_reload_folder (CamelGroupwiseStore *store, CamelFolder *folder, guint32 flags, CamelException *ex);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
120
bnc-153522-evo-doesnt-update-msg-status-workaround.patch
Normal file
120
bnc-153522-evo-doesnt-update-msg-status-workaround.patch
Normal file
@ -0,0 +1,120 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.120
|
||||
diff -u -p -r1.120 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 17 Mar 2006 05:42:00 -0000 1.120
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 20 Mar 2006 08:12:51 -0000
|
||||
@@ -1006,7 +1006,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
if (gw_store->current_folder != folder) {
|
||||
gw_store->current_folder = folder;
|
||||
}
|
||||
-
|
||||
+
|
||||
if (list) {
|
||||
gw_update_cache (folder, list, ex, FALSE);
|
||||
}
|
||||
@@ -1051,6 +1051,7 @@ void
|
||||
gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean uid_flag)
|
||||
{
|
||||
CamelGroupwiseMessageInfo *mi = NULL;
|
||||
+ CamelMessageInfo *pmi = NULL;
|
||||
CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
|
||||
CamelGroupwiseStorePrivate *priv = gw_store->priv;
|
||||
@@ -1105,13 +1105,6 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
id = (char *) item_list->data;
|
||||
|
||||
camel_operation_progress (NULL, (100*i)/total_items);
|
||||
- cache_stream = camel_data_cache_get (gw_folder->cache, "cache", id, ex);
|
||||
- if (cache_stream) {
|
||||
- camel_object_unref (cache_stream);
|
||||
- cache_stream = NULL;
|
||||
- i++;
|
||||
- continue;
|
||||
- }
|
||||
|
||||
status = e_gw_connection_get_item (cnc, container_id, id, "peek default distribution recipient message attachments subject notification created recipientStatus status size", &item);
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
@@ -1121,9 +1114,16 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
|
||||
/************************ First populate summary *************************/
|
||||
mi = NULL;
|
||||
- mi = (CamelGroupwiseMessageInfo *)camel_folder_summary_uid (folder->summary, id);
|
||||
- if (mi) {
|
||||
+ pmi = NULL;
|
||||
+ pmi = camel_folder_summary_uid (folder->summary, id);
|
||||
+ if (pmi) {
|
||||
exists = TRUE;
|
||||
+ camel_message_info_ref (pmi);
|
||||
+ mi = (CamelGroupwiseMessageInfo *)camel_message_info_clone(pmi);
|
||||
+ /*
|
||||
+ pmi->summary = folder->summary;
|
||||
+ mi->info.summary = folder->summary;
|
||||
+ */
|
||||
}
|
||||
|
||||
if (!exists) {
|
||||
@@ -1223,18 +1223,26 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
mi->info.date_sent = mi->info.date_received = actual_time;
|
||||
}
|
||||
}
|
||||
+#if 0
|
||||
|
||||
if (exists)
|
||||
g_free(mi->info.uid);
|
||||
mi->info.uid = g_strdup(e_gw_item_get_id(item));
|
||||
- if (!exists)
|
||||
+#endif
|
||||
+ if (!exists) {
|
||||
+ mi->info.uid = g_strdup (e_gw_item_get_id(item));
|
||||
mi->info.size = e_gw_item_get_mail_size (item);
|
||||
- if (!exists)
|
||||
mi->info.subject = camel_pstring_strdup(e_gw_item_get_subject(item));
|
||||
+ }
|
||||
|
||||
if (exists) {
|
||||
- camel_folder_change_info_change_uid (changes, e_gw_item_get_id (item));
|
||||
- camel_message_info_free (&mi->info);
|
||||
+ /*
|
||||
+ camel_folder_change_info_change_uid (changes, mi->info.uid);
|
||||
+ camel_message_info_free (&mi->info);*/
|
||||
+ camel_folder_summary_remove(folder->summary, pmi);
|
||||
+ camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
|
||||
+ camel_folder_change_info_add_uid (changes, mi->info.uid);
|
||||
+ camel_message_info_free (pmi);
|
||||
} else {
|
||||
camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
|
||||
camel_folder_change_info_add_uid (changes, mi->info.uid);
|
||||
@@ -1248,11 +1256,11 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
if (!strcmp (folder->full_name, "Sent Items"))
|
||||
exists = FALSE;
|
||||
/******************** Begine Caching ************************/
|
||||
- mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
|
||||
- if (mail_msg)
|
||||
- camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
|
||||
/* add to cache if its a new message*/
|
||||
if (!exists) {
|
||||
+ mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
|
||||
+ if (mail_msg)
|
||||
+ camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
|
||||
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", id, NULL))) {
|
||||
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) mail_msg, cache_stream) == -1 || camel_stream_flush (cache_stream) == -1)
|
||||
@@ -1678,7 +1686,7 @@ static void
|
||||
gw_update_all_items (CamelFolder *folder, GList *item_list, CamelException *ex)
|
||||
{
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
|
||||
- GPtrArray *summary = camel_folder_get_summary (folder);
|
||||
+ GPtrArray *summary = NULL;
|
||||
int index = 0;
|
||||
GList *temp;
|
||||
CamelFolderChangeInfo *changes = NULL;
|
||||
@@ -1687,6 +1695,7 @@ gw_update_all_items (CamelFolder *folder
|
||||
|
||||
item_list = g_list_reverse (item_list);
|
||||
|
||||
+ summary = camel_folder_get_summary (folder);
|
||||
/*item_ids : List of ids from the summary*/
|
||||
while (index < summary->len) {
|
||||
info = g_ptr_array_index (summary, index);
|
16
bnc-153522-evolution-doesnt-update-message-status.patch
Normal file
16
bnc-153522-evolution-doesnt-update-message-status.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: servers/groupwise/e-gw-connection.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.c,v
|
||||
retrieving revision 1.138
|
||||
diff -u -p -r1.138 e-gw-connection.c
|
||||
--- servers/groupwise/e-gw-connection.c 23 Jan 2006 11:07:49 -0000 1.138
|
||||
+++ servers/groupwise/e-gw-connection.c 15 Mar 2006 05:48:03 -0000
|
||||
@@ -2390,7 +2390,7 @@ EGwConnectionStatus e_gw_connection_get_
|
||||
g_object_unref (msg);
|
||||
return E_GW_CONNECTION_STATUS_INVALID_RESPONSE;
|
||||
}
|
||||
- if (start_date && *start_date && !strcmp (message_list, "New")) {
|
||||
+ if (start_date && *start_date && (((!strcmp (message_list, "New")) || (!strcmp (message_list, "Modified"))))) {
|
||||
subparam = soup_soap_response_get_first_parameter_by_name (response, "startDate");
|
||||
if (subparam) {
|
||||
char *date;
|
167
bnc-156584-evo-wont-shutdown.patch
Normal file
167
bnc-156584-evo-wont-shutdown.patch
Normal file
@ -0,0 +1,167 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.116
|
||||
diff -u -p -r1.116 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 11 Mar 2006 09:52:29 -0000 1.116
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 11 Mar 2006 12:25:51 -0000
|
||||
@@ -81,7 +81,7 @@ static void groupwise_transfer_messages_
|
||||
static int gw_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args);
|
||||
void convert_to_calendar (EGwItem *item, char **str, int *len);
|
||||
static void convert_to_task (EGwItem *item, char **str, int *len);
|
||||
-static void gw_update_all_items ( CamelFolder *folder, GSList *item_list, CamelException *ex);
|
||||
+static void gw_update_all_items ( CamelFolder *folder, GList *item_list, CamelException *ex);
|
||||
static void groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item);
|
||||
static void groupwise_populate_msg_body_from_item (EGwConnection *cnc, CamelMultipart *multipart, EGwItem *item, char *body);
|
||||
static void groupwise_msg_set_recipient_list (CamelMimeMessage *msg, EGwItem *item);
|
||||
@@ -586,7 +586,7 @@ groupwise_sync (CamelFolder *folder, gbo
|
||||
CamelGroupwiseStorePrivate *priv = gw_store->priv;
|
||||
CamelMessageInfo *info = NULL;
|
||||
CamelGroupwiseMessageInfo *gw_info;
|
||||
- GList *read_items = NULL, *deleted_items = NULL;
|
||||
+ GList *read_items = NULL;
|
||||
flags_diff_t diff;
|
||||
const char *container_id;
|
||||
EGwConnectionStatus status;
|
||||
@@ -761,7 +761,7 @@ update_update (CamelSession *session, Ca
|
||||
EGwConnectionStatus status;
|
||||
CamelException *ex = NULL;
|
||||
|
||||
- GList *item_list;
|
||||
+ GList *item_list, *items_full_list = NULL, *last_element=NULL;
|
||||
int cursor = 0;
|
||||
const char *position = E_GW_CURSOR_POSITION_END;
|
||||
gboolean done;
|
||||
@@ -787,16 +787,48 @@ update_update (CamelSession *session, Ca
|
||||
if (!item_list || g_list_length (item_list) == 0)
|
||||
done = TRUE;
|
||||
else {
|
||||
- for (;item_list; item_list = g_list_next (item_list)) {
|
||||
- m->slist = g_slist_prepend (m->slist, (char *)item_list->data);
|
||||
+
|
||||
+ /* item_list is prepended to items_full_list and not the other way
|
||||
+ because when we have a large number of items say 50000,
|
||||
+ for each iteration there will be more elements in items_full_list
|
||||
+ and less elements in item_list */
|
||||
+
|
||||
+ last_element = g_list_last (item_list);
|
||||
+ if (items_full_list) {
|
||||
+ last_element->next = items_full_list;
|
||||
+ items_full_list->prev = item_list;
|
||||
}
|
||||
+ items_full_list = item_list;
|
||||
}
|
||||
- g_list_free (item_list);
|
||||
position = E_GW_CURSOR_POSITION_CURRENT;
|
||||
}
|
||||
e_gw_connection_destroy_cursor (m->cnc, m->container_id, cursor);
|
||||
|
||||
- gw_update_all_items (m->folder, m->slist, ex);
|
||||
+ /* Take out only the first part in the list until the @ since it is guaranteed
|
||||
+ to be unique only until that symbol */
|
||||
+
|
||||
+ if (items_full_list) {
|
||||
+ int i;
|
||||
+ item_list = items_full_list;
|
||||
+
|
||||
+ while (item_list->next) {
|
||||
+ i = 0;
|
||||
+ while (((const char *)item_list->data)[i++]!='@');
|
||||
+ ((char *)item_list->data)[i-1] = '\0';
|
||||
+ item_list = item_list->next;
|
||||
+ }
|
||||
+
|
||||
+ i = 0;
|
||||
+ while (((const char *)item_list->data)[i++]!='@');
|
||||
+ ((char *)item_list->data)[i-1] = '\0';
|
||||
+ }
|
||||
+
|
||||
+ gw_update_all_items (m->folder, items_full_list, ex);
|
||||
+
|
||||
+ if (items_full_list) {
|
||||
+ g_list_foreach (items_full_list, (GFunc)g_free, NULL);
|
||||
+ g_list_free (items_full_list);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1594,55 +1626,45 @@ groupwise_folder_item_to_msg( CamelFolde
|
||||
return msg;
|
||||
}
|
||||
|
||||
-static gint
|
||||
-string_cmp(gconstpointer a, gconstpointer b)
|
||||
-{
|
||||
- int ret;
|
||||
- char **tmp1, **tmp2;
|
||||
-
|
||||
- tmp1 = g_strsplit ((const char *)a, "@", -1);
|
||||
- tmp2 = g_strsplit ((const char *)b, "@", -1);
|
||||
- ret = strcmp (tmp1[0], tmp2[0]);
|
||||
- g_strfreev (tmp1);
|
||||
- g_strfreev (tmp2);
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
-gw_update_all_items ( CamelFolder *folder, GSList *item_list, CamelException *ex)
|
||||
+gw_update_all_items (CamelFolder *folder, GList *item_list, CamelException *ex)
|
||||
{
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
|
||||
GPtrArray *summary = camel_folder_get_summary (folder);
|
||||
- int index = 0;
|
||||
- GSList *item_ids = NULL, *l = NULL;
|
||||
+ int index = 0, i;
|
||||
+ GList *temp;
|
||||
+ char *uid;
|
||||
CamelFolderChangeInfo *changes = NULL;
|
||||
-
|
||||
+ CamelMessageInfo *info;
|
||||
changes = camel_folder_change_info_new ();
|
||||
+
|
||||
/*item_ids : List of ids from the summary*/
|
||||
while (index < summary->len) {
|
||||
- CamelMessageInfo *info = g_ptr_array_index (summary, index);
|
||||
- item_ids = g_slist_append (item_ids, info->uid);
|
||||
- index ++;
|
||||
- }
|
||||
- l = item_ids;
|
||||
-
|
||||
- /*item_list : List of ids from the server*/
|
||||
- for (; item_ids != NULL ; item_ids = g_slist_next (item_ids)) {
|
||||
- GSList *temp = NULL;
|
||||
+ info = g_ptr_array_index (summary, index);
|
||||
+ temp = NULL;
|
||||
+ i = 0;
|
||||
+ uid = g_strdup (info->uid);
|
||||
+
|
||||
+ while (((const char *)uid)[i++]!='@');
|
||||
+ ((char *)uid)[i-1] = '\0';
|
||||
|
||||
- temp = g_slist_find_custom (item_list, (const char *)item_ids->data, (GCompareFunc) string_cmp);
|
||||
+ temp = g_list_find_custom (item_list, (const char*)uid, (GCompareFunc) strcmp);
|
||||
+ g_free (uid);
|
||||
+
|
||||
if (!temp) {
|
||||
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
- camel_folder_summary_remove_uid (folder->summary, (const char *)item_ids->data);
|
||||
- camel_data_cache_remove(gw_folder->cache, "cache", (const char *)item_ids->data, ex);
|
||||
- camel_folder_change_info_remove_uid(changes, (const char *)item_ids->data);
|
||||
+ camel_folder_summary_remove_uid (folder->summary, info->uid);
|
||||
+ camel_data_cache_remove (gw_folder->cache, "cache", info->uid, ex);
|
||||
+ camel_folder_change_info_remove_uid (changes, info->uid);
|
||||
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
- }
|
||||
+ } else
|
||||
+ item_list = g_list_remove(item_list, temp);
|
||||
+
|
||||
+ index ++;
|
||||
}
|
||||
- camel_object_trigger_event (folder, "folder_changed", changes);
|
||||
|
||||
+ camel_object_trigger_event (folder, "folder_changed", changes);
|
||||
camel_folder_free_summary (folder, summary);
|
||||
- g_slist_free (l);
|
||||
}
|
||||
|
||||
static void
|
110
bnc-156823-newly-configured-gw-dont-work.patch
Normal file
110
bnc-156823-newly-configured-gw-dont-work.patch
Normal file
@ -0,0 +1,110 @@
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
|
||||
retrieving revision 1.91
|
||||
retrieving revision 1.92
|
||||
diff -u -r1.91 -r1.92
|
||||
--- camel/providers/groupwise/camel-groupwise-store.c 2006/01/31 06:55:50 1.91
|
||||
+++ camel/providers/groupwise/camel-groupwise-store.c 2006/03/09 12:58:56 1.92
|
||||
@@ -1305,11 +1305,7 @@
|
||||
if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_AVAIL
|
||||
&& camel_service_connect ((CamelService *)store, ex))
|
||||
return TRUE;
|
||||
-
|
||||
- if (!camel_exception_is_set (ex))
|
||||
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
|
||||
- _("You must be working online to complete this operation"));
|
||||
-
|
||||
+ /*Not online, so return FALSE*/
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.115
|
||||
retrieving revision 1.116
|
||||
diff -u -r1.115 -r1.116
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 2006/03/09 10:54:43 1.115
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006/03/11 09:52:29 1.116
|
||||
@@ -849,7 +849,7 @@
|
||||
/* We probably could not get the messages the first time. (get_folder) failed???!
|
||||
* so do a get_folder again. And hope that it works
|
||||
*/
|
||||
- camel_store_get_folder ((CamelStore *)gw_store, folder->name, 0, ex);
|
||||
+ gw_store_reload_folder ((CamelStore *)gw_store, folder->name, 0, ex);
|
||||
}
|
||||
}
|
||||
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
|
||||
retrieving revision 1.92
|
||||
retrieving revision 1.93
|
||||
diff -u -r1.92 -r1.93
|
||||
--- camel/providers/groupwise/camel-groupwise-store.c 2006/03/09 12:58:56 1.92
|
||||
+++ camel/providers/groupwise/camel-groupwise-store.c 2006/03/11 09:52:29 1.93
|
||||
@@ -267,8 +267,11 @@
|
||||
|
||||
d("in groupwise store connect\n");
|
||||
|
||||
- if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
|
||||
+/* if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
|
||||
(service->status == CAMEL_SERVICE_DISCONNECTED))
|
||||
+ return FALSE; */
|
||||
+
|
||||
+ if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL)
|
||||
return FALSE;
|
||||
|
||||
if (!priv) {
|
||||
@@ -592,10 +595,10 @@
|
||||
return NULL;
|
||||
}
|
||||
g_free (folder_dir);
|
||||
-
|
||||
+
|
||||
si = camel_store_summary_path ((CamelStoreSummary *)gw_store->summary, folder_name);
|
||||
if (si) {
|
||||
- camel_object_get (folder, NULL, CAMEL_FOLDER_TOTAL, &total, NULL);
|
||||
+ total = si->total;
|
||||
camel_store_summary_info_free ((CamelStoreSummary *)(gw_store)->summary, si);
|
||||
}
|
||||
|
||||
@@ -670,6 +673,11 @@
|
||||
return folder;
|
||||
}
|
||||
|
||||
+void
|
||||
+gw_store_reload_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
CamelFolderInfo *
|
||||
convert_to_folder_info (CamelGroupwiseStore *store, EGwContainer *container, const char *url, CamelException *ex)
|
||||
{
|
||||
@@ -754,10 +762,11 @@
|
||||
if (e_gw_container_get_is_shared_by_me (container))
|
||||
fi->flags |= CAMEL_FOLDER_SHARED_BY_ME;
|
||||
|
||||
- if (type == E_GW_CONTAINER_TYPE_INBOX) {
|
||||
+ /*if (type == E_GW_CONTAINER_TYPE_INBOX) {
|
||||
fi->total = -1;
|
||||
fi->unread = -1;
|
||||
- } else if (type == E_GW_CONTAINER_TYPE_TRASH) {
|
||||
+ } else if (type == E_GW_CONTAINER_TYPE_TRASH) {*/
|
||||
+ if (type == E_GW_CONTAINER_TYPE_TRASH) {
|
||||
fi->total = e_gw_container_get_total_count (container);
|
||||
fi->unread = 0;
|
||||
}else {
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.h,v
|
||||
retrieving revision 1.11
|
||||
retrieving revision 1.12
|
||||
diff -u -r1.11 -r1.12
|
||||
--- camel/providers/groupwise/camel-groupwise-store.h 2005/09/18 18:21:10 1.11
|
||||
+++ camel/providers/groupwise/camel-groupwise-store.h 2006/03/11 09:52:29 1.12
|
||||
@@ -82,6 +82,7 @@
|
||||
const char *groupwise_base_url_lookup (CamelGroupwiseStorePrivate *priv);
|
||||
CamelFolderInfo * create_junk_folder (CamelStore *store);
|
||||
gboolean camel_groupwise_store_connected (CamelGroupwiseStore *store, CamelException *ex);
|
||||
+void gw_store_reload_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
195
bnc-157323-messages-deleted-from-gw-remain-in-evo.patch
Normal file
195
bnc-157323-messages-deleted-from-gw-remain-in-evo.patch
Normal file
@ -0,0 +1,195 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.118
|
||||
diff -u -p -r1.118 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 13 Mar 2006 06:31:04 -0000 1.118
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 15 Mar 2006 08:44:51 -0000
|
||||
@@ -85,7 +85,7 @@ static void gw_update_all_items ( CamelF
|
||||
static void groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item);
|
||||
static void groupwise_populate_msg_body_from_item (EGwConnection *cnc, CamelMultipart *multipart, EGwItem *item, char *body);
|
||||
static void groupwise_msg_set_recipient_list (CamelMimeMessage *msg, EGwItem *item);
|
||||
-static void gw_update_cache ( CamelFolder *folder, GList *item_list,CamelException *ex);
|
||||
+static void gw_update_cache ( CamelFolder *folder, GList *item_list, CamelException *ex, gboolean uid_flag);
|
||||
static CamelMimeMessage *groupwise_folder_item_to_msg ( CamelFolder *folder, EGwItem *item, CamelException *ex );
|
||||
|
||||
|
||||
@@ -796,7 +796,7 @@ update_update (CamelSession *session, Ca
|
||||
last_element = g_list_last (item_list);
|
||||
if (items_full_list) {
|
||||
last_element->next = items_full_list;
|
||||
- items_full_list->prev = item_list;
|
||||
+ items_full_list->prev = last_element;
|
||||
}
|
||||
items_full_list = item_list;
|
||||
}
|
||||
@@ -807,7 +807,7 @@ update_update (CamelSession *session, Ca
|
||||
/* Take out only the first part in the list until the @ since it is guaranteed
|
||||
to be unique only until that symbol */
|
||||
|
||||
- if (items_full_list) {
|
||||
+ /*if (items_full_list) {
|
||||
int i;
|
||||
item_list = items_full_list;
|
||||
|
||||
@@ -821,14 +821,10 @@ update_update (CamelSession *session, Ca
|
||||
i = 0;
|
||||
while (((const char *)item_list->data)[i++]!='@');
|
||||
((char *)item_list->data)[i-1] = '\0';
|
||||
- }
|
||||
+ }*/
|
||||
|
||||
+ g_print ("\nNumber of items in the folder: %d \n", g_list_length(items_full_list));
|
||||
gw_update_all_items (m->folder, items_full_list, ex);
|
||||
-
|
||||
- if (items_full_list) {
|
||||
- g_list_foreach (items_full_list, (GFunc)g_free, NULL);
|
||||
- g_list_free (items_full_list);
|
||||
- }
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -947,6 +943,8 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
|
||||
time_string = g_strdup (((CamelGroupwiseSummary *) folder->summary)->time_string);
|
||||
t_str = g_strdup (time_string);
|
||||
+
|
||||
+#if 0
|
||||
/*Get the New Items*/
|
||||
status = e_gw_connection_get_quick_messages (cnc, container_id,
|
||||
"peek id",
|
||||
@@ -973,17 +971,29 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
slist = NULL;
|
||||
|
||||
t_str = g_strdup (time_string);
|
||||
-
|
||||
+#endif
|
||||
+
|
||||
/*Get those items which have been modifed*/
|
||||
+
|
||||
status = e_gw_connection_get_quick_messages (cnc, container_id,
|
||||
"peek id",
|
||||
&t_str, "Modified", NULL, NULL, -1, &slist);
|
||||
- g_free (t_str), t_str = NULL;
|
||||
+
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
|
||||
goto end3;
|
||||
}
|
||||
|
||||
+ /* The storing of time-stamp to summary code below should be commented if the
|
||||
+ above commented code is uncommented */
|
||||
+
|
||||
+ if (summary->time_string)
|
||||
+ g_free (summary->time_string);
|
||||
+
|
||||
+ summary->time_string = g_strdup (t_str);
|
||||
+
|
||||
+ g_free (t_str), t_str = NULL;
|
||||
+
|
||||
for ( sl = slist ; sl != NULL; sl = sl->next)
|
||||
list = g_list_append (list, sl->data);
|
||||
|
||||
@@ -995,7 +1005,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
}
|
||||
|
||||
if (list) {
|
||||
- gw_update_cache (folder, list, ex);
|
||||
+ gw_update_cache (folder, list, ex, FALSE);
|
||||
}
|
||||
|
||||
|
||||
@@ -1035,7 +1045,7 @@ end1:
|
||||
}
|
||||
|
||||
void
|
||||
-gw_update_cache ( CamelFolder *folder, GList *list, CamelException *ex)
|
||||
+gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean uid_flag)
|
||||
{
|
||||
CamelGroupwiseMessageInfo *mi = NULL;
|
||||
CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
|
||||
@@ -1072,7 +1082,7 @@ gw_update_cache ( CamelFolder *folder, G
|
||||
camel_operation_start (NULL, _("Fetching summary information for new messages in %s"), folder->name);
|
||||
|
||||
for ( ; item_list != NULL ; item_list = g_list_next (item_list) ) {
|
||||
- EGwItem *temp_item = (EGwItem *)item_list->data;
|
||||
+ EGwItem *temp_item ;
|
||||
EGwItem *item;
|
||||
EGwItemType type = E_GW_ITEM_TYPE_UNKNOWN;
|
||||
EGwItemOrganizer *org;
|
||||
@@ -1084,7 +1094,12 @@ gw_update_cache ( CamelFolder *folder, G
|
||||
CamelMimeMessage *mail_msg = NULL;
|
||||
|
||||
exists = FALSE;
|
||||
- id = e_gw_item_get_id (temp_item);
|
||||
+
|
||||
+ if (uid_flag == FALSE) {
|
||||
+ temp_item = (EGwItem *)item_list->data;
|
||||
+ id = e_gw_item_get_id (temp_item);
|
||||
+ } else
|
||||
+ id = (char *) item_list->data;
|
||||
|
||||
camel_operation_progress (NULL, (100*i)/total_items);
|
||||
cache_stream = camel_data_cache_get (gw_folder->cache, "cache", id, ex);
|
||||
@@ -1632,39 +1647,48 @@ gw_update_all_items (CamelFolder *folder
|
||||
{
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
|
||||
GPtrArray *summary = camel_folder_get_summary (folder);
|
||||
- int index = 0, i;
|
||||
+ int index = 0;
|
||||
GList *temp;
|
||||
- char *uid;
|
||||
CamelFolderChangeInfo *changes = NULL;
|
||||
CamelMessageInfo *info;
|
||||
changes = camel_folder_change_info_new ();
|
||||
|
||||
+ item_list = g_list_reverse (item_list);
|
||||
+
|
||||
/*item_ids : List of ids from the summary*/
|
||||
while (index < summary->len) {
|
||||
info = g_ptr_array_index (summary, index);
|
||||
temp = NULL;
|
||||
- i = 0;
|
||||
- uid = g_strdup (info->uid);
|
||||
|
||||
- while (((const char *)uid)[i++]!='@');
|
||||
- ((char *)uid)[i-1] = '\0';
|
||||
+ if (item_list) {
|
||||
+ temp = g_list_find_custom (item_list, (const char *)info->uid, (GCompareFunc) strcmp);
|
||||
+ }
|
||||
|
||||
- temp = g_list_find_custom (item_list, (const char*)uid, (GCompareFunc) strcmp);
|
||||
- g_free (uid);
|
||||
-
|
||||
if (!temp) {
|
||||
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
camel_folder_summary_remove_uid (folder->summary, info->uid);
|
||||
camel_data_cache_remove (gw_folder->cache, "cache", info->uid, ex);
|
||||
camel_folder_change_info_remove_uid (changes, info->uid);
|
||||
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
- } else
|
||||
- item_list = g_list_remove(item_list, temp);
|
||||
-
|
||||
+ } else {
|
||||
+ item_list = g_list_delete_link (item_list, temp);
|
||||
+ }
|
||||
index ++;
|
||||
}
|
||||
-
|
||||
+
|
||||
camel_object_trigger_event (folder, "folder_changed", changes);
|
||||
+
|
||||
+ if (item_list) {
|
||||
+ CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+ gw_update_cache (folder, item_list, ex, TRUE);
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+
|
||||
+ g_list_foreach (item_list, (GFunc)g_free, NULL);
|
||||
+ g_list_free (item_list);
|
||||
+ }
|
||||
+
|
||||
camel_folder_free_summary (folder, summary);
|
||||
}
|
||||
|
18
bnc-158093-sent-folder-have-to-not-from.patch
Normal file
18
bnc-158093-sent-folder-have-to-not-from.patch
Normal file
@ -0,0 +1,18 @@
|
||||
--- camel/providers/groupwise/camel-groupwise-store.c.orig 2006-03-20 16:30:38.488752753 +0100
|
||||
+++ camel/providers/groupwise/camel-groupwise-store.c 2006-03-20 16:38:37.082768906 +0100
|
||||
@@ -462,6 +462,15 @@ groupwise_build_folder_info(CamelGroupwi
|
||||
else
|
||||
name++;
|
||||
|
||||
+ if (!strcmp (folder_name, "Sent Items"))
|
||||
+ fi->flags |= CAMEL_FOLDER_TYPE_SENT;
|
||||
+ else if (!strcmp (folder_name, "Mailbox"))
|
||||
+ fi->flags |= CAMEL_FOLDER_TYPE_INBOX;
|
||||
+ else if (!strcmp (folder_name, "Trash"))
|
||||
+ fi->flags |= CAMEL_FOLDER_TYPE_TRASH;
|
||||
+ else if (!strcmp (folder_name, "Junk Mail"))
|
||||
+ fi->flags |= CAMEL_FOLDER_TYPE_JUNK;
|
||||
+
|
||||
fi->name = g_strdup(name);
|
||||
return fi;
|
||||
}
|
286
bnc-158107-no-notification-canceled-mtgs.patch
Normal file
286
bnc-158107-no-notification-canceled-mtgs.patch
Normal file
@ -0,0 +1,286 @@
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v
|
||||
retrieving revision 1.173
|
||||
diff -u -p -r1.173 e-cal-backend-groupwise.c
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise.c 23 Jan 2006 11:09:58 -0000 1.173
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c 24 Mar 2006 14:42:22 -0000
|
||||
@@ -79,6 +79,8 @@ static void e_cal_backend_groupwise_fina
|
||||
static void sanitize_component (ECalBackendSync *backend, ECalComponent *comp, char *server_uid);
|
||||
static ECalBackendSyncStatus
|
||||
e_cal_backend_groupwise_add_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj);
|
||||
+static const char * get_gw_item_id (icalcomponent *icalcomp);
|
||||
+static void get_retract_data (ECalComponent *comp, const char **retract_comment, gboolean *all_instances);
|
||||
|
||||
#define PARENT_TYPE E_TYPE_CAL_BACKEND_SYNC
|
||||
static ECalBackendClass *parent_class = NULL;
|
||||
@@ -219,6 +221,7 @@ populate_cache (ECalBackendGroupwise *cb
|
||||
|
||||
return E_GW_CONNECTION_STATUS_OK;
|
||||
}
|
||||
+
|
||||
static gboolean
|
||||
compare_prefix (gconstpointer a, gconstpointer b)
|
||||
{
|
||||
@@ -467,7 +470,6 @@ get_deltas (gpointer handle)
|
||||
needs_to_get = TRUE;
|
||||
} else {
|
||||
cache_keys = g_slist_delete_link (cache_keys, remove);
|
||||
- g_message ("******** found \n");
|
||||
}
|
||||
|
||||
g_free (real_key);
|
||||
@@ -476,7 +478,6 @@ get_deltas (gpointer handle)
|
||||
for (l = cache_keys; l ; l = g_slist_next (l)) {
|
||||
/* assumes rid is null - which works for now */
|
||||
ECalComponent *comp = NULL;
|
||||
- GSList *comp_list = NULL;
|
||||
ECalComponentVType vtype;
|
||||
|
||||
comp = e_cal_backend_cache_get_component (cache, (const char *) l->data, NULL);
|
||||
@@ -1632,10 +1633,9 @@ e_cal_backend_groupwise_internal_get_tim
|
||||
icaltimezone *zone;
|
||||
|
||||
zone = icaltimezone_get_builtin_timezone_from_tzid (tzid);
|
||||
-
|
||||
if (!zone)
|
||||
return icaltimezone_get_utc_timezone();
|
||||
-
|
||||
+
|
||||
return zone;
|
||||
}
|
||||
|
||||
@@ -1791,6 +1791,44 @@ e_cal_backend_groupwise_create_object (E
|
||||
return GNOME_Evolution_Calendar_Success;
|
||||
}
|
||||
|
||||
+static void
|
||||
+get_retract_data (ECalComponent *comp, const char **retract_comment, gboolean *all_instances)
|
||||
+{
|
||||
+ icalcomponent *icalcomp = NULL;
|
||||
+ icalproperty *icalprop = NULL;
|
||||
+ gboolean is_instance = FALSE;
|
||||
+ const char *x_ret = NULL, *x_recur = NULL;
|
||||
+
|
||||
+ is_instance = e_cal_component_is_instance (comp);
|
||||
+ icalcomp = e_cal_component_get_icalcomponent (comp);
|
||||
+ icalprop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY);
|
||||
+ while (icalprop) {
|
||||
+ const char *x_name;
|
||||
+
|
||||
+ x_name = icalproperty_get_x_name (icalprop);
|
||||
+ /* This property will be set only if the user is an organizer */
|
||||
+ if (!strcmp (x_name, "X-EVOLUTION-RETRACT-COMMENT")) {
|
||||
+ x_ret = icalproperty_get_x (icalprop);
|
||||
+ if (!strcmp (x_ret, "0")) {
|
||||
+ *retract_comment = NULL;
|
||||
+ } else
|
||||
+ *retract_comment = x_ret;
|
||||
+ }
|
||||
+
|
||||
+ if (is_instance && !strcmp (x_name, "X-EVOLUTION-RECUR-MOD")) {
|
||||
+ x_recur = icalproperty_get_x (icalprop);
|
||||
+ if (!strcmp (x_recur, "All"))
|
||||
+ *all_instances = TRUE;
|
||||
+ else
|
||||
+ *all_instances = FALSE;
|
||||
+ }
|
||||
+
|
||||
+ if (x_ret && (!is_instance || x_recur))
|
||||
+ break;
|
||||
+ icalprop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static ECalBackendSyncStatus
|
||||
e_cal_backend_groupwise_modify_object (ECalBackendSync *backend, EDataCal *cal, const char *calobj,
|
||||
CalObjModType mod, char **old_object, char **new_object)
|
||||
@@ -1838,7 +1876,7 @@ e_cal_backend_groupwise_modify_object (E
|
||||
if (e_cal_component_has_attendees (comp) &&
|
||||
e_cal_backend_groupwise_utils_check_delegate (comp, e_gw_connection_get_user_email (priv->cnc))) {
|
||||
const char *id = NULL, *recur_key = NULL;
|
||||
-
|
||||
+
|
||||
item = e_gw_item_new_for_delegate_from_cal (cbgw, comp);
|
||||
|
||||
if (mod == CALOBJ_MOD_ALL && e_cal_component_is_instance (comp)) {
|
||||
@@ -1848,21 +1886,19 @@ e_cal_backend_groupwise_modify_object (E
|
||||
}
|
||||
|
||||
status = e_gw_connection_delegate_request (priv->cnc, item, id, NULL, NULL, recur_key);
|
||||
-
|
||||
+
|
||||
if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
- status = e_gw_connection_delegate_request (priv->cnc, item, id, NULL, NULL, recur_key);
|
||||
-
|
||||
- if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
- g_object_unref (comp);
|
||||
- g_object_unref (cache_comp);
|
||||
- return GNOME_Evolution_Calendar_OtherError;
|
||||
- }
|
||||
-
|
||||
-
|
||||
+ status = e_gw_connection_delegate_request (priv->cnc, item, id, NULL, NULL, recur_key);
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
+ g_object_unref (comp);
|
||||
+ g_object_unref (cache_comp);
|
||||
+ return GNOME_Evolution_Calendar_OtherError;
|
||||
+ }
|
||||
+
|
||||
e_cal_backend_cache_put_component (priv->cache, comp);
|
||||
*new_object = e_cal_component_get_as_string (comp);
|
||||
break;
|
||||
- }
|
||||
+ }
|
||||
|
||||
item = e_gw_item_new_from_cal_component (priv->container_id, cbgw, comp);
|
||||
cache_item = e_gw_item_new_from_cal_component (priv->container_id, cbgw, cache_comp);
|
||||
@@ -2359,40 +2395,91 @@ e_cal_backend_groupwise_receive_objects
|
||||
static ECalBackendSyncStatus
|
||||
send_object (ECalBackendGroupwise *cbgw, EDataCal *cal, icalcomponent *icalcomp, icalproperty_method method)
|
||||
{
|
||||
- ECalComponent *comp, *found_comp;
|
||||
+ ECalComponent *comp, *found_comp = NULL;
|
||||
ECalBackendGroupwisePrivate *priv;
|
||||
- ECalBackendSyncStatus status = GNOME_Evolution_Calendar_Success;
|
||||
- char *uid, *comp_str;
|
||||
+ ECalBackendSyncStatus status = GNOME_Evolution_Calendar_OtherError;
|
||||
+ const char *uid = NULL, *rid = NULL;
|
||||
|
||||
priv = cbgw->priv;
|
||||
|
||||
comp = e_cal_component_new ();
|
||||
e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (icalcomp));
|
||||
+ rid = e_cal_component_get_recurid_as_string (comp);
|
||||
|
||||
e_cal_component_get_uid (comp, (const char **) &uid);
|
||||
- found_comp = e_cal_backend_cache_get_component (priv->cache, uid, NULL);
|
||||
+ found_comp = e_cal_backend_cache_get_component (priv->cache, uid, rid);
|
||||
+
|
||||
+ if (!found_comp) {
|
||||
+ g_object_unref (comp);
|
||||
+ return GNOME_Evolution_Calendar_ObjectNotFound;
|
||||
+ }
|
||||
+
|
||||
|
||||
switch (priv->mode) {
|
||||
case CAL_MODE_ANY :
|
||||
case CAL_MODE_REMOTE :
|
||||
- if (found_comp) {
|
||||
- char *comp_str;
|
||||
- status = e_cal_backend_groupwise_modify_object (E_CAL_BACKEND_SYNC (cbgw), cal, comp_str,
|
||||
- CALOBJ_MOD_THIS, &comp_str, NULL);
|
||||
- g_free (comp_str);
|
||||
- } else
|
||||
- status = e_cal_backend_groupwise_create_object (E_CAL_BACKEND_SYNC (cbgw), cal, &comp_str, NULL);
|
||||
+ if (method == ICAL_METHOD_CANCEL) {
|
||||
+ const char *retract_comment = NULL;
|
||||
+ gboolean all_instances = FALSE;
|
||||
+ const char *id = NULL;
|
||||
+
|
||||
+ get_retract_data (comp, &retract_comment, &all_instances);
|
||||
+ id = get_gw_item_id (icalcomp);
|
||||
+ status = e_gw_connection_retract_request (priv->cnc, id, retract_comment,
|
||||
+ all_instances, FALSE);
|
||||
+
|
||||
+ if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
+ status = e_gw_connection_retract_request (priv->cnc, id, retract_comment,
|
||||
+ all_instances, FALSE);
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
+ ECalComponentId *id = NULL;
|
||||
+
|
||||
+ if (all_instances) {
|
||||
+ char *old_object = NULL;
|
||||
+ GSList *l, *comp_list = e_cal_backend_cache_get_components_by_uid (priv->cache, uid);
|
||||
+ for (l = comp_list; l; l = l->next) {
|
||||
+ ECalComponent *comp = E_CAL_COMPONENT (l->data);
|
||||
+ ECalComponentId *id = e_cal_component_get_id (comp);
|
||||
+ char *object = e_cal_component_get_as_string (comp);
|
||||
+
|
||||
+ if (e_cal_backend_cache_remove_component (priv->cache, id->uid,
|
||||
+ id->rid))
|
||||
+ e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id, object, NULL);
|
||||
+
|
||||
+ e_cal_component_free_id (id);
|
||||
+ g_free (object);
|
||||
+ g_object_unref (comp);
|
||||
+ }
|
||||
+
|
||||
+ g_slist_free (comp_list);
|
||||
+ g_free (old_object);
|
||||
+ } else {
|
||||
+ id = e_cal_component_get_id (comp);
|
||||
+ icalcomp = e_cal_component_get_icalcomponent (comp);
|
||||
+ char * object = e_cal_component_get_as_string (comp);
|
||||
+
|
||||
+ if (e_cal_backend_cache_remove_component (priv->cache, id->uid,
|
||||
+ id->rid)) {
|
||||
+ e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id,
|
||||
+ object, NULL);
|
||||
+ }
|
||||
|
||||
+ g_free (object);
|
||||
+ e_cal_component_free_id (id);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
break;
|
||||
case CAL_MODE_LOCAL :
|
||||
/* in offline mode, we just update the cache */
|
||||
- e_cal_backend_cache_put_component (priv->cache, comp);
|
||||
+ status = GNOME_Evolution_Calendar_RepositoryOffline;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
g_object_unref (comp);
|
||||
+ g_object_unref (found_comp);
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -2446,12 +2533,16 @@ e_cal_backend_groupwise_send_objects (EC
|
||||
|
||||
comp = e_cal_component_new ();
|
||||
|
||||
- if (e_cal_component_set_icalcomponent (comp, icalcomp)) {
|
||||
+ if (e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (icalcomp))) {
|
||||
GSList *attendee_list = NULL, *tmp;
|
||||
e_cal_component_get_attendee_list (comp, &attendee_list);
|
||||
/* convert this into GList */
|
||||
- for (tmp = attendee_list; tmp; tmp = g_slist_next (tmp))
|
||||
- *users = g_list_append (*users, tmp);
|
||||
+ for (tmp = attendee_list; tmp; tmp = g_slist_next (tmp)) {
|
||||
+ const char *attendee = tmp->data;
|
||||
+
|
||||
+ if (attendee)
|
||||
+ *users = g_list_append (*users, g_strdup (attendee));
|
||||
+ }
|
||||
|
||||
g_object_unref (comp);
|
||||
}
|
||||
Index: servers/groupwise/e-gw-connection.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.c,v
|
||||
retrieving revision 1.141
|
||||
diff -u -p -r1.141 e-gw-connection.c
|
||||
--- servers/groupwise/e-gw-connection.c 23 Mar 2006 10:08:37 -0000 1.141
|
||||
+++ servers/groupwise/e-gw-connection.c 3 Apr 2006 08:41:02 -0000
|
||||
@@ -1463,7 +1463,16 @@ e_gw_connection_retract_request (EGwConn
|
||||
soup_soap_message_start_element (msg, "items", NULL, NULL);
|
||||
e_gw_message_write_string_parameter (msg, "item", NULL, id);
|
||||
soup_soap_message_end_element (msg);
|
||||
- /* comment, FALSE, FALSE to be filled in later. */
|
||||
+
|
||||
+ if (retract_all)
|
||||
+ e_gw_message_write_string_parameter (msg, "retractingAllInstances", NULL, "1");
|
||||
+
|
||||
+ if (comment)
|
||||
+ e_gw_message_write_string_parameter (msg, "comment", NULL, comment);
|
||||
+
|
||||
+ if (resend)
|
||||
+ e_gw_message_write_string_parameter (msg, "retractCausedByResend", NULL, "1");
|
||||
+
|
||||
e_gw_message_write_footer (msg);
|
||||
|
||||
response = e_gw_connection_send_message (cnc, msg);
|
82
bnc-158112-send-receive-dlg-takes-time.patch
Normal file
82
bnc-158112-send-receive-dlg-takes-time.patch
Normal file
@ -0,0 +1,82 @@
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c.orig 2006-03-23 16:21:05.882346341 +0100
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006-03-23 16:21:53.346929567 +0100
|
||||
@@ -902,6 +902,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
char *container_id = NULL;
|
||||
char *time_string = NULL, *t_str = NULL;
|
||||
struct _folder_update_msg *msg;
|
||||
+ gboolean check_all = FALSE;
|
||||
|
||||
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
|
||||
g_warning ("In offline mode. Cannot refresh!!!\n");
|
||||
@@ -947,7 +948,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
time_string = g_strdup (((CamelGroupwiseSummary *) folder->summary)->time_string);
|
||||
t_str = g_strdup (time_string);
|
||||
|
||||
-#if 0
|
||||
+
|
||||
/*Get the New Items*/
|
||||
status = e_gw_connection_get_quick_messages (cnc, container_id,
|
||||
"peek id",
|
||||
@@ -963,18 +964,23 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
*/
|
||||
if (summary->time_string)
|
||||
g_free (summary->time_string);
|
||||
+
|
||||
+
|
||||
summary->time_string = g_strdup (t_str);
|
||||
g_free (t_str);
|
||||
t_str = NULL;
|
||||
|
||||
+ /*
|
||||
for ( sl = slist ; sl != NULL; sl = sl->next)
|
||||
- list = g_list_append (list, sl->data);
|
||||
+ list = g_list_append (list, sl->data);*/
|
||||
|
||||
+ if (slist && g_slist_length(slist) != 0)
|
||||
+ check_all = TRUE;
|
||||
+
|
||||
g_slist_free (slist);
|
||||
slist = NULL;
|
||||
|
||||
t_str = g_strdup (time_string);
|
||||
-#endif
|
||||
|
||||
/*Get those items which have been modifed*/
|
||||
|
||||
@@ -989,15 +995,16 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
|
||||
/* The storing of time-stamp to summary code below should be commented if the
|
||||
above commented code is uncommented */
|
||||
- if (summary->time_string)
|
||||
+
|
||||
+/* if (summary->time_string)
|
||||
g_free (summary->time_string);
|
||||
|
||||
summary->time_string = g_strdup (t_str);
|
||||
|
||||
- g_free (t_str), t_str = NULL;
|
||||
+ g_free (t_str), t_str = NULL;*/
|
||||
|
||||
for ( sl = slist ; sl != NULL; sl = sl->next)
|
||||
- list = g_list_append (list, sl->data);
|
||||
+ list = g_list_prepend (list, sl->data);
|
||||
|
||||
g_slist_free (slist);
|
||||
slist = NULL;
|
||||
@@ -1021,6 +1028,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
* this folder, and update the summary.
|
||||
*/
|
||||
/*create a new session thread for the update all operation*/
|
||||
+ if (check_all) {
|
||||
msg = camel_session_thread_msg_new (session, &update_ops, sizeof(*msg));
|
||||
msg->cnc = cnc;
|
||||
msg->t_str = g_strdup (time_string);
|
||||
@@ -1030,7 +1038,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
camel_folder_freeze (folder);
|
||||
camel_session_thread_queue (session, &msg->msg, 0);
|
||||
/*thread creation and queueing done*/
|
||||
-
|
||||
+ }
|
||||
|
||||
end3:
|
||||
g_list_foreach (list, (GFunc) g_object_unref, NULL);
|
1608
bnc-159934-eds-CPU-spikes.patch
Normal file
1608
bnc-159934-eds-CPU-spikes.patch
Normal file
File diff suppressed because it is too large
Load Diff
18
bnc-160147-cant-delete-created-calendar-accounts.patch
Normal file
18
bnc-160147-cant-delete-created-calendar-accounts.patch
Normal file
@ -0,0 +1,18 @@
|
||||
Index: calendar/backends/caldav/e-cal-backend-caldav.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/caldav/e-cal-backend-caldav.c,v
|
||||
retrieving revision 1.5
|
||||
diff -u -p -r1.5 e-cal-backend-caldav.c
|
||||
--- calendar/backends/caldav/e-cal-backend-caldav.c 9 Feb 2006 06:12:05 -0000 1.5
|
||||
+++ calendar/backends/caldav/e-cal-backend-caldav.c 23 Mar 2006 19:55:51 -0000
|
||||
@@ -1491,6 +1491,10 @@ caldav_remove (ECalBackendSync *backend,
|
||||
priv = E_CAL_BACKEND_CALDAV_GET_PRIVATE (cbdav);
|
||||
|
||||
g_mutex_lock (priv->lock);
|
||||
+
|
||||
+ if (priv->loaded != TRUE)
|
||||
+ return GNOME_Evolution_Calendar_Success;
|
||||
+
|
||||
status = check_state (cbdav, &online);
|
||||
|
||||
if (status != GNOME_Evolution_Calendar_Success) {
|
16
bnc-160915-evolution-crash-clickng-goto-cal-view.patch
Normal file
16
bnc-160915-evolution-crash-clickng-goto-cal-view.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: calendar/libecal/e-cal.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/libecal/e-cal.c,v
|
||||
retrieving revision 1.125
|
||||
diff -u -p -r1.125 e-cal.c
|
||||
--- calendar/libecal/e-cal.c 4 Mar 2006 10:29:07 -0000 1.125
|
||||
+++ calendar/libecal/e-cal.c 11 Apr 2006 13:29:57 -0000
|
||||
@@ -3528,7 +3528,7 @@ process_detached_instances (GList *insta
|
||||
ci->end = cid->end;
|
||||
|
||||
processed = TRUE;
|
||||
- } else {
|
||||
+ } else if (instance_recur_id.datetime.value && recur_id.datetime.value){
|
||||
cmp = icaltime_compare (*instance_recur_id.datetime.value,
|
||||
*recur_id.datetime.value);
|
||||
if ((recur_id.type == E_CAL_COMPONENT_RANGE_THISPRIOR && cmp <= 0) ||
|
71
bnc-161000-junk-mail-dont-work.patch
Normal file
71
bnc-161000-junk-mail-dont-work.patch
Normal file
@ -0,0 +1,71 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.126
|
||||
diff -u -p -r1.126 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 3 Apr 2006 06:36:11 -0000 1.126
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 3 Apr 2006 06:42:45 -0000
|
||||
@@ -491,7 +491,8 @@ update_junk_list (CamelStore *store, Cam
|
||||
goto error;
|
||||
|
||||
email = g_strsplit_set (from, "<>", -1);
|
||||
- if (!email[1])
|
||||
+
|
||||
+ if (!email || !email[1])
|
||||
goto error;
|
||||
|
||||
if (flag == ADD_JUNK_ENTRY)
|
||||
@@ -617,6 +618,7 @@ groupwise_sync (CamelFolder *folder, gbo
|
||||
|
||||
if ((flags & CAMEL_MESSAGE_JUNK) && !(flags & CAMEL_GW_MESSAGE_JUNK)) /*marked a message junk*/
|
||||
move_to_junk (folder, info, ex);
|
||||
+
|
||||
else if ((flags & CAMEL_MESSAGE_JUNK) && (flags & CAMEL_GW_MESSAGE_JUNK)) /*message was marked as junk, now unjunk*/
|
||||
move_to_mailbox (folder, info, ex);
|
||||
|
||||
@@ -1171,12 +1173,17 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
|
||||
org = e_gw_item_get_organizer (item);
|
||||
if (org) {
|
||||
- if (exists)
|
||||
- camel_pstring_free(mi->info.from);
|
||||
- if (org->display_name && org->display_name[0])
|
||||
- mi->info.from = camel_pstring_strdup (org->display_name);
|
||||
- else if (org->email && org->email[0])
|
||||
- mi->info.from = camel_pstring_strdup (org->email);
|
||||
+ GString *str;
|
||||
+ str = g_string_new ("");
|
||||
+ if (org->display_name && org->display_name[0])
|
||||
+ str = g_string_append (str, org->display_name);
|
||||
+ if (org->email && org->email[0]) {
|
||||
+ g_string_append (str, "<");
|
||||
+ str = g_string_append (str, org->email);
|
||||
+ g_string_append (str, ">");
|
||||
+ }
|
||||
+ mi->info.from = camel_pstring_strdup (str->str);
|
||||
+ g_string_free (str, TRUE);
|
||||
}
|
||||
g_string_truncate (str, 0);
|
||||
recp_list = e_gw_item_get_recipient_list (item);
|
||||
@@ -1369,10 +1376,17 @@ gw_update_summary ( CamelFolder *folder,
|
||||
|
||||
org = e_gw_item_get_organizer (item);
|
||||
if (org) {
|
||||
- if (org->display_name && org->display_name[0])
|
||||
- mi->info.from = camel_pstring_strdup (org->display_name);
|
||||
- else if (org->email && org->email[0])
|
||||
- mi->info.from = camel_pstring_strdup (org->email);
|
||||
+ GString *str;
|
||||
+ str = g_string_new ("");
|
||||
+ if (org->display_name && org->display_name[0])
|
||||
+ str = g_string_append (str, org->display_name);
|
||||
+ if (org->email && org->email[0]) {
|
||||
+ g_string_append (str, "<");
|
||||
+ str = g_string_append (str, org->email);
|
||||
+ g_string_append (str, ">");
|
||||
+ }
|
||||
+ mi->info.from = camel_pstring_strdup (str->str);
|
||||
+ g_string_free (str, TRUE);
|
||||
}
|
||||
g_string_truncate (str, 0);
|
||||
recp_list = e_gw_item_get_recipient_list (item);
|
82
bnc-161290-eds-crashed-forwarding-mail.patch
Normal file
82
bnc-161290-eds-crashed-forwarding-mail.patch
Normal file
@ -0,0 +1,82 @@
|
||||
Index: addressbook/backends/groupwise/e-book-backend-groupwise.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c,v
|
||||
retrieving revision 1.73
|
||||
diff -u -p -r1.73 e-book-backend-groupwise.c
|
||||
--- addressbook/backends/groupwise/e-book-backend-groupwise.c 23 Mar 2006 10:55:47 -0000 1.73
|
||||
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 3 Apr 2006 13:18:36 -0000
|
||||
@@ -70,11 +70,11 @@ struct _EBookBackendGroupwisePrivate {
|
||||
int cache_timeout;
|
||||
EBookBackendCache *cache;
|
||||
EBookBackendSummary *summary;
|
||||
+ GMutex *update_mutex;
|
||||
/* for future use */
|
||||
void *reserved1;
|
||||
void *reserved2;
|
||||
void *reserved3;
|
||||
- void *reserved4;
|
||||
};
|
||||
|
||||
#define ELEMENT_TYPE_SIMPLE 0x01
|
||||
@@ -2711,6 +2711,8 @@ update_address_book_deltas (EBookBackend
|
||||
|
||||
EBookBackendGroupwisePrivate *priv = ebgw->priv;
|
||||
EBookBackendCache *cache = priv->cache;
|
||||
+
|
||||
+ g_mutex_lock (priv->update_mutex);
|
||||
|
||||
if (enable_debug)
|
||||
printf("\nupdating GroupWise system address book cache \n");
|
||||
@@ -2724,6 +2726,7 @@ update_address_book_deltas (EBookBackend
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
if (enable_debug)
|
||||
printf("No connection with the server \n");
|
||||
+ g_mutex_unlock(priv->update_mutex);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -2733,6 +2736,7 @@ update_address_book_deltas (EBookBackend
|
||||
if (enable_debug)
|
||||
printf ("sequence is reset, rebuilding cache...\n");
|
||||
build_cache (ebgw);
|
||||
+ g_mutex_unlock(priv->update_mutex);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2754,6 +2758,7 @@ update_address_book_deltas (EBookBackend
|
||||
build_cache (ebgw);
|
||||
add_sequence_to_cache (cache, server_first_sequence,
|
||||
server_last_sequence, server_last_po_rebuild_time);
|
||||
+ g_mutex_unlock(priv->update_mutex);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2926,6 +2931,7 @@ update_address_book_deltas (EBookBackend
|
||||
printf("updating GroupWise system address book cache took %ld.%03ld seconds for %d changes\n",
|
||||
diff / 1000, diff % 1000, contact_num);
|
||||
}
|
||||
+ g_mutex_unlock(priv->update_mutex);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -3427,6 +3433,8 @@ e_book_backend_groupwise_dispose (GObjec
|
||||
g_source_remove (bgw->priv->cache_timeout);
|
||||
bgw->priv->cache_timeout = 0;
|
||||
}
|
||||
+ if (bgw->priv->update_mutex)
|
||||
+ g_mutex_free(bgw->priv->update_mutex);
|
||||
|
||||
g_free (bgw->priv);
|
||||
bgw->priv = NULL;
|
||||
@@ -3485,10 +3493,10 @@ e_book_backend_groupwise_init (EBookBack
|
||||
priv->cnc = NULL;
|
||||
priv->original_uri = NULL;
|
||||
priv->cache_timeout = 0;
|
||||
+ priv->update_mutex = g_mutex_new();
|
||||
priv->reserved1 = NULL;
|
||||
priv->reserved2 = NULL;
|
||||
priv->reserved3 = NULL;
|
||||
- priv->reserved4 = NULL;
|
||||
backend->priv = priv;
|
||||
|
||||
if (g_getenv ("GROUPWISE_DEBUG")) {
|
41
bnc-162005-e-d-s-crash-deleting-recur-appt.patch
Normal file
41
bnc-162005-e-d-s-crash-deleting-recur-appt.patch
Normal file
@ -0,0 +1,41 @@
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v
|
||||
retrieving revision 1.174
|
||||
diff -u -p -r1.174 e-cal-backend-groupwise.c
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise.c 3 Apr 2006 08:36:44 -0000 1.174
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c 5 Apr 2006 06:17:11 -0000
|
||||
@@ -1839,7 +1839,7 @@ e_cal_backend_groupwise_modify_object (E
|
||||
ECalComponent *comp, *cache_comp = NULL;
|
||||
EGwConnectionStatus status;
|
||||
EGwItem *item, *cache_item;
|
||||
- const char *uid = NULL;
|
||||
+ const char *uid = NULL, *rid = NULL;
|
||||
|
||||
*old_object = NULL;
|
||||
cbgw = E_CAL_BACKEND_GROUPWISE (backend);
|
||||
@@ -1861,13 +1861,14 @@ e_cal_backend_groupwise_modify_object (E
|
||||
comp = e_cal_component_new ();
|
||||
e_cal_component_set_icalcomponent (comp, icalcomp);
|
||||
e_cal_component_get_uid (comp, &uid);
|
||||
+ rid = e_cal_component_get_recurid_as_string (comp);
|
||||
|
||||
/* check if the object exists */
|
||||
switch (priv->mode) {
|
||||
case CAL_MODE_ANY :
|
||||
case CAL_MODE_REMOTE :
|
||||
/* when online, send the item to the server */
|
||||
- cache_comp = e_cal_backend_cache_get_component (priv->cache, uid, NULL);
|
||||
+ cache_comp = e_cal_backend_cache_get_component (priv->cache, uid, rid);
|
||||
if (!cache_comp) {
|
||||
g_message ("CRITICAL : Could not find the object in cache");
|
||||
return GNOME_Evolution_Calendar_ObjectNotFound;
|
||||
@@ -2070,7 +2071,7 @@ e_cal_backend_groupwise_remove_object (E
|
||||
|
||||
e_cal_backend_cache_remove_component (priv->cache, id->uid,
|
||||
id->rid);
|
||||
- if (!g_str_equal (id->rid, rid))
|
||||
+ if (!id->rid || !g_str_equal (id->rid, rid))
|
||||
e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id, e_cal_component_get_as_string (comp), NULL);
|
||||
e_cal_component_free_id (id);
|
||||
|
70
bnc-163664-eds-crashes-on-invalid-utf8-contacts.patch
Normal file
70
bnc-163664-eds-crashes-on-invalid-utf8-contacts.patch
Normal file
@ -0,0 +1,70 @@
|
||||
--- addressbook/libebook/e-vcard.c.orig 2006-04-04 20:53:02.000000000 -0500
|
||||
+++ addressbook/libebook/e-vcard.c 2006-04-04 20:56:55.000000000 -0500
|
||||
@@ -541,6 +541,45 @@ read_attribute (char **p)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+/* Stolen from glib/glib/gconvert.c */
|
||||
+static gchar *
|
||||
+make_valid_utf8 (const gchar *name)
|
||||
+{
|
||||
+ GString *string;
|
||||
+ const gchar *remainder, *invalid;
|
||||
+ gint remaining_bytes, valid_bytes;
|
||||
+
|
||||
+ string = NULL;
|
||||
+ remainder = name;
|
||||
+ remaining_bytes = strlen (name);
|
||||
+
|
||||
+ while (remaining_bytes != 0)
|
||||
+ {
|
||||
+ if (g_utf8_validate (remainder, remaining_bytes, &invalid))
|
||||
+ break;
|
||||
+ valid_bytes = invalid - remainder;
|
||||
+
|
||||
+ if (string == NULL)
|
||||
+ string = g_string_sized_new (remaining_bytes);
|
||||
+
|
||||
+ g_string_append_len (string, remainder, valid_bytes);
|
||||
+ /* append U+FFFD REPLACEMENT CHARACTER */
|
||||
+ g_string_append (string, "\357\277\275");
|
||||
+
|
||||
+ remaining_bytes -= valid_bytes + 1;
|
||||
+ remainder = invalid + 1;
|
||||
+ }
|
||||
+
|
||||
+ if (string == NULL)
|
||||
+ return g_strdup (name);
|
||||
+
|
||||
+ g_string_append (string, remainder);
|
||||
+
|
||||
+ g_assert (g_utf8_validate (string->str, -1, NULL));
|
||||
+
|
||||
+ return g_string_free (string, FALSE);
|
||||
+}
|
||||
+
|
||||
/* we try to be as forgiving as we possibly can here - this isn't a
|
||||
* validator. Almost nothing is considered a fatal error. We always
|
||||
* try to return *something*.
|
||||
@@ -548,17 +587,12 @@ read_attribute (char **p)
|
||||
static void
|
||||
parse (EVCard *evc, const char *str)
|
||||
{
|
||||
- char *buf = g_strdup (str);
|
||||
- char *p, *end;
|
||||
+ char *buf;
|
||||
+ char *p;
|
||||
EVCardAttribute *attr;
|
||||
|
||||
- /* first validate the string is valid utf8 */
|
||||
- if (!g_utf8_validate (buf, -1, (const char **)&end)) {
|
||||
- /* if the string isn't valid, we parse as much as we can from it */
|
||||
- g_warning ("invalid utf8 passed to EVCard. Limping along.");
|
||||
- *end = '\0';
|
||||
- }
|
||||
-
|
||||
+ buf = make_valid_utf8 (str);
|
||||
+
|
||||
buf = fold_lines (buf);
|
||||
|
||||
d(printf ("BEFORE FOLDING:\n"));
|
39
bnc-163982-system-hang-with-126-error-popups.patch
Normal file
39
bnc-163982-system-hang-with-126-error-popups.patch
Normal file
@ -0,0 +1,39 @@
|
||||
Index: calendar/backends/file/e-cal-backend-file.c
|
||||
================================================================================
|
||||
--- calendar/backends/file/e-cal-backend-file.c
|
||||
+++ calendar/backends/file/e-cal-backend-file.c
|
||||
@@ -129,6 +129,7 @@
|
||||
GnomeVFSFileSize out;
|
||||
gchar *tmp, *backup_uristr;
|
||||
char *buf;
|
||||
+ char *error = NULL;
|
||||
ECalBackendFile *cbfile = user_data;
|
||||
|
||||
priv = cbfile->priv;
|
||||
@@ -201,12 +202,14 @@
|
||||
g_mutex_unlock (priv->idle_save_mutex);
|
||||
e_cal_backend_notify_error (E_CAL_BACKEND (cbfile),
|
||||
_("Cannot save calendar data: Malformed URI."));
|
||||
- return TRUE;
|
||||
+ return FALSE;
|
||||
|
||||
error:
|
||||
g_mutex_unlock (priv->idle_save_mutex);
|
||||
- e_cal_backend_notify_error (E_CAL_BACKEND (cbfile), gnome_vfs_result_to_string (result));
|
||||
- return TRUE;
|
||||
+ error = g_strconcat (_("Can't save calendar data: "), gnome_vfs_result_to_string (result), NULL);
|
||||
+ e_cal_backend_notify_error (E_CAL_BACKEND (cbfile), error);
|
||||
+ g_free (error);
|
||||
+ return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -520,8 +523,6 @@
|
||||
g_assert (icalcomp != NULL);
|
||||
|
||||
icalcomponent_add_component (priv->icalcomp, icalcomp);
|
||||
-
|
||||
- save (cbfile);
|
||||
}
|
||||
}
|
||||
|
26
bnc-164140-eds-crash-evolution--offline.patch
Normal file
26
bnc-164140-eds-crash-evolution--offline.patch
Normal file
@ -0,0 +1,26 @@
|
||||
Index: addressbook/backends/file/e-book-backend-file.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/file/e-book-backend-file.c,v
|
||||
retrieving revision 1.41
|
||||
diff -u -p -r1.41 e-book-backend-file.c
|
||||
--- addressbook/backends/file/e-book-backend-file.c 16 Jan 2006 16:36:14 -0000 1.41
|
||||
+++ addressbook/backends/file/e-book-backend-file.c 11 Apr 2006 11:25:19 -0000
|
||||
@@ -516,6 +516,8 @@ book_view_thread (gpointer data)
|
||||
{
|
||||
EDataBookView *book_view = data;
|
||||
FileBackendSearchClosure *closure = get_closure (book_view);
|
||||
+ if (!closure)
|
||||
+ return;
|
||||
EBookBackendFile *bf = closure->bf;
|
||||
const char *query;
|
||||
DB *db;
|
||||
@@ -652,6 +654,9 @@ e_book_backend_file_stop_book_view (EBoo
|
||||
{
|
||||
FileBackendSearchClosure *closure = get_closure (book_view);
|
||||
gboolean need_join = FALSE;
|
||||
+
|
||||
+ if (!closure)
|
||||
+ return;
|
||||
|
||||
d(printf ("stopping query\n"));
|
||||
g_mutex_lock (closure->mutex);
|
31
bnc-164323-random-mark-unread-updated.patch
Normal file
31
bnc-164323-random-mark-unread-updated.patch
Normal file
@ -0,0 +1,31 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.129
|
||||
diff -u -p -r1.129 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 17 Apr 2006 10:26:16 -0000 1.129
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 18 Apr 2006 15:14:40 -0000
|
||||
@@ -586,11 +586,7 @@ groupwise_sync (CamelFolder *folder, gbo
|
||||
EGwConnectionStatus status;
|
||||
EGwConnection *cnc;
|
||||
int count, i;
|
||||
-
|
||||
- /* Sync-up the (un)read changes before getting updates,
|
||||
- so that the getFolderList will reflect the most recent changes too */
|
||||
- groupwise_sync (folder, FALSE, ex);
|
||||
-
|
||||
+
|
||||
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
|
||||
((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
|
||||
groupwise_sync_summary (folder, ex);
|
||||
@@ -896,6 +892,10 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
char *time_string = NULL, *t_str = NULL;
|
||||
struct _folder_update_msg *msg;
|
||||
gboolean check_all = FALSE;
|
||||
+
|
||||
+ /* Sync-up the (un)read changes before getting updates,
|
||||
+ so that the getFolderList will reflect the most recent changes too */
|
||||
+ groupwise_sync (folder, FALSE, ex);
|
||||
|
||||
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
|
||||
g_warning ("In offline mode. Cannot refresh!!!\n");
|
19
bnc-164323-random-mark-unread.patch
Normal file
19
bnc-164323-random-mark-unread.patch
Normal file
@ -0,0 +1,19 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.128
|
||||
retrieving revision 1.129
|
||||
diff -u -r1.128 -r1.129
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 2006/04/06 09:43:14 1.128
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006/04/17 10:26:16 1.129
|
||||
@@ -587,6 +587,10 @@
|
||||
EGwConnection *cnc;
|
||||
int count, i;
|
||||
|
||||
+ /* Sync-up the (un)read changes before getting updates,
|
||||
+ so that the getFolderList will reflect the most recent changes too */
|
||||
+ groupwise_sync (folder, FALSE, ex);
|
||||
+
|
||||
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
|
||||
((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
|
||||
groupwise_sync_summary (folder, ex);
|
19
bnc-164367-gw-attachments-appts-throw-error.patch
Normal file
19
bnc-164367-gw-attachments-appts-throw-error.patch
Normal file
@ -0,0 +1,19 @@
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c,v
|
||||
retrieving revision 1.73
|
||||
diff -u -p -r1.73 e-cal-backend-groupwise-utils.c
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 9 Dec 2005 11:21:49 -0000 1.73
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 11 Apr 2006 09:12:09 -0000
|
||||
@@ -300,9 +300,10 @@ e_cal_backend_groupwise_set_attachments_
|
||||
/* FIXME the member does not follow the naming convention.
|
||||
* Should be fixed in e-gw-item*/
|
||||
attach_item->contentType = g_strdup (gnome_vfs_get_mime_type (attach_filename_full));
|
||||
- g_free (attach_filename_full);
|
||||
|
||||
attach_item->name = g_strdup (filename + strlen(uid) + 1);
|
||||
+ g_free (attach_filename_full);
|
||||
+
|
||||
/* do a base64 encoding so it can be embedded in a soap
|
||||
* message */
|
||||
encoded_data = soup_base64_encode (file_contents, file_len);
|
107
bnc-164676-eds-stuck-tight-loop.patch
Normal file
107
bnc-164676-eds-stuck-tight-loop.patch
Normal file
@ -0,0 +1,107 @@
|
||||
--- addressbook/backends/groupwise/e-book-backend-groupwise.c.orig 2006-04-16 20:19:03.086611569 +0200
|
||||
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 2006-04-16 20:24:43.271873993 +0200
|
||||
@@ -2814,8 +2814,41 @@ update_address_book_deltas (EBookBackend
|
||||
printf("sequence differs but no changes found !!!\n");
|
||||
break;
|
||||
}
|
||||
- printf("add_list size:%d\n", g_list_length(add_list));
|
||||
- printf("delete_list size:%d\n", g_list_length(delete_list));
|
||||
+ if (enable_debug) {
|
||||
+ printf("add_list size:%d\n", g_list_length(add_list));
|
||||
+ printf("delete_list size:%d\n", g_list_length(delete_list));
|
||||
+ }
|
||||
+
|
||||
+ for (; delete_list != NULL; delete_list = g_list_next(delete_list)) {
|
||||
+ const char *id;
|
||||
+
|
||||
+ /* deleted from the server */
|
||||
+ contact = e_contact_new ();
|
||||
+ fill_contact_from_gw_item (contact,
|
||||
+ E_GW_ITEM (delete_list->data),
|
||||
+ ebgw->priv->categories_by_id);
|
||||
+ if (enable_debug)
|
||||
+ printf("contact email:%s, contact name:%s\n", (char *) e_contact_get(contact, E_CONTACT_EMAIL_1), (char *) e_contact_get(contact, E_CONTACT_GIVEN_NAME));
|
||||
+ e_contact_set (contact,
|
||||
+ E_CONTACT_BOOK_URI,
|
||||
+ priv->original_uri);
|
||||
+ id = e_contact_get_const (contact, E_CONTACT_UID);
|
||||
+
|
||||
+ if (e_book_backend_cache_check_contact (ebgw->priv->cache, id)) {
|
||||
+ contact_num++;
|
||||
+
|
||||
+ if (book_view) {
|
||||
+ status_msg = g_strdup_printf (_("Updating contacts cache (%d)... "),
|
||||
+ contact_num);
|
||||
+ book_view_notify_status (book_view, status_msg);
|
||||
+ g_free (status_msg);
|
||||
+ }
|
||||
+ e_book_backend_cache_remove_contact (ebgw->priv->cache, id);
|
||||
+ e_book_backend_summary_remove_contact (ebgw->priv->summary, id);
|
||||
+ }
|
||||
+ g_object_unref(contact);
|
||||
+ g_object_unref (delete_list->data);
|
||||
+ }
|
||||
|
||||
for (; add_list != NULL; add_list = g_list_next(add_list)) {
|
||||
const char *id;
|
||||
@@ -2851,34 +2884,6 @@ update_address_book_deltas (EBookBackend
|
||||
g_object_unref (add_list->data);
|
||||
}
|
||||
|
||||
- for (; delete_list != NULL; delete_list = g_list_next(delete_list)) {
|
||||
- const char *id;
|
||||
-
|
||||
- /* deleted from the server */
|
||||
- contact = e_contact_new ();
|
||||
- fill_contact_from_gw_item (contact,
|
||||
- E_GW_ITEM (delete_list->data),
|
||||
- ebgw->priv->categories_by_id);
|
||||
- e_contact_set (contact,
|
||||
- E_CONTACT_BOOK_URI,
|
||||
- priv->original_uri);
|
||||
- id = e_contact_get_const (contact, E_CONTACT_UID);
|
||||
-
|
||||
- if (e_book_backend_cache_check_contact (ebgw->priv->cache, id)) {
|
||||
- contact_num++;
|
||||
-
|
||||
- if (book_view) {
|
||||
- status_msg = g_strdup_printf (_("Updating contacts cache (%d)... "),
|
||||
- contact_num);
|
||||
- book_view_notify_status (book_view, status_msg);
|
||||
- g_free (status_msg);
|
||||
- }
|
||||
- e_book_backend_cache_remove_contact (ebgw->priv->cache, id);
|
||||
- e_book_backend_summary_remove_contact (ebgw->priv->summary, id);
|
||||
- }
|
||||
- g_object_unref(contact);
|
||||
- g_object_unref (delete_list->data);
|
||||
- }
|
||||
cache_last_sequence += contact_num;
|
||||
}
|
||||
|
||||
--- servers/groupwise/e-gw-connection.c.orig 2006-04-16 20:19:30.383515263 +0200
|
||||
+++ servers/groupwise/e-gw-connection.c 2006-04-16 20:19:40.699856797 +0200
|
||||
@@ -764,7 +764,7 @@ e_gw_connection_get_items_delta (EGwConn
|
||||
SoupSoapMessage *msg;
|
||||
SoupSoapResponse *response;
|
||||
EGwConnectionStatus status;
|
||||
- SoupSoapParameter *param, *subparam;
|
||||
+ SoupSoapParameter *param, *subparam, *subsubparam;
|
||||
|
||||
g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_OBJECT);
|
||||
|
||||
@@ -819,11 +819,11 @@ e_gw_connection_get_items_delta (EGwConn
|
||||
|
||||
item = e_gw_item_new_from_soap_parameter (cnc->priv->user_email, container, subparam);
|
||||
|
||||
- subparam = soup_soap_parameter_get_first_child_by_name(subparam, "sync");
|
||||
- if (subparam) {
|
||||
+ subsubparam = soup_soap_parameter_get_first_child_by_name(subparam, "sync");
|
||||
+ if (subsubparam) {
|
||||
char *value;
|
||||
|
||||
- value = soup_soap_parameter_get_string_value (subparam);
|
||||
+ value = soup_soap_parameter_get_string_value (subsubparam);
|
||||
if (!strcmp (value, "add") || !strcmp (value, "update")) {
|
||||
*add_list = g_list_append (*add_list, item);
|
||||
} else if (!strcmp (value, "delete")) {
|
33
bnc-165714-eds-delegate-multiple-events.diff
Normal file
33
bnc-165714-eds-delegate-multiple-events.diff
Normal file
@ -0,0 +1,33 @@
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v
|
||||
retrieving revision 1.173.2.1
|
||||
diff -u -p -r1.173.2.1 e-cal-backend-groupwise.c
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise.c 6 Apr 2006 08:18:28 -0000 1.173.2.1
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c 21 Apr 2006 06:23:23 -0000
|
||||
@@ -1814,12 +1814,11 @@ e_cal_backend_groupwise_modify_object (E
|
||||
in_offline (cbgw);
|
||||
return GNOME_Evolution_Calendar_RepositoryOffline;
|
||||
}
|
||||
-
|
||||
+
|
||||
/* check the component for validity */
|
||||
icalcomp = icalparser_parse_string (calobj);
|
||||
if (!icalcomp)
|
||||
return GNOME_Evolution_Calendar_InvalidObject;
|
||||
-
|
||||
comp = e_cal_component_new ();
|
||||
e_cal_component_set_icalcomponent (comp, icalcomp);
|
||||
e_cal_component_get_uid (comp, &uid);
|
||||
@@ -1844,9 +1843,8 @@ e_cal_backend_groupwise_modify_object (E
|
||||
|
||||
if (mod == CALOBJ_MOD_ALL && e_cal_component_is_instance (comp)) {
|
||||
recur_key = uid;
|
||||
- } else {
|
||||
- id = e_gw_item_get_id (item);
|
||||
- }
|
||||
+ }
|
||||
+ id = e_gw_item_get_id (item);
|
||||
|
||||
status = e_gw_connection_delegate_request (priv->cnc, item, id, NULL, NULL, recur_key);
|
||||
|
128
bnc-167330-default-GW-alarms.patch
Normal file
128
bnc-167330-default-GW-alarms.patch
Normal file
@ -0,0 +1,128 @@
|
||||
Index: calendar/ChangeLog
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
|
||||
retrieving revision 1.568.2.16
|
||||
diff -u -p -r1.568.2.16 ChangeLog
|
||||
--- calendar/ChangeLog 14 Jun 2006 11:02:55 -0000 1.568.2.16
|
||||
+++ calendar/ChangeLog 17 Jul 2006 06:05:27 -0000
|
||||
@@ -1,3 +1,12 @@
|
||||
+2006-07-17 Harish Krishnaswamy <kharish@novell.com>
|
||||
+
|
||||
+ * backends/groupwise/e-cal-backend-groupwise-utils.c:
|
||||
+ (set_default_alarms), (e_gw_item_to_cal_component):
|
||||
+ * backends/groupwise/e-cal-backend-groupwise-utils.h:
|
||||
+ Apply default alarm client preference to GW events if
|
||||
+ the event does not already have one. Fixes Bug
|
||||
+ #167330 on bugzilla.novell.com.
|
||||
+
|
||||
2006-06-14 Wang Xin <jedy.wang@sun.com>
|
||||
|
||||
Fixes #344253
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c,v
|
||||
retrieving revision 1.73
|
||||
diff -u -p -r1.73 e-cal-backend-groupwise-utils.c
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 9 Dec 2005 11:21:49 -0000 1.73
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 17 Jul 2006 06:05:27 -0000
|
||||
@@ -803,6 +803,67 @@ set_attachments_to_cal_component (EGwIte
|
||||
|
||||
}
|
||||
|
||||
+static void
|
||||
+set_default_alarms (ECalComponent *comp)
|
||||
+{
|
||||
+
|
||||
+ GConfClient *gconf = gconf_client_get_default ();
|
||||
+
|
||||
+ if (gconf_client_get_bool (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER, NULL)) {
|
||||
+
|
||||
+ ECalComponentAlarm *acomp;
|
||||
+ int interval;
|
||||
+ char * units;
|
||||
+ enum {
|
||||
+ DAYS,
|
||||
+ HOURS,
|
||||
+ MINUTES
|
||||
+ } duration;
|
||||
+ ECalComponentAlarmTrigger trigger;
|
||||
+
|
||||
+ interval = gconf_client_get_int (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER_INTERVAL, NULL);
|
||||
+ units = gconf_client_get_string (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER_UNITS, NULL);
|
||||
+ g_object_unref (gconf);
|
||||
+
|
||||
+ if (units && !strcmp (units, "days"))
|
||||
+ duration = DAYS;
|
||||
+ else if (units && !strcmp (units, "hours"))
|
||||
+ duration = HOURS;
|
||||
+ else
|
||||
+ duration = MINUTES;
|
||||
+ g_free (units);
|
||||
+ acomp = e_cal_component_alarm_new ();
|
||||
+
|
||||
+ e_cal_component_alarm_set_action (acomp, E_CAL_COMPONENT_ALARM_DISPLAY);
|
||||
+
|
||||
+ trigger.type = E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START;
|
||||
+ memset (&trigger.u.rel_duration, 0, sizeof (trigger.u.rel_duration));
|
||||
+
|
||||
+ trigger.u.rel_duration.is_neg = TRUE;
|
||||
+
|
||||
+ switch (duration) {
|
||||
+ case MINUTES:
|
||||
+ trigger.u.rel_duration.minutes = interval;
|
||||
+ break;
|
||||
+ case HOURS:
|
||||
+ trigger.u.rel_duration.hours = interval;
|
||||
+ break;
|
||||
+ case DAYS:
|
||||
+ trigger.u.rel_duration.days = interval;
|
||||
+ break;
|
||||
+ default:
|
||||
+ e_cal_component_alarm_free (acomp);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ e_cal_component_alarm_set_trigger (acomp, trigger);
|
||||
+ e_cal_component_add_alarm (comp, acomp);
|
||||
+
|
||||
+ e_cal_component_alarm_free (acomp);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
ECalComponent *
|
||||
e_gw_item_to_cal_component (EGwItem *item, ECalBackendGroupwise *cbgw)
|
||||
{
|
||||
@@ -1111,9 +1172,9 @@ e_gw_item_to_cal_component (EGwItem *ite
|
||||
trigger.u.rel_duration = icaldurationtype_from_int (alarm_duration);
|
||||
e_cal_component_alarm_set_trigger (alarm, trigger);
|
||||
e_cal_component_add_alarm (comp, alarm);
|
||||
- }
|
||||
|
||||
-
|
||||
+ } else
|
||||
+ set_default_alarms (comp);
|
||||
|
||||
break;
|
||||
case E_GW_ITEM_TYPE_TASK :
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.h,v
|
||||
retrieving revision 1.18
|
||||
diff -u -p -r1.18 e-cal-backend-groupwise-utils.h
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.h 11 Oct 2005 07:56:18 -0000 1.18
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.h 17 Jul 2006 06:05:27 -0000
|
||||
@@ -33,6 +33,13 @@ G_BEGIN_DECLS
|
||||
#define GW_EVENT_TYPE_ID "@4:"
|
||||
#define GW_TODO_TYPE_ID "@3:"
|
||||
|
||||
+
|
||||
+/* Default reminder */
|
||||
+#define CALENDAR_CONFIG_PREFIX "/apps/evolution/calendar"
|
||||
+#define CALENDAR_CONFIG_DEFAULT_REMINDER CALENDAR_CONFIG_PREFIX "/other/use_default_reminder"
|
||||
+#define CALENDAR_CONFIG_DEFAULT_REMINDER_INTERVAL CALENDAR_CONFIG_PREFIX "/other/default_reminder_interval"
|
||||
+#define CALENDAR_CONFIG_DEFAULT_REMINDER_UNITS CALENDAR_CONFIG_PREFIX "/other/default_reminder_units"
|
||||
+
|
||||
/*
|
||||
* Items management
|
||||
*/
|
95
bnc-167638.patch
Normal file
95
bnc-167638.patch
Normal file
@ -0,0 +1,95 @@
|
||||
Index: camel/camel.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/camel.c,v
|
||||
retrieving revision 1.56
|
||||
diff -u -r1.56 camel/camel.c
|
||||
--- camel/camel.c 6 Dec 2005 04:21:56 -0000 1.56
|
||||
+++ camel/camel.c 20 Apr 2006 21:12:40 -0000
|
||||
@@ -44,6 +44,8 @@
|
||||
|
||||
static int initialised = FALSE;
|
||||
|
||||
+int camel_application_is_exiting = FALSE;
|
||||
+
|
||||
static void
|
||||
camel_shutdown (void)
|
||||
{
|
||||
Index: camel/providers/imap/camel-imap-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.c,v
|
||||
retrieving revision 1.358
|
||||
diff -u -r1.358 camel/camel-imap-folder.c
|
||||
--- camel/providers/imap/camel-imap-folder.c 10 Jan 2006 07:56:47 -0000 1.358
|
||||
+++ camel/providers/imap/camel-imap-folder.c 20 Apr 2006 21:12:40 -0000
|
||||
@@ -607,6 +607,7 @@
|
||||
{
|
||||
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
|
||||
CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
|
||||
+ extern int camel_application_is_exiting;
|
||||
struct {
|
||||
char *uid;
|
||||
guint32 flags;
|
||||
@@ -619,7 +620,10 @@
|
||||
GArray *removed;
|
||||
gboolean ok;
|
||||
CamelFolderChangeInfo *changes = NULL;
|
||||
-
|
||||
+
|
||||
+ if (camel_application_is_exiting)
|
||||
+ return;
|
||||
+
|
||||
CAMEL_SERVICE_ASSERT_LOCKED (store, connect_lock);
|
||||
imap_folder->need_rescan = FALSE;
|
||||
|
||||
@@ -2617,6 +2621,7 @@
|
||||
GArray *expunged, CamelException *ex)
|
||||
{
|
||||
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
|
||||
+ extern int camel_application_is_exiting;
|
||||
CamelFolderChangeInfo *changes;
|
||||
CamelMessageInfo *info;
|
||||
int len;
|
||||
@@ -2646,7 +2651,7 @@
|
||||
}
|
||||
|
||||
len = camel_folder_summary_count (folder->summary);
|
||||
- if (exists > len)
|
||||
+ if (exists > len && !camel_application_is_exiting)
|
||||
imap_update_summary (folder, exists, changes, ex);
|
||||
|
||||
if (camel_folder_change_info_changed (changes))
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.130
|
||||
diff -u -p -r1.130 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 18 Apr 2006 15:15:30 -0000 1.130
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 21 Apr 2006 11:18:22 -0000
|
||||
@@ -59,7 +59,7 @@
|
||||
#define ADD_JUNK_ENTRY 1
|
||||
#define REMOVE_JUNK_ENTRY -1
|
||||
#define JUNK_FOLDER "Junk Mail"
|
||||
-#define READ_CURSOR_MAX_IDS 500
|
||||
+#define READ_CURSOR_MAX_IDS 50
|
||||
#define MAX_ATTACHMENT_SIZE 1*1024*1024 /*In bytes*/
|
||||
|
||||
static CamelOfflineFolderClass *parent_class = NULL;
|
||||
@@ -749,6 +749,9 @@ struct _folder_update_msg {
|
||||
static void
|
||||
update_update (CamelSession *session, CamelSessionThreadMsg *msg)
|
||||
{
|
||||
+
|
||||
+ extern int camel_application_is_exiting;
|
||||
+
|
||||
struct _folder_update_msg *m = (struct _folder_update_msg *)msg;
|
||||
EGwConnectionStatus status;
|
||||
CamelException *ex = NULL;
|
||||
@@ -767,7 +770,7 @@ update_update (CamelSession *session, Ca
|
||||
done = FALSE;
|
||||
m->slist = NULL;
|
||||
|
||||
- while (!done) {
|
||||
+ while (!done && !camel_application_is_exiting) {
|
||||
item_list = NULL;
|
||||
status = e_gw_connection_get_all_mail_uids (m->cnc, m->container_id, cursor, FALSE, READ_CURSOR_MAX_IDS, position, &item_list);
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
31
bnc-169034-eds-pub-folder-download.diff
Normal file
31
bnc-169034-eds-pub-folder-download.diff
Normal file
@ -0,0 +1,31 @@
|
||||
Index: servers/exchange/storage/exchange-account.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-account.c,v
|
||||
retrieving revision 1.31
|
||||
diff -u -p -r1.31 exchange-account.c
|
||||
--- servers/exchange/storage/exchange-account.c 20 Apr 2006 13:04:12 -0000 1.31
|
||||
+++ servers/exchange/storage/exchange-account.c 2 May 2006 11:22:10 -0000
|
||||
@@ -1272,7 +1272,7 @@ setup_account_hierarchies (ExchangeAccou
|
||||
account->priv->identity_name,
|
||||
account->priv->identity_email,
|
||||
account->priv->source_uri,
|
||||
- FALSE);
|
||||
+ TRUE);
|
||||
setup_hierarchy (account, hier);
|
||||
g_free (phys_uri_prefix);
|
||||
|
||||
Index: servers/exchange/storage/exchange-hierarchy-favorites.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-hierarchy-favorites.c,v
|
||||
retrieving revision 1.7
|
||||
diff -u -p -r1.7 exchange-hierarchy-favorites.c
|
||||
--- servers/exchange/storage/exchange-hierarchy-favorites.c 6 Feb 2006 08:01:53 -0000 1.7
|
||||
+++ servers/exchange/storage/exchange-hierarchy-favorites.c 2 May 2006 11:27:16 -0000
|
||||
@@ -336,6 +336,6 @@ exchange_hierarchy_favorites_new (Exchan
|
||||
public_uri,
|
||||
owner_name, owner_email,
|
||||
source_uri,
|
||||
- FALSE);
|
||||
+ TRUE);
|
||||
return hier;
|
||||
}
|
29
bnc-169997-eds-infinite-loop.diff
Normal file
29
bnc-169997-eds-infinite-loop.diff
Normal file
@ -0,0 +1,29 @@
|
||||
--- addressbook/backends/groupwise/e-book-backend-groupwise.c.orig 2006-05-11 12:21:57.361493158 +0200
|
||||
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 2006-05-11 12:15:45.055028496 +0200
|
||||
@@ -2883,7 +2883,6 @@ update_address_book_deltas (EBookBackend
|
||||
|
||||
if (cache_last_sequence != server_last_sequence) {
|
||||
|
||||
- while (cache_last_sequence < server_last_sequence) {
|
||||
if (enable_debug) {
|
||||
printf("cache_last_sequence:%lf, server_last_sequence:%lf\n", cache_last_sequence, server_last_sequence);
|
||||
printf("Calling get_items_delta\n");
|
||||
@@ -2897,7 +2896,8 @@ update_address_book_deltas (EBookBackend
|
||||
if (add_list == NULL && delete_list == NULL) {
|
||||
if (enable_debug)
|
||||
printf("sequence differs but no changes found !!!\n");
|
||||
- break;
|
||||
+ g_mutex_unlock (priv->update_mutex);
|
||||
+ return TRUE;
|
||||
}
|
||||
sync_required = TRUE;
|
||||
if (enable_debug) {
|
||||
@@ -2976,7 +2976,7 @@ update_address_book_deltas (EBookBackend
|
||||
g_object_unref (add_list->data);
|
||||
}
|
||||
cache_last_sequence += contact_num;
|
||||
- }
|
||||
+
|
||||
|
||||
/* cache is updated, now adding the sequence information to the cache */
|
||||
|
184
bnc-170052-eds-crash.patch
Normal file
184
bnc-170052-eds-crash.patch
Normal file
@ -0,0 +1,184 @@
|
||||
--- addressbook/backends/groupwise/e-book-backend-groupwise.c 2006-06-09 15:05:45.000000000 +0530
|
||||
+++ addressbook/backends/groupwise/e-book-backend-groupwise-new.c 2006-06-09 14:35:19.000000000 +0530
|
||||
@@ -73,12 +73,12 @@ struct _EBookBackendGroupwisePrivate {
|
||||
int mode;
|
||||
int cache_timeout;
|
||||
EBookBackendSummary *summary;
|
||||
+ GMutex *update_cache_mutex;
|
||||
GMutex *update_mutex;
|
||||
DB *file_db;
|
||||
DB_ENV *env;
|
||||
/* for future use */
|
||||
void *reserved1;
|
||||
- void *reserved2;
|
||||
};
|
||||
|
||||
static GStaticMutex global_env_lock = G_STATIC_MUTEX_INIT;
|
||||
@@ -1170,6 +1170,7 @@ e_book_backend_groupwise_create_contact
|
||||
e_contact_set (contact, E_CONTACT_UID, id);
|
||||
g_free (id);
|
||||
e_book_backend_db_cache_add_contact (egwb->priv->file_db, contact);
|
||||
+ egwb->priv->file_db->sync(egwb->priv->file_db, 0);
|
||||
e_book_backend_summary_add_contact (egwb->priv->summary, contact);
|
||||
e_data_book_respond_create(book, opid, GNOME_Evolution_Addressbook_Success, contact);
|
||||
|
||||
@@ -1223,6 +1224,7 @@ e_book_backend_groupwise_remove_contacts
|
||||
e_book_backend_db_cache_remove_contact (ebgw->priv->file_db, id);
|
||||
e_book_backend_summary_remove_contact (ebgw->priv->summary, id);
|
||||
}
|
||||
+ ebgw->priv->file_db->sync(ebgw->priv->file_db, 0);
|
||||
e_data_book_respond_remove_contacts (book, opid,
|
||||
GNOME_Evolution_Addressbook_Success, deleted_ids);
|
||||
return;
|
||||
@@ -1358,6 +1360,7 @@ e_book_backend_groupwise_modify_contact
|
||||
e_book_backend_db_cache_remove_contact (egwb->priv->file_db, id);
|
||||
e_book_backend_summary_remove_contact (egwb->priv->summary, id);
|
||||
e_book_backend_db_cache_add_contact (egwb->priv->file_db, contact);
|
||||
+ egwb->priv->file_db->sync(egwb->priv->file_db, 0);
|
||||
e_book_backend_summary_add_contact (egwb->priv->summary, contact);
|
||||
}
|
||||
else
|
||||
@@ -2691,6 +2694,8 @@ update_cache (EBookBackendGroupwise *ebg
|
||||
if (!ebgw)
|
||||
return FALSE;
|
||||
|
||||
+ g_mutex_lock (ebgw->priv->update_cache_mutex);
|
||||
+
|
||||
if (enable_debug) {
|
||||
g_get_current_time(&start);
|
||||
printf("updating cache for %s\n", ebgw->priv->book_name);
|
||||
@@ -2729,6 +2734,7 @@ update_cache (EBookBackendGroupwise *ebg
|
||||
bonobo_object_unref (book_view);
|
||||
if (enable_debug)
|
||||
printf("No connection with the server \n");
|
||||
+ g_mutex_unlock (ebgw->priv->update_cache_mutex);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -2738,6 +2744,7 @@ update_cache (EBookBackendGroupwise *ebg
|
||||
contact = e_contact_new ();
|
||||
fill_contact_from_gw_item (contact, E_GW_ITEM (gw_items->data),
|
||||
ebgw->priv->categories_by_id);
|
||||
+
|
||||
e_contact_set (contact, E_CONTACT_BOOK_URI, ebgw->priv->original_uri);
|
||||
id = e_contact_get_const (contact, E_CONTACT_UID);
|
||||
|
||||
@@ -2782,6 +2789,7 @@ update_cache (EBookBackendGroupwise *ebg
|
||||
printf("updating the cache for %s complated in %ld.%03ld seconds for %d contacts\n",
|
||||
ebgw->priv->book_name, diff / 1000, diff % 1000, contact_num);
|
||||
}
|
||||
+ g_mutex_unlock (ebgw->priv->update_cache_mutex);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -2797,6 +2805,7 @@ update_address_book_deltas (EBookBackend
|
||||
EContact *contact;
|
||||
EDataBookView *book_view;
|
||||
GroupwiseBackendSearchClosure *closure;
|
||||
+ EGwItem *item;
|
||||
|
||||
if (!ebgw)
|
||||
return FALSE;
|
||||
@@ -2827,6 +2836,9 @@ update_address_book_deltas (EBookBackend
|
||||
if (enable_debug)
|
||||
printf ("sequence is reset, rebuilding cache...\n");
|
||||
build_cache (ebgw);
|
||||
+ add_sequence_to_cache (priv->file_db, server_first_sequence,
|
||||
+ server_last_sequence, server_last_po_rebuild_time);
|
||||
+ ebgw->priv->file_db->sync (ebgw->priv->file_db, 0);
|
||||
g_mutex_unlock (priv->update_mutex);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -2844,6 +2856,7 @@ update_address_book_deltas (EBookBackend
|
||||
add_sequence_to_cache (priv->file_db, server_first_sequence,
|
||||
server_last_sequence, server_last_po_rebuild_time);
|
||||
ebgw->priv->file_db->sync (ebgw->priv->file_db, 0);
|
||||
+ g_mutex_unlock (priv->update_mutex);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2896,6 +2909,8 @@ update_address_book_deltas (EBookBackend
|
||||
if (add_list == NULL && delete_list == NULL) {
|
||||
if (enable_debug)
|
||||
printf("sequence differs but no changes found !!!\n");
|
||||
+ add_sequence_to_cache (priv->file_db, server_first_sequence,
|
||||
+ server_last_sequence, server_last_po_rebuild_time);
|
||||
g_mutex_unlock (priv->update_mutex);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -2945,6 +2960,20 @@ update_address_book_deltas (EBookBackend
|
||||
E_GW_ITEM (add_list->data),
|
||||
ebgw->priv->categories_by_id);
|
||||
|
||||
+ /* When a distribution list is modified the server sends me a delete and add response.
|
||||
+ But it doesnt send me the members, so i have to explicitly request the server for the members of the distribution list */
|
||||
+
|
||||
+ if (e_contact_get (contact, E_CONTACT_IS_LIST)) {
|
||||
+ if(enable_debug)
|
||||
+ printf ("Contact List modified fetching the members of the contact list\n");
|
||||
+
|
||||
+ status = e_gw_connection_get_item (ebgw->priv->cnc, ebgw->priv->container_id, e_contact_get (contact, E_CONTACT_UID), "name email default members", &item);
|
||||
+ g_object_unref (contact);
|
||||
+ contact = e_contact_new ();
|
||||
+ fill_contact_from_gw_item (contact, item, ebgw->priv->categories_by_id);
|
||||
+ g_object_unref (item);
|
||||
+ }
|
||||
+
|
||||
if (enable_debug)
|
||||
printf("contact email:%s, contact name:%s\n", (char *)e_contact_get(contact, E_CONTACT_EMAIL_1),(char *) e_contact_get(contact, E_CONTACT_GIVEN_NAME));
|
||||
e_contact_set (contact,
|
||||
@@ -2977,7 +3006,6 @@ update_address_book_deltas (EBookBackend
|
||||
}
|
||||
cache_last_sequence += contact_num;
|
||||
|
||||
-
|
||||
/* cache is updated, now adding the sequence information to the cache */
|
||||
|
||||
add_sequence_to_cache (priv->file_db, server_first_sequence,
|
||||
@@ -3054,11 +3082,15 @@ e_book_backend_groupwise_authenticate_us
|
||||
const char *cache_refresh_interval_set;
|
||||
int cache_refresh_interval = CACHE_REFRESH_INTERVAL;
|
||||
|
||||
- if (enable_debug)
|
||||
- printf ("authenticate user ............\n");
|
||||
ebgw = E_BOOK_BACKEND_GROUPWISE (backend);
|
||||
priv = ebgw->priv;
|
||||
|
||||
+ if (enable_debug) {
|
||||
+ printf ("authenticate user ............\n");
|
||||
+ if(priv->book_name)
|
||||
+ printf("book_name:%s\n", priv->book_name);
|
||||
+ }
|
||||
+
|
||||
|
||||
switch (ebgw->priv->mode) {
|
||||
case GNOME_Evolution_Addressbook_MODE_LOCAL:
|
||||
@@ -3094,9 +3126,6 @@ e_book_backend_groupwise_authenticate_us
|
||||
|
||||
id = NULL;
|
||||
is_writable = FALSE;
|
||||
- if (enable_debug)
|
||||
- if(priv->book_name)
|
||||
- printf("book_name:%s\n", priv->book_name);
|
||||
status = e_gw_connection_get_address_book_id (priv->cnc, priv->book_name, &id, &is_writable);
|
||||
if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
status = e_gw_connection_get_address_book_id (priv->cnc, priv->book_name, &id, &is_writable);
|
||||
@@ -3632,6 +3661,8 @@ e_book_backend_groupwise_dispose (GObjec
|
||||
}
|
||||
if (bgw->priv->update_mutex)
|
||||
g_mutex_free (bgw->priv->update_mutex);
|
||||
+ if (bgw->priv->update_cache_mutex)
|
||||
+ g_mutex_free (bgw->priv->update_cache_mutex);
|
||||
|
||||
g_free (bgw->priv);
|
||||
bgw->priv = NULL;
|
||||
@@ -3690,8 +3721,8 @@ e_book_backend_groupwise_init (EBookBack
|
||||
priv->original_uri = NULL;
|
||||
priv->cache_timeout = 0;
|
||||
priv->update_mutex = g_mutex_new();
|
||||
+ priv->update_cache_mutex = g_mutex_new ();
|
||||
priv->reserved1 = NULL;
|
||||
- priv->reserved2 = NULL;
|
||||
backend->priv = priv;
|
||||
|
||||
if (g_getenv ("GROUPWISE_DEBUG")) {
|
437
bnc-173454.patch
Normal file
437
bnc-173454.patch
Normal file
@ -0,0 +1,437 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.114.2.11
|
||||
diff -u -r1.114.2.11 camel/providers/groupwise/camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 24 Apr 2006 09:59:12 -0000 1.114.2.11
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 15 May 2006 18:01:10 -0000
|
||||
@@ -1777,7 +1777,6 @@
|
||||
CamelGroupwiseStore *gw_store= CAMEL_GROUPWISE_STORE(folder->parent_store);
|
||||
CamelGroupwiseStorePrivate *priv = gw_store->priv;
|
||||
CamelOfflineStore *offline = (CamelOfflineStore *) folder->parent_store;
|
||||
- CamelAddress *recipients;
|
||||
EGwConnectionStatus status;
|
||||
EGwConnection *cnc;
|
||||
EGwItem *item;
|
||||
@@ -1804,14 +1803,8 @@
|
||||
CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
/*Get the container id*/
|
||||
container_id = camel_groupwise_store_container_id_lookup (gw_store, folder->full_name) ;
|
||||
-
|
||||
- /* FIXME Separate To/CC/BCC? */
|
||||
- recipients = CAMEL_ADDRESS (camel_internet_address_new ());
|
||||
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO)));
|
||||
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC)));
|
||||
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_BCC)));
|
||||
-
|
||||
- item = camel_groupwise_util_item_from_message (cnc, message, CAMEL_ADDRESS (message->from), recipients);
|
||||
+
|
||||
+ item = camel_groupwise_util_item_from_message (cnc, message, CAMEL_ADDRESS (message->from));
|
||||
/*Set the source*/
|
||||
if (!strcmp (folder->name, RECEIVED))
|
||||
e_gw_item_set_source (item, "received");
|
||||
Index: camel/providers/groupwise/camel-groupwise-transport.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-transport.c,v
|
||||
retrieving revision 1.27
|
||||
diff -u -r1.27 camel/providers/groupwise/camel-groupwise-transport.c
|
||||
--- camel/providers/groupwise/camel-groupwise-transport.c 23 Jan 2006 10:37:24 -0000 1.27
|
||||
+++ camel/providers/groupwise/camel-groupwise-transport.c 15 May 2006 18:01:10 -0000
|
||||
@@ -180,7 +180,7 @@
|
||||
}
|
||||
|
||||
|
||||
- item = camel_groupwise_util_item_from_message (cnc, message, from, recipients);
|
||||
+ item = camel_groupwise_util_item_from_message (cnc, message, from);
|
||||
|
||||
reply_request = (char *)camel_medium_get_header (CAMEL_MEDIUM (message), "In-Reply-To");
|
||||
if (reply_request) {
|
||||
Index: camel/providers/groupwise/camel-groupwise-utils.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-utils.c,v
|
||||
retrieving revision 1.29.2.1
|
||||
diff -u -r1.29.2.1 camel/providers/groupwise/camel-groupwise-utils.c
|
||||
--- camel/providers/groupwise/camel-groupwise-utils.c 21 Mar 2006 10:41:51 -0000 1.29.2.1
|
||||
+++ camel/providers/groupwise/camel-groupwise-utils.c 15 May 2006 18:01:10 -0000
|
||||
@@ -35,6 +35,8 @@
|
||||
#include "camel/camel-multipart.h"
|
||||
#include "camel/camel-service.h"
|
||||
#include "camel/camel-stream-mem.h"
|
||||
+#include "camel/camel-stream-filter.h"
|
||||
+#include "camel/camel-mime-filter-charset.h"
|
||||
|
||||
#include "camel-groupwise-utils.h"
|
||||
|
||||
@@ -261,7 +263,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
-GSList *
|
||||
+static GSList *
|
||||
add_recipients(GSList *recipient_list, CamelAddress *recipients, int recipient_type)
|
||||
{
|
||||
int total_add,i;
|
||||
@@ -278,42 +280,31 @@
|
||||
recipient->display_name = g_strdup (name);
|
||||
recipient->type = recipient_type;
|
||||
recipient->status = E_GW_ITEM_STAT_NONE;
|
||||
- recipient_list= g_slist_append (recipient_list, recipient);
|
||||
+ recipient_list = g_slist_prepend (recipient_list, recipient);
|
||||
}
|
||||
}
|
||||
return recipient_list;
|
||||
}
|
||||
|
||||
static void
|
||||
-send_as_attachment (EGwConnection *cnc, EGwItem *item, CamelStreamMem *content, char *buffer, CamelContentType *type, CamelDataWrapper *dw, const char *filename, const char *encoding, const char *cid, GSList **attach_list)
|
||||
+send_as_attachment (EGwConnection *cnc, EGwItem *item, CamelStreamMem *content, CamelContentType *type, CamelDataWrapper *dw, const char *filename, const char *cid, GSList **attach_list)
|
||||
{
|
||||
EGwItemLinkInfo *info = NULL;
|
||||
EGwConnectionStatus status;
|
||||
EGwItemAttachment *attachment;
|
||||
EGwItem *temp_item;
|
||||
-
|
||||
- int len;
|
||||
- len = content->buffer->len;
|
||||
-
|
||||
+
|
||||
attachment = g_new0 (EGwItemAttachment, 1);
|
||||
- attachment->contentType = g_strdup_printf ("%s/%s", type->type, type->subtype);
|
||||
-
|
||||
- if (cid) {
|
||||
- gchar **t;
|
||||
- //strip_lt_gt ((char **)&cid, 2, 3);
|
||||
- t = g_strsplit_set (cid,"<>",-1);
|
||||
- if (!t[1])
|
||||
- attachment->contentid = g_strdup (cid);
|
||||
- else
|
||||
- attachment->contentid = g_strdup (t[1]);
|
||||
- g_strfreev (t);
|
||||
- }
|
||||
-
|
||||
+ attachment->contentType = camel_content_type_simple (type);
|
||||
+
|
||||
+ if (cid)
|
||||
+ attachment->contentid = camel_header_contentid_decode (cid);
|
||||
+
|
||||
if (filename) {
|
||||
- if (!strcmp (attachment->contentType, "application/pgp-signature")) {
|
||||
+ if (camel_content_type_is (type, "application", "pgp-signature")) {
|
||||
char *temp_str;
|
||||
int temp_len;
|
||||
- temp_str = soup_base64_encode (buffer, len);
|
||||
+ temp_str = soup_base64_encode (content->buffer->data, content->buffer->len);
|
||||
temp_len = strlen (temp_str);
|
||||
attachment->data = g_strdup (temp_str);
|
||||
attachment->size = temp_len;
|
||||
@@ -321,23 +312,16 @@
|
||||
temp_str = NULL;
|
||||
temp_len = 0;
|
||||
} else {
|
||||
- if (strlen(encoding) > 0) {
|
||||
- attachment->data = g_malloc0 (content->buffer->len+1);
|
||||
- attachment->data = memcpy (attachment->data,
|
||||
- content->buffer->data,
|
||||
- content->buffer->len);
|
||||
- attachment->size = content->buffer->len;
|
||||
- } else {
|
||||
- attachment->data = soup_base64_encode(content->buffer->data, content->buffer->len);
|
||||
- attachment->size = strlen (attachment->data);
|
||||
- }
|
||||
+ attachment->data = soup_base64_encode(content->buffer->data, content->buffer->len);
|
||||
+ attachment->size = strlen (attachment->data);
|
||||
}
|
||||
} else {
|
||||
char *temp_str;
|
||||
int temp_len;
|
||||
if (!strcmp (attachment->contentType, "multipart/digest")) {
|
||||
+ /* FIXME? */
|
||||
} else {
|
||||
- temp_str = soup_base64_encode (buffer, len);
|
||||
+ temp_str = soup_base64_encode (content->buffer->data, content->buffer->len);
|
||||
temp_len = strlen (temp_str);
|
||||
attachment->data = g_strdup (temp_str);
|
||||
attachment->size = temp_len;
|
||||
@@ -347,28 +331,30 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (!strcmp (attachment->contentType, "text/html") || !(strcmp (attachment->contentType, "multipart/alternative"))) {
|
||||
+ if (camel_content_type_is (type, "text", "html") || camel_content_type_is (type, "multipart", "alternative")) {
|
||||
if (!filename)
|
||||
filename = "text.htm";
|
||||
- if (!(strcmp (attachment->contentType, "multipart/alternative"))) {
|
||||
+ if (camel_content_type_is (type, "multipart", "alternative")) {
|
||||
+ /* FIXME: this just feels so wrong... */
|
||||
g_free (attachment->contentType);
|
||||
attachment->contentType = g_strdup ("text/html");
|
||||
}
|
||||
}
|
||||
|
||||
attachment->name = g_strdup (filename ? filename : "");
|
||||
- if (!g_ascii_strncasecmp (attachment->contentType, RFC_822, strlen (RFC_822))) {
|
||||
- char *temp_id = NULL, *id = NULL;
|
||||
- temp_id = (char *)camel_medium_get_header (CAMEL_MEDIUM ((CamelMimeMessage *)dw), "Message-Id");
|
||||
- int len = strlen (temp_id);
|
||||
-
|
||||
- id = (char *)g_malloc0 (len-1);
|
||||
- id = memcpy(id, temp_id+2, len-3);
|
||||
-
|
||||
- status = e_gw_connection_forward_item (cnc, id, NULL, TRUE, &temp_item);
|
||||
- if (status != E_GW_CONNECTION_STATUS_OK)
|
||||
+ if (camel_content_type_is (type, "message", "rfc822")) {
|
||||
+ const char *message_id;
|
||||
+ char *msgid;
|
||||
+
|
||||
+ message_id = camel_medium_get_header (CAMEL_MEDIUM (dw), "Message-Id");
|
||||
+ msgid = camel_header_msgid_decode (message_id);
|
||||
+
|
||||
+ status = e_gw_connection_forward_item (cnc, msgid, NULL, TRUE, &temp_item);
|
||||
+ g_free (msgid);
|
||||
+
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
g_warning ("Could not send a forwardRequest...continuing without!!\n");
|
||||
- else {
|
||||
+ } else {
|
||||
GSList *attach_list = e_gw_item_get_attach_id_list (temp_item);
|
||||
EGwItemAttachment *temp_attach = (EGwItemAttachment *)attach_list->data;
|
||||
attachment->id = g_strdup (temp_attach->id);
|
||||
@@ -383,41 +369,36 @@
|
||||
info = e_gw_item_get_link_info (temp_item);
|
||||
e_gw_item_set_link_info (item, info);
|
||||
}
|
||||
- //attachment->id = g_strdup (id);
|
||||
- g_free (id);
|
||||
}
|
||||
|
||||
*attach_list = g_slist_append (*attach_list, attachment);
|
||||
}
|
||||
|
||||
EGwItem *
|
||||
-camel_groupwise_util_item_from_message (EGwConnection *cnc, CamelMimeMessage *message, CamelAddress *from, CamelAddress *recipients)
|
||||
+camel_groupwise_util_item_from_message (EGwConnection *cnc, CamelMimeMessage *message, CamelAddress *from)
|
||||
{
|
||||
EGwItem *item;
|
||||
EGwItemOrganizer *org = g_new0 (EGwItemOrganizer, 1);
|
||||
-
|
||||
const char *display_name = NULL, *email = NULL;
|
||||
char *send_options = NULL;
|
||||
CamelMultipart *mp;
|
||||
- GSList *recipient_list = NULL, *attach_list = NULL;
|
||||
+ GSList *recipient_list = NULL, *attach_list = NULL;
|
||||
+ CamelAddress *recipients;
|
||||
|
||||
/*Egroupwise item*/
|
||||
item = e_gw_item_new_empty ();
|
||||
|
||||
/*populate recipient list*/
|
||||
- camel_address_remove(recipients,-1);
|
||||
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO)));
|
||||
+ recipients = CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO));
|
||||
recipient_list=add_recipients(recipient_list,recipients,E_GW_ITEM_RECIPIENT_TO);
|
||||
-
|
||||
- camel_address_remove(recipients,-1);
|
||||
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC)));
|
||||
+
|
||||
+ recipients = CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC));
|
||||
recipient_list=add_recipients(recipient_list,recipients,E_GW_ITEM_RECIPIENT_CC);
|
||||
|
||||
- camel_address_remove(recipients,-1);
|
||||
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_BCC)));
|
||||
+ recipients = CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_BCC));
|
||||
recipient_list=add_recipients(recipient_list,recipients,E_GW_ITEM_RECIPIENT_BC);
|
||||
-
|
||||
-
|
||||
+ recipient_list = g_slist_reverse (recipient_list);
|
||||
+
|
||||
/** Get the mime parts from CamelMimemessge **/
|
||||
mp = (CamelMultipart *)camel_medium_get_content_object (CAMEL_MEDIUM (message));
|
||||
if(!mp) {
|
||||
@@ -434,25 +415,43 @@
|
||||
CamelStreamMem *content = (CamelStreamMem *)camel_stream_mem_new ();
|
||||
CamelDataWrapper *dw = NULL;
|
||||
CamelContentType *type;
|
||||
- char *buffer = NULL;
|
||||
- char *content_type = NULL;
|
||||
-
|
||||
+
|
||||
dw = camel_medium_get_content_object (CAMEL_MEDIUM (message));
|
||||
type = camel_mime_part_get_content_type((CamelMimePart *)message);
|
||||
- content_type = g_strdup_printf ("%s/%s", type->type, type->subtype);
|
||||
- camel_data_wrapper_write_to_stream(dw, (CamelStream *)content);
|
||||
- buffer = g_malloc0 (content->buffer->len+1);
|
||||
- buffer = memcpy (buffer, content->buffer->data, content->buffer->len);
|
||||
|
||||
- if (!strcmp(content_type, "text/plain")) {
|
||||
- e_gw_item_set_content_type (item, content_type);
|
||||
- e_gw_item_set_message (item, buffer);
|
||||
+ if (camel_content_type_is (type, "text", "plain")) {
|
||||
+ CamelStream *filtered_stream;
|
||||
+ CamelMimeFilter *filter;
|
||||
+ const char *charset;
|
||||
+ char *content_type;
|
||||
+
|
||||
+ content_type = camel_content_type_simple (type);
|
||||
+ e_gw_item_set_content_type (item, content_type);
|
||||
+ g_free (content_type);
|
||||
+
|
||||
+ charset = camel_content_type_param (type, "charset");
|
||||
+ if (charset && g_ascii_strcasecmp (charset, "US-ASCII") && g_ascii_strcasecmp (charset, "UTF-8")) {
|
||||
+ filter = camel_mime_filter_charset_new_convert (charset, "UTF-8");
|
||||
+ filtered_stream = camel_stream_filter_new_with_stream ((CamelStream *) content);
|
||||
+ camel_stream_filter_add ((CamelStreamFilter *) filtered_stream, filter);
|
||||
+ camel_object_unref (filter);
|
||||
+ } else {
|
||||
+ /* US-ASCII or UTF-8 */
|
||||
+ filtered_stream = (CamelStream *) content;
|
||||
+ camel_object_ref (content);
|
||||
+ }
|
||||
+
|
||||
+ camel_data_wrapper_decode_to_stream (dw, filtered_stream);
|
||||
+ camel_stream_flush (filtered_stream);
|
||||
+ camel_object_unref (filtered_stream);
|
||||
+
|
||||
+ camel_stream_write ((CamelStream *) content, "", 1);
|
||||
+ e_gw_item_set_message (item, content->buffer->data);
|
||||
} else {
|
||||
- send_as_attachment (cnc, item, content, buffer, type, dw, NULL, "", NULL, &attach_list);
|
||||
+ camel_data_wrapper_decode_to_stream (dw, (CamelStream *) content);
|
||||
+ send_as_attachment (cnc, item, content, type, dw, NULL, NULL, &attach_list);
|
||||
}
|
||||
-
|
||||
- g_free (buffer);
|
||||
- g_free (content_type);
|
||||
+
|
||||
camel_object_unref (content);
|
||||
}
|
||||
/*Populate EGwItem*/
|
||||
@@ -589,10 +588,7 @@
|
||||
CamelStreamMem *content = (CamelStreamMem *)camel_stream_mem_new ();
|
||||
CamelDataWrapper *dw = NULL;
|
||||
const char *disposition, *filename;
|
||||
- char *buffer = NULL;
|
||||
- char *mime_type = NULL;
|
||||
const char *content_id = NULL;
|
||||
- char *encoding;
|
||||
gboolean is_alternative = FALSE;
|
||||
/*
|
||||
* XXX:
|
||||
@@ -601,55 +597,71 @@
|
||||
*/
|
||||
part = camel_multipart_get_part (mp, i);
|
||||
type = camel_mime_part_get_content_type(part);
|
||||
- if (CAMEL_IS_MULTIPART ((CamelMultipart *)camel_medium_get_content_object (part))) {
|
||||
- do_multipart (cnc, item, (CamelMultipart *)camel_medium_get_content_object (part), attach_list);
|
||||
- continue;
|
||||
- } else
|
||||
dw = camel_medium_get_content_object (CAMEL_MEDIUM (part));
|
||||
+
|
||||
+ if (CAMEL_IS_MULTIPART (dw)) {
|
||||
+ do_multipart (cnc, item, (CamelMultipart *) camel_medium_get_content_object ((CamelMedium *) part), attach_list);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
if (type->subtype && !strcmp (type->subtype, "alternative")) {
|
||||
+ /* eh... I don't think this code will ever get hit? */
|
||||
CamelMimePart *temp_part;
|
||||
const char *cid = NULL;
|
||||
CamelStreamMem *temp_content = (CamelStreamMem *)camel_stream_mem_new ();
|
||||
temp_part = camel_multipart_get_part ((CamelMultipart *)dw, 1);
|
||||
CamelDataWrapper *temp_dw = NULL;
|
||||
+
|
||||
if (temp_part) {
|
||||
is_alternative = TRUE;
|
||||
temp_dw = camel_medium_get_content_object (CAMEL_MEDIUM (temp_part));
|
||||
camel_data_wrapper_write_to_stream(temp_dw, (CamelStream *)temp_content);
|
||||
- buffer = g_malloc0 (temp_content->buffer->len+1);
|
||||
- buffer = memcpy (buffer, temp_content->buffer->data, temp_content->buffer->len);
|
||||
filename = camel_mime_part_get_filename (temp_part);
|
||||
disposition = camel_mime_part_get_disposition (temp_part);
|
||||
- mime_type = camel_data_wrapper_get_mime_type (temp_dw);
|
||||
cid = camel_mime_part_get_content_id (temp_part);
|
||||
- g_print ("%s:%s\n",filename,camel_transfer_encoding_to_string(temp_part->encoding));
|
||||
- send_as_attachment (cnc, item, temp_content, buffer, type, temp_dw, filename, "", cid, attach_list);
|
||||
- g_free (buffer);
|
||||
- g_free (mime_type);
|
||||
+ send_as_attachment (cnc, item, temp_content, type, temp_dw, filename, cid, attach_list);
|
||||
}
|
||||
camel_object_unref (temp_content);
|
||||
continue;
|
||||
}
|
||||
|
||||
-
|
||||
- camel_data_wrapper_write_to_stream(dw, (CamelStream *)content);
|
||||
- buffer = g_malloc0 (content->buffer->len+1);
|
||||
- encoding = camel_transfer_encoding_to_string (part->encoding);
|
||||
- filename = camel_mime_part_get_filename (part);
|
||||
- buffer = memcpy (buffer, content->buffer->data, content->buffer->len);
|
||||
- disposition = camel_mime_part_get_disposition (part);
|
||||
- mime_type = camel_data_wrapper_get_mime_type (dw);
|
||||
- content_id = camel_mime_part_get_content_id (part);
|
||||
-
|
||||
- if (i == 0 && !strcmp (mime_type, "text/plain") ) {
|
||||
- e_gw_item_set_content_type (item, mime_type);
|
||||
- e_gw_item_set_message (item, buffer);
|
||||
+ if (i == 0 && camel_content_type_is (type, "text", "plain")) {
|
||||
+ CamelStream *filtered_stream;
|
||||
+ CamelMimeFilter *filter;
|
||||
+ const char *charset;
|
||||
+ char *content_type;
|
||||
+
|
||||
+ content_type = camel_content_type_simple (type);
|
||||
+ e_gw_item_set_content_type (item, content_type);
|
||||
+ g_free (content_type);
|
||||
+
|
||||
+ charset = camel_content_type_param (type, "charset");
|
||||
+ if (charset && g_ascii_strcasecmp (charset, "US-ASCII") && g_ascii_strcasecmp (charset, "UTF-8")) {
|
||||
+ filter = camel_mime_filter_charset_new_convert (charset, "UTF-8");
|
||||
+ filtered_stream = camel_stream_filter_new_with_stream ((CamelStream *) content);
|
||||
+ camel_stream_filter_add ((CamelStreamFilter *) filtered_stream, filter);
|
||||
+ camel_object_unref (filter);
|
||||
+ } else {
|
||||
+ /* US-ASCII or UTF-8 */
|
||||
+ filtered_stream = (CamelStream *) content;
|
||||
+ camel_object_ref (content);
|
||||
+ }
|
||||
+
|
||||
+ camel_data_wrapper_decode_to_stream (dw, filtered_stream);
|
||||
+ camel_stream_flush (filtered_stream);
|
||||
+ camel_object_unref (filtered_stream);
|
||||
+
|
||||
+ camel_stream_write ((CamelStream *) content, "", 1);
|
||||
+ e_gw_item_set_message (item, content->buffer->data);
|
||||
} else {
|
||||
- send_as_attachment (cnc, item, content, buffer, type, dw, filename, encoding, content_id, attach_list);
|
||||
+ filename = camel_mime_part_get_filename (part);
|
||||
+ disposition = camel_mime_part_get_disposition (part);
|
||||
+ content_id = camel_mime_part_get_content_id (part);
|
||||
+
|
||||
+ camel_data_wrapper_decode_to_stream (dw, (CamelStream *) content);
|
||||
+ send_as_attachment (cnc, item, content, type, dw, filename, content_id, attach_list);
|
||||
}
|
||||
-
|
||||
- g_free (buffer);
|
||||
- g_free (mime_type);
|
||||
+
|
||||
camel_object_unref (content);
|
||||
} /*end of for*/
|
||||
}
|
||||
Index: camel/providers/groupwise/camel-groupwise-utils.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-utils.h,v
|
||||
retrieving revision 1.10
|
||||
diff -u -r1.10 camel/providers/groupwise/camel-groupwise-utils.h
|
||||
--- camel/providers/groupwise/camel-groupwise-utils.h 4 Jan 2006 16:48:35 -0000 1.10
|
||||
+++ camel/providers/groupwise/camel-groupwise-utils.h 15 May 2006 18:01:10 -0000
|
||||
@@ -71,9 +71,9 @@
|
||||
int e_path_rmdir (const char *prefix, const char *vpath);
|
||||
|
||||
|
||||
-EGwItem *camel_groupwise_util_item_from_message (EGwConnection *cnc, CamelMimeMessage *message, CamelAddress *from, CamelAddress *recipients);
|
||||
+EGwItem *camel_groupwise_util_item_from_message (EGwConnection *cnc, CamelMimeMessage *message, CamelAddress *from);
|
||||
+
|
||||
void do_flags_diff (flags_diff_t *diff, guint32 old, guint32 _new);
|
||||
-GSList *add_recipients(GSList *recipient_list, CamelAddress *recipients, int recipient_type);
|
||||
char *gw_concat ( const char *prefix, const char *suffix);
|
||||
void strip_lt_gt (char **string, int s_offset, int e_offset);
|
||||
#endif
|
989
bnc-174255-honour-system-proxy-settings.patch
Normal file
989
bnc-174255-honour-system-proxy-settings.patch
Normal file
@ -0,0 +1,989 @@
|
||||
--- libedataserver/Makefile.am
|
||||
+++ libedataserver/Makefile.am
|
||||
@@ -7,7 +7,8 @@
|
||||
-DE_DATA_SERVER_EXTENSIONDIR=\"$(extensiondir)\" \
|
||||
-DE_DATA_SERVER_IMAGESDIR=\"$(imagesdir)\" \
|
||||
-DE_DATA_SERVER_UI_GLADEDIR=\""$(gladedir)"\" \
|
||||
- $(E_DATA_SERVER_CFLAGS)
|
||||
+ $(E_DATA_SERVER_CFLAGS) \
|
||||
+ $(SOUP_CFLAGS)
|
||||
|
||||
# The marshallers
|
||||
MARSHAL_GENERATED = e-data-server-marshal.c e-data-server-marshal.h
|
||||
@@ -32,6 +33,7 @@
|
||||
e-list-iterator.c \
|
||||
e-memory.c \
|
||||
e-msgport.c \
|
||||
+ e-proxy.c \
|
||||
e-sexp.c \
|
||||
e-source-group.c \
|
||||
e-source-list.c \
|
||||
@@ -50,7 +52,8 @@
|
||||
$(E_DATA_SERVER_LIBS) \
|
||||
$(ICONV_LIBS) \
|
||||
$(DB_LIBS) \
|
||||
- $(SOCKET_LIBS)
|
||||
+ $(SOCKET_LIBS) \
|
||||
+ $(SOUP_LIBS)
|
||||
|
||||
libedataserver_1_2_la_LDFLAGS = \
|
||||
-version-info $(LIBEDATASERVER_CURRENT):$(LIBEDATASERVER_REVISION):$(LIBEDATASERVER_AGE) $(NO_UNDEFINED)
|
||||
@@ -72,6 +75,7 @@
|
||||
e-list-iterator.h \
|
||||
e-memory.h \
|
||||
e-msgport.h \
|
||||
+ e-proxy.h \
|
||||
e-sexp.h \
|
||||
e-source-group.h \
|
||||
e-source-list.h \
|
||||
--- libedataserver/e-proxy.c
|
||||
+++ libedataserver/e-proxy.c
|
||||
@@ -0,0 +1,647 @@
|
||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
+/*
|
||||
+ * Authors: Jeffrey Stedfast <fejj@ximian.com>
|
||||
+ * Veerapuram Varadhan <vvaradhan@novell.com>
|
||||
+ *
|
||||
+ * Copyright 2002 Ximian, Inc. (www.ximian.com)
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include <config.h>
|
||||
+#endif
|
||||
+
|
||||
+#include <netinet/in.h>
|
||||
+#include <sys/socket.h>
|
||||
+#include <string.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <glib.h>
|
||||
+#include <glib-object.h>
|
||||
+
|
||||
+#include <gconf/gconf.h>
|
||||
+#include <gconf/gconf-client.h>
|
||||
+
|
||||
+#include <libsoup/soup-address.h>
|
||||
+#include <libsoup/soup-uri.h>
|
||||
+#include "e-proxy.h"
|
||||
+
|
||||
+/* Debug */
|
||||
+#define d(x)
|
||||
+
|
||||
+/* GConf paths and keys */
|
||||
+#define PATH_GCONF_GNOME_VFS "/system/http_proxy"
|
||||
+#define KEY_GCONF_HTTP_PROXY_PORT (PATH_GCONF_GNOME_VFS "/" "port")
|
||||
+#define KEY_GCONF_HTTP_PROXY_HOST (PATH_GCONF_GNOME_VFS "/" "host")
|
||||
+
|
||||
+#define KEY_GCONF_USE_HTTP_PROXY (PATH_GCONF_GNOME_VFS "/" "use_http_proxy")
|
||||
+
|
||||
+#define KEY_GCONF_HTTP_AUTH_USER (PATH_GCONF_GNOME_VFS "/" "authentication_user")
|
||||
+#define KEY_GCONF_HTTP_AUTH_PW (PATH_GCONF_GNOME_VFS "/" "authentication_password")
|
||||
+#define KEY_GCONF_HTTP_USE_AUTH (PATH_GCONF_GNOME_VFS "/" "use_authentication")
|
||||
+
|
||||
+#define KEY_GCONF_HTTP_PROXY_IGNORE_HOSTS (PATH_GCONF_GNOME_VFS "/" "ignore_hosts")
|
||||
+
|
||||
+struct _EProxyPrivate {
|
||||
+ SoupUri* uri;
|
||||
+ guint notify_id; /* conxn id of gconf_client_notify_add */
|
||||
+ GSList* ign_hosts; /* List of hostnames. (Strings) */
|
||||
+ GSList* ign_addrs; /* List of hostaddrs. (ProxyHostAddrs) */
|
||||
+ gboolean use_proxy; /* Is system-proxy enabled? */
|
||||
+};
|
||||
+
|
||||
+/* Enum definition is copied from gnome-vfs/modules/http-proxy.c */
|
||||
+typedef enum {
|
||||
+ PROXY_IPV4 = 4,
|
||||
+ PROXY_IPV6 = 6
|
||||
+} ProxyAddrType;
|
||||
+
|
||||
+typedef struct {
|
||||
+ ProxyAddrType type; /* Specifies whether IPV4 or IPV6 */
|
||||
+ void* addr; /* Either in_addr* or in6_addr* */
|
||||
+ void* mask; /* Either in_addr* or in6_addr* */
|
||||
+} ProxyHostAddr;
|
||||
+
|
||||
+/* Signals. */
|
||||
+enum {
|
||||
+ CHANGED,
|
||||
+ LAST_SIGNAL
|
||||
+};
|
||||
+
|
||||
+static GObjectClass *parent_class;
|
||||
+static unsigned int signals[LAST_SIGNAL] = { 0 };
|
||||
+
|
||||
+/* Forward declarations. */
|
||||
+
|
||||
+static void ep_setting_changed (GConfClient *client, guint32 cnxn_id,
|
||||
+ GConfEntry *entry, gpointer user_data);
|
||||
+static void e_proxy_dispose (GObject* object);
|
||||
+
|
||||
+static void ipv6_network_addr (const struct in6_addr *addr,
|
||||
+ const struct in6_addr *mask,
|
||||
+ struct in6_addr *res);
|
||||
+
|
||||
+static void
|
||||
+ep_free_proxy_host_addr (ProxyHostAddr* host)
|
||||
+{
|
||||
+ if (host) {
|
||||
+ if (host->addr) {
|
||||
+ g_free (host->addr);
|
||||
+ host->addr = NULL;
|
||||
+ }
|
||||
+ if (host->mask) {
|
||||
+ g_free (host->mask);
|
||||
+ host->mask = NULL;
|
||||
+ }
|
||||
+ g_free (host);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void
|
||||
+e_proxy_class_init (EProxyClass *klass)
|
||||
+{
|
||||
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
+
|
||||
+ parent_class = g_type_class_peek_parent (klass);
|
||||
+
|
||||
+ object_class->dispose = e_proxy_dispose;
|
||||
+
|
||||
+ /* signals */
|
||||
+
|
||||
+ /**
|
||||
+ * EProxy::changed:
|
||||
+ * @proxy: the proxy
|
||||
+ *
|
||||
+ * Emitted when proxy settings in gconf changes.
|
||||
+ **/
|
||||
+ signals[CHANGED] =
|
||||
+ g_signal_new ("changed",
|
||||
+ G_OBJECT_CLASS_TYPE (object_class),
|
||||
+ G_SIGNAL_RUN_FIRST,
|
||||
+ G_STRUCT_OFFSET (EProxyClass, changed),
|
||||
+ NULL, NULL,
|
||||
+ g_cclosure_marshal_VOID__VOID,
|
||||
+ G_TYPE_NONE, 0);
|
||||
+
|
||||
+
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+e_proxy_init (EProxy *pxy, EProxyClass *klass)
|
||||
+{
|
||||
+ EProxyPrivate *priv;
|
||||
+
|
||||
+ /* allocate internal structure */
|
||||
+ priv = g_new0 (EProxyPrivate, 1);
|
||||
+ pxy->priv = priv;
|
||||
+ priv->ign_hosts = NULL;
|
||||
+ priv->ign_addrs = NULL;
|
||||
+ priv->uri = NULL;
|
||||
+ priv->notify_id = 0;
|
||||
+ priv->use_proxy = FALSE;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+e_proxy_dispose (GObject *object)
|
||||
+{
|
||||
+ EProxy *proxy = (EProxy *)object;
|
||||
+
|
||||
+ if (!E_IS_PROXY (proxy))
|
||||
+ return;
|
||||
+
|
||||
+ EProxyPrivate *priv = proxy->priv;
|
||||
+
|
||||
+ if (priv) {
|
||||
+ GConfClient* client = NULL;
|
||||
+
|
||||
+ if ((client = gconf_client_get_default ())) {
|
||||
+ if (priv->notify_id > 0)
|
||||
+ gconf_client_notify_remove (client, priv->notify_id);
|
||||
+ g_object_unref (client);
|
||||
+ }
|
||||
+
|
||||
+ if (priv->uri)
|
||||
+ soup_uri_free (priv->uri);
|
||||
+
|
||||
+ if (priv->ign_hosts) {
|
||||
+ g_slist_foreach (priv->ign_hosts, (GFunc) ep_free_proxy_host_addr, NULL);
|
||||
+ g_slist_free (priv->ign_hosts);
|
||||
+ }
|
||||
+
|
||||
+ if (priv->ign_addrs) {
|
||||
+ g_slist_foreach (priv->ign_addrs, (GFunc) g_free, NULL);
|
||||
+ g_slist_free (priv->ign_addrs);
|
||||
+ }
|
||||
+
|
||||
+ priv->notify_id = 0;
|
||||
+
|
||||
+ g_free (priv);
|
||||
+ priv = NULL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+GType
|
||||
+e_proxy_get_type (void)
|
||||
+{
|
||||
+ static GType type = 0;
|
||||
+
|
||||
+ if (!type) {
|
||||
+ static GTypeInfo info = {
|
||||
+ sizeof (EProxyClass),
|
||||
+ (GBaseInitFunc) NULL,
|
||||
+ (GBaseFinalizeFunc) NULL,
|
||||
+ (GClassInitFunc) e_proxy_class_init,
|
||||
+ NULL, NULL,
|
||||
+ sizeof (EProxy),
|
||||
+ 0,
|
||||
+ (GInstanceInitFunc) e_proxy_init
|
||||
+ };
|
||||
+ type = g_type_register_static (G_TYPE_OBJECT, "EProxy", &info, 0);
|
||||
+ }
|
||||
+
|
||||
+ return type;
|
||||
+}
|
||||
+
|
||||
+static gboolean
|
||||
+ep_need_proxy (EProxy* proxy, const char* host)
|
||||
+{
|
||||
+ SoupAddress *addr = NULL;
|
||||
+ EProxyPrivate *priv = proxy->priv;
|
||||
+ ProxyHostAddr *p_addr = NULL;
|
||||
+ GSList *l;
|
||||
+ guint status;
|
||||
+
|
||||
+ addr = soup_address_new (host, 0);
|
||||
+ status = soup_address_resolve_sync (addr);
|
||||
+ if (status == SOUP_STATUS_OK) {
|
||||
+ gint addr_len;
|
||||
+ struct sockaddr* s_addr = NULL;
|
||||
+
|
||||
+ s_addr = soup_address_get_sockaddr (addr, &addr_len);
|
||||
+
|
||||
+ /* This will never happen, since we have already called
|
||||
+ soup_address_resolve_sync().
|
||||
+ */
|
||||
+ if (!s_addr)
|
||||
+ return TRUE;
|
||||
+
|
||||
+ if (s_addr->sa_family == AF_INET) {
|
||||
+ struct in_addr in, *mask, *addr_in;
|
||||
+
|
||||
+ in = ((struct sockaddr_in *)s_addr)->sin_addr;
|
||||
+ for (l = priv->ign_addrs; l; l = l->next) {
|
||||
+ p_addr = (ProxyHostAddr *)l->data;
|
||||
+ if (p_addr->type == PROXY_IPV4) {
|
||||
+ addr_in = ((struct in_addr *)p_addr->addr);
|
||||
+ mask = ((struct in_addr *)p_addr->mask);
|
||||
+ d(g_print ("ep_need_proxy:ipv4: in: %ul\t mask: %ul\t addr: %ul\n",
|
||||
+ in.s_addr, mask->s_addr, addr_in->s_addr));
|
||||
+ if ((in.s_addr & mask->s_addr) == addr_in->s_addr) {
|
||||
+ d(g_print ("Host [%s] doesn't require proxy\n", host));
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ } else {
|
||||
+ struct in6_addr in6, net6;
|
||||
+ struct in_addr *addr_in, *mask;
|
||||
+
|
||||
+ in6 = ((struct sockaddr_in6 *)s_addr)->sin6_addr;
|
||||
+ for (l = priv->ign_addrs; l; l = l->next) {
|
||||
+ p_addr = (ProxyHostAddr *)l->data;
|
||||
+ ipv6_network_addr (&in6, (struct in6_addr *)p_addr->mask, &net6);
|
||||
+ if (p_addr->type == PROXY_IPV6) {
|
||||
+ if (IN6_ARE_ADDR_EQUAL (&net6, (struct in6_addr *)p_addr->addr)) {
|
||||
+ d(g_print ("Host [%s] doesn't require proxy\n", host));
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ } else if (p_addr->type == PROXY_IPV6 &&
|
||||
+ IN6_IS_ADDR_V4MAPPED (&net6)) {
|
||||
+ guint32 v4addr;
|
||||
+
|
||||
+ addr_in = ((struct in_addr *)p_addr->addr);
|
||||
+ mask = ((struct in_addr *)p_addr->mask);
|
||||
+
|
||||
+ v4addr = net6.s6_addr[12] << 24
|
||||
+ | net6.s6_addr[13] << 16
|
||||
+ | net6.s6_addr[14] << 8
|
||||
+ | net6.s6_addr[15];
|
||||
+ if ((v4addr & mask->s_addr) != addr_in->s_addr) {
|
||||
+ d(g_print ("Host [%s] doesn't require proxy\n", host));
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ } else {
|
||||
+ GSList* l;
|
||||
+ gchar* hn = g_ascii_strdown (host, -1);
|
||||
+
|
||||
+ for (l = priv->ign_hosts; l; l = l->next) {
|
||||
+ if (*((gchar *)l->data) == '*') {
|
||||
+ if (g_str_has_suffix (hn, ((gchar *)l->data)+1)) {
|
||||
+ g_free (hn);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ } else if (strcmp (hn, l->data) == 0) {
|
||||
+ g_free (hn);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+ g_free (hn);
|
||||
+ }
|
||||
+
|
||||
+ d(g_print ("%s needs a proxy to connect to internet\n", host));
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+static gboolean
|
||||
+ep_manipulate_ipv4 (ProxyHostAddr *host_addr,
|
||||
+ struct in_addr *addr_in,
|
||||
+ gchar* netmask)
|
||||
+{
|
||||
+ gboolean has_error = FALSE;
|
||||
+ struct in_addr *addr, *mask;
|
||||
+
|
||||
+ if (!addr_in)
|
||||
+ return has_error;
|
||||
+
|
||||
+ host_addr->type = PROXY_IPV4;
|
||||
+ addr = g_new0 (struct in_addr, 1);
|
||||
+ memcpy (addr, addr_in, sizeof (struct in_addr));
|
||||
+ mask = g_new0 (struct in_addr, 1);
|
||||
+
|
||||
+ if (netmask) {
|
||||
+ gchar *endptr;
|
||||
+ gint width = strtol (netmask, &endptr, 10);
|
||||
+
|
||||
+ if (*endptr != '\0' || width < 0 || width > 32) {
|
||||
+ has_error = TRUE;
|
||||
+ }
|
||||
+ mask->s_addr = htonl (~0 << width);
|
||||
+ addr->s_addr &= mask->s_addr;
|
||||
+ } else {
|
||||
+ mask->s_addr = 0xFFFFFFFF;
|
||||
+ }
|
||||
+
|
||||
+ d(g_print ("ep_manipulate_ipv4: addr_in: %ul, addr: %ul, mask: %ul\n",
|
||||
+ addr_in->s_addr, addr->s_addr, mask->s_addr));
|
||||
+
|
||||
+ host_addr->addr = addr;
|
||||
+ host_addr->mask = mask;
|
||||
+
|
||||
+ return has_error;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+ipv6_network_addr(const struct in6_addr *addr, const struct in6_addr *mask,
|
||||
+ struct in6_addr *res)
|
||||
+{
|
||||
+ gint i;
|
||||
+
|
||||
+ for (i = 0; i < 16; ++i) {
|
||||
+ res->s6_addr[i] = addr->s6_addr[i] & mask->s6_addr[i];
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static gboolean
|
||||
+ep_manipulate_ipv6 (ProxyHostAddr *host_addr,
|
||||
+ struct in6_addr *addr_in6,
|
||||
+ gchar* netmask)
|
||||
+{
|
||||
+ gboolean has_error = FALSE;
|
||||
+ struct in6_addr *addr, *mask;
|
||||
+ int i;
|
||||
+
|
||||
+ if (!addr_in6)
|
||||
+ return has_error;
|
||||
+
|
||||
+ host_addr->type = PROXY_IPV6;
|
||||
+
|
||||
+ addr = g_new0 (struct in6_addr, 1);
|
||||
+ mask = g_new0 (struct in6_addr, 1);
|
||||
+
|
||||
+ for (i = 0; i < 16; ++i) {
|
||||
+ addr->s6_addr[i] = addr_in6->s6_addr[i];
|
||||
+ }
|
||||
+ if (netmask) {
|
||||
+ gchar *endptr;
|
||||
+ gint width = strtol(netmask, &endptr, 10);
|
||||
+
|
||||
+ if (*endptr != '\0' || width < 0 || width > 128) {
|
||||
+ has_error = TRUE;
|
||||
+ }
|
||||
+ for (i = 0; i < 16; ++i) {
|
||||
+ mask->s6_addr[i] = 0;
|
||||
+ }
|
||||
+ for (i = 0; i < width / 8; i++) {
|
||||
+ mask->s6_addr[i] = 0xff;
|
||||
+ }
|
||||
+ mask->s6_addr[i] = (0xff << (8 - width % 8)) & 0xff;
|
||||
+ ipv6_network_addr(addr, mask, addr);
|
||||
+ } else {
|
||||
+ for (i = 0; i < 16; ++i) {
|
||||
+ mask->s6_addr[i] = 0xff;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ host_addr->addr = addr;
|
||||
+ host_addr->mask = mask;
|
||||
+
|
||||
+ return has_error;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+ep_parse_ignore_host (gpointer data, gpointer user_data)
|
||||
+{
|
||||
+ EProxy* proxy = (EProxy *)user_data;
|
||||
+ EProxyPrivate* priv = NULL;
|
||||
+ SoupAddress *addr;
|
||||
+ guint status;
|
||||
+ gchar *input, *netmask, *hostname;
|
||||
+ ProxyHostAddr *host_addr;
|
||||
+ gboolean has_error = FALSE;
|
||||
+
|
||||
+ if (!proxy || !proxy->priv)
|
||||
+ return;
|
||||
+
|
||||
+ priv = proxy->priv;
|
||||
+ input = (gchar *)data;
|
||||
+
|
||||
+ if ((netmask = strrchr (input, '/')) != NULL) {
|
||||
+ hostname = g_strndup (input, netmask - input);
|
||||
+ ++netmask;
|
||||
+ } else {
|
||||
+ hostname = g_ascii_strdown (input, -1);
|
||||
+ }
|
||||
+
|
||||
+ addr = soup_address_new (hostname, 0);
|
||||
+ status = soup_address_resolve_sync (addr);
|
||||
+ if (status == SOUP_STATUS_OK) {
|
||||
+ gint addr_len;
|
||||
+ struct sockaddr* s_addr = NULL;
|
||||
+
|
||||
+ host_addr = g_new0 (ProxyHostAddr, 1);
|
||||
+
|
||||
+ s_addr = soup_address_get_sockaddr (addr, &addr_len);
|
||||
+
|
||||
+ /* This will never happen, since we have already called
|
||||
+ soup_address_resolve_sync().
|
||||
+ */
|
||||
+ if (!s_addr)
|
||||
+ goto error;
|
||||
+
|
||||
+ if (s_addr->sa_family == AF_INET)
|
||||
+ has_error = ep_manipulate_ipv4 (host_addr,
|
||||
+ &((struct sockaddr_in *)s_addr)->sin_addr,
|
||||
+ netmask);
|
||||
+ else
|
||||
+ has_error = ep_manipulate_ipv6 (host_addr,
|
||||
+ &((struct sockaddr_in6 *)s_addr)->sin6_addr,
|
||||
+ netmask);
|
||||
+
|
||||
+ if (!has_error)
|
||||
+ priv->ign_addrs = g_slist_append (priv->ign_addrs, host_addr);
|
||||
+
|
||||
+ g_free (hostname);
|
||||
+ } else {
|
||||
+ d(g_print ("Unable to resolve %s\n", hostname));
|
||||
+ priv->ign_hosts = g_slist_append (priv->ign_hosts, hostname);
|
||||
+ }
|
||||
+ error:
|
||||
+ g_object_unref (addr);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+ep_set_proxy (GConfClient *client,
|
||||
+ gpointer user_data,
|
||||
+ gboolean regen_ign_host_list,
|
||||
+ gboolean set_auth)
|
||||
+{
|
||||
+ char *proxy_server = NULL, *proxy_user = NULL, *proxy_pw = NULL, *uri = NULL;
|
||||
+ gboolean use_auth;
|
||||
+ int proxy_port;
|
||||
+ EProxy* proxy = (EProxy *)user_data;
|
||||
+ EProxyPrivate* priv = proxy->priv;
|
||||
+ GSList *ignore;
|
||||
+
|
||||
+ priv->use_proxy = gconf_client_get_bool (client, KEY_GCONF_USE_HTTP_PROXY, NULL);
|
||||
+ if (priv->use_proxy == FALSE) {
|
||||
+ if (priv->uri) {
|
||||
+ soup_uri_free (priv->uri);
|
||||
+ priv->uri = NULL;
|
||||
+ }
|
||||
+ goto emit_signal;
|
||||
+ }
|
||||
+
|
||||
+ proxy_server = gconf_client_get_string (client, KEY_GCONF_HTTP_PROXY_HOST, NULL);
|
||||
+ proxy_port = gconf_client_get_int (client, KEY_GCONF_HTTP_PROXY_PORT, NULL);
|
||||
+ uri = g_strdup_printf ("http://%s:%d", proxy_server, proxy_port);
|
||||
+ d(g_print ("ep_set_proxy: uri: %s\n", uri));
|
||||
+
|
||||
+ if (regen_ign_host_list) {
|
||||
+ if (priv->ign_hosts) {
|
||||
+ g_slist_foreach (priv->ign_hosts, (GFunc) g_free, NULL);
|
||||
+ g_slist_free (priv->ign_hosts);
|
||||
+ priv->ign_hosts = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (priv->ign_addrs) {
|
||||
+ g_slist_foreach (priv->ign_addrs, (GFunc) g_free, NULL);
|
||||
+ g_slist_free (priv->ign_addrs);
|
||||
+ priv->ign_addrs = NULL;
|
||||
+ }
|
||||
+
|
||||
+ ignore = gconf_client_get_list (client, KEY_GCONF_HTTP_PROXY_IGNORE_HOSTS,
|
||||
+ GCONF_VALUE_STRING, NULL);
|
||||
+ if (ignore) {
|
||||
+ g_slist_foreach (ignore, (GFunc) ep_parse_ignore_host, proxy);
|
||||
+ g_slist_foreach (ignore, (GFunc) g_free, NULL);
|
||||
+ g_slist_free (ignore);
|
||||
+ }
|
||||
+ } else if (set_auth) {
|
||||
+
|
||||
+ use_auth = gconf_client_get_bool (client, KEY_GCONF_HTTP_USE_AUTH, NULL);
|
||||
+ if (use_auth == TRUE) {
|
||||
+ proxy_user = gconf_client_get_string (client, KEY_GCONF_HTTP_AUTH_USER, NULL);
|
||||
+ proxy_pw = gconf_client_get_string (client, KEY_GCONF_HTTP_AUTH_PW, NULL);
|
||||
+
|
||||
+ if (uri)
|
||||
+ g_free (uri);
|
||||
+
|
||||
+ uri = g_strdup_printf ("http://%s:%s@%s:%d", proxy_user, proxy_pw, proxy_server, proxy_port);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (priv->uri) {
|
||||
+ soup_uri_free (priv->uri);
|
||||
+ priv->uri = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (uri)
|
||||
+ priv->uri = soup_uri_new (uri);
|
||||
+ d(g_print ("system-proxy: uri: %s\n", uri));
|
||||
+
|
||||
+ emit_signal:
|
||||
+ g_signal_emit (proxy, signals[CHANGED], 0);
|
||||
+
|
||||
+ g_free (uri);
|
||||
+
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+ep_setting_changed (GConfClient *client, guint32 cnxn_id,
|
||||
+ GConfEntry *entry, gpointer user_data)
|
||||
+{
|
||||
+ const char *key;
|
||||
+ EProxy* proxy = (EProxy *)user_data;
|
||||
+
|
||||
+ if (!proxy || !proxy->priv)
|
||||
+ return;
|
||||
+
|
||||
+ key = gconf_entry_get_key(entry);
|
||||
+
|
||||
+ if (strcmp(key, KEY_GCONF_USE_HTTP_PROXY) == 0
|
||||
+ || strcmp(key, KEY_GCONF_HTTP_PROXY_IGNORE_HOSTS) == 0
|
||||
+ || strcmp(key, KEY_GCONF_HTTP_PROXY_HOST) == 0
|
||||
+ || strcmp(key, KEY_GCONF_HTTP_PROXY_PORT) == 0) {
|
||||
+ gboolean regen_ign_host_list = FALSE;
|
||||
+
|
||||
+ if (strcmp(key, KEY_GCONF_HTTP_PROXY_IGNORE_HOSTS) == 0)
|
||||
+ regen_ign_host_list = TRUE;
|
||||
+ ep_set_proxy (client, user_data, regen_ign_host_list, FALSE);
|
||||
+ d(g_print ("e-proxy.c:ep_settings_changed: proxy settings changed\n"));
|
||||
+ } else if (strcmp(key, KEY_GCONF_HTTP_AUTH_USER) == 0
|
||||
+ || strcmp(key, KEY_GCONF_HTTP_AUTH_PW) == 0
|
||||
+ || strcmp(key, KEY_GCONF_HTTP_USE_AUTH) == 0) {
|
||||
+ ep_set_proxy (client, user_data, FALSE, TRUE);
|
||||
+ d(g_print ("e-proxy.c:ep_settings_changed: auth settings changed\n"));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+EProxy*
|
||||
+e_proxy_new (void)
|
||||
+{
|
||||
+ EProxy *proxy = NULL;
|
||||
+
|
||||
+ proxy = g_object_new (E_TYPE_PROXY, NULL);
|
||||
+
|
||||
+ return proxy;
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+e_proxy_setup_proxy (EProxy* proxy)
|
||||
+{
|
||||
+ GConfClient *client;
|
||||
+
|
||||
+ /* We get the gnome-vfs proxy keys here
|
||||
+ set soup up to use the proxy,
|
||||
+ and listen to any changes */
|
||||
+
|
||||
+ if (!(client = gconf_client_get_default ()))
|
||||
+ return;
|
||||
+
|
||||
+ if (!proxy || !proxy->priv)
|
||||
+ return;
|
||||
+
|
||||
+ /* Listen to the changes in the gnome-vfs path */
|
||||
+ gconf_client_add_dir (client, PATH_GCONF_GNOME_VFS,
|
||||
+ GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
|
||||
+
|
||||
+ if (proxy->priv->notify_id == 0)
|
||||
+ proxy->priv->notify_id = gconf_client_notify_add (client, PATH_GCONF_GNOME_VFS,
|
||||
+ ep_setting_changed, (gpointer)proxy,
|
||||
+ NULL, NULL);
|
||||
+
|
||||
+ ep_set_proxy (client, proxy, TRUE, TRUE);
|
||||
+
|
||||
+ g_object_unref (client);
|
||||
+}
|
||||
+
|
||||
+SoupUri*
|
||||
+e_proxy_peek_uri (EProxy* proxy)
|
||||
+{
|
||||
+ if (!proxy || !proxy->priv)
|
||||
+ return NULL;
|
||||
+
|
||||
+ return proxy->priv->uri;
|
||||
+}
|
||||
+
|
||||
+gboolean
|
||||
+e_proxy_require_proxy_for_uri (EProxy* proxy, const char* uri)
|
||||
+{
|
||||
+ SoupUri *srv_uri = NULL;
|
||||
+ gboolean ret = FALSE;
|
||||
+
|
||||
+ if (!uri || !proxy || !proxy->priv)
|
||||
+ return ret;
|
||||
+
|
||||
+ if (!proxy->priv->use_proxy) {
|
||||
+ d(g_print ("[%s] don't need a proxy to connect to internet\n", uri));
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ srv_uri = soup_uri_new (uri);
|
||||
+
|
||||
+ ret = ep_need_proxy (proxy, srv_uri->host);
|
||||
+
|
||||
+ soup_uri_free (srv_uri);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
--- libedataserver/e-proxy.h
|
||||
+++ libedataserver/e-proxy.h
|
||||
@@ -0,0 +1,63 @@
|
||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
+/*
|
||||
+ * Authors: Jeffrey Stedfast <fejj@ximian.com>
|
||||
+ * Veerapuram Varadhan <vvaradhan@novell.com>
|
||||
+ *
|
||||
+ * Copyright 2002 Ximian, Inc. (www.ximian.com)
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+#ifndef __E_PROXY_H__
|
||||
+#define __E_PROXY_H__
|
||||
+
|
||||
+#include <libsoup/soup-uri.h>
|
||||
+
|
||||
+G_BEGIN_DECLS
|
||||
+
|
||||
+#define E_TYPE_PROXY (e_proxy_get_type ())
|
||||
+#define E_PROXY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_PROXY, EProxy))
|
||||
+#define E_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_PROXY, EProxyClass))
|
||||
+#define E_IS_PROXY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_PROXY))
|
||||
+#define E_IS_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_PROXY))
|
||||
+
|
||||
+typedef struct _EProxy EProxy;
|
||||
+typedef struct _EProxyClass EProxyClass;
|
||||
+typedef struct _EProxyPrivate EProxyPrivate;
|
||||
+
|
||||
+struct _EProxy {
|
||||
+ GObject parent;
|
||||
+ EProxyPrivate *priv;
|
||||
+};
|
||||
+
|
||||
+struct _EProxyClass {
|
||||
+ GObjectClass parent_class;
|
||||
+ /* Signals. */
|
||||
+
|
||||
+ void (*changed) (EProxy *proxy);
|
||||
+};
|
||||
+
|
||||
+EProxy* e_proxy_new (void);
|
||||
+SoupUri* e_proxy_peek_uri (EProxy* proxy);
|
||||
+void e_proxy_setup_proxy (EProxy* proxy);
|
||||
+GType e_proxy_get_type (void);
|
||||
+gboolean e_proxy_require_proxy_for_uri (EProxy *proxy,
|
||||
+ const char* uri);
|
||||
+
|
||||
+G_END_DECLS
|
||||
+
|
||||
+#endif
|
||||
--- servers/exchange/lib/e2k-context.c
|
||||
+++ servers/exchange/lib/e2k-context.c
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "e2k-utils.h"
|
||||
#include "e2k-xml-utils.h"
|
||||
|
||||
+#include <libedataserver/e-proxy.h>
|
||||
#include <libsoup/soup-address.h>
|
||||
#include <libsoup/soup-message-filter.h>
|
||||
#include <libsoup/soup-session-async.h>
|
||||
@@ -104,6 +105,7 @@
|
||||
/* Forms-based authentication */
|
||||
char *cookie;
|
||||
gboolean cookie_verified;
|
||||
+ EProxy* proxy;
|
||||
};
|
||||
|
||||
/* For operations with progress */
|
||||
@@ -113,6 +115,9 @@
|
||||
/* For soup sync session timeout */
|
||||
#define E2K_SOUP_SESSION_TIMEOUT 30
|
||||
|
||||
+/* Soup session proxy-uri property */
|
||||
+#define SOUP_SESSION_PROXY_URI "proxy-uri"
|
||||
+
|
||||
#ifdef E2K_DEBUG
|
||||
char *e2k_debug;
|
||||
int e2k_debug_level;
|
||||
@@ -123,6 +128,31 @@
|
||||
static gboolean do_notification (GIOChannel *source, GIOCondition condition, gpointer data);
|
||||
|
||||
static void setup_message (SoupMessageFilter *filter, SoupMessage *msg);
|
||||
+static void proxy_settings_changed (EProxy *proxy, gpointer user_data);
|
||||
+
|
||||
+
|
||||
+static void
|
||||
+proxy_settings_changed (EProxy *proxy, gpointer user_data)
|
||||
+{
|
||||
+ SoupUri *proxy_uri = NULL;
|
||||
+ E2kContext* ctx = (E2kContext *)user_data;
|
||||
+ if (!ctx || !ctx->priv ||
|
||||
+ (!ctx->priv->session && !ctx->priv->async_session) ||
|
||||
+ (!ctx->priv->owa_uri))
|
||||
+ return;
|
||||
+
|
||||
+ if (!e_proxy_require_proxy_for_uri (proxy, ctx->priv->owa_uri))
|
||||
+ proxy_uri = NULL;
|
||||
+ else
|
||||
+ proxy_uri = e_proxy_peek_uri (proxy);
|
||||
+
|
||||
+ if (ctx->priv->session)
|
||||
+ g_object_set (ctx->priv->session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+ if (ctx->priv->async_session)
|
||||
+ g_object_set (ctx->priv->async_session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+}
|
||||
|
||||
static void
|
||||
init (GObject *object)
|
||||
@@ -134,6 +164,9 @@
|
||||
g_hash_table_new (g_str_hash, g_str_equal);
|
||||
ctx->priv->subscriptions_by_uri =
|
||||
g_hash_table_new (g_str_hash, g_str_equal);
|
||||
+ ctx->priv->proxy = e_proxy_new ();
|
||||
+ e_proxy_setup_proxy (ctx->priv->proxy);
|
||||
+ g_signal_connect (ctx->priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), ctx);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -180,8 +213,13 @@
|
||||
|
||||
g_free (ctx->priv->cookie);
|
||||
|
||||
+ if (ctx->priv->proxy) {
|
||||
+ g_object_unref (ctx->priv->proxy);
|
||||
+ ctx->priv->proxy = NULL;
|
||||
+ }
|
||||
g_free (ctx->priv);
|
||||
ctx->priv = NULL;
|
||||
+
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
@@ -361,6 +399,7 @@
|
||||
const char *password)
|
||||
{
|
||||
guint timeout = E2K_SOUP_SESSION_TIMEOUT;
|
||||
+ SoupUri* uri = NULL;
|
||||
|
||||
g_return_if_fail (E2K_IS_CONTEXT (ctx));
|
||||
|
||||
@@ -390,10 +429,15 @@
|
||||
*/
|
||||
if (g_getenv ("SOUP_SESSION_TIMEOUT"))
|
||||
timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
|
||||
-
|
||||
+
|
||||
+ /* Check do we need a proxy to contact the server? */
|
||||
+ if (e_proxy_require_proxy_for_uri (ctx->priv->proxy, ctx->priv->owa_uri))
|
||||
+ uri = e_proxy_peek_uri (ctx->priv->proxy);
|
||||
+
|
||||
ctx->priv->session = soup_session_sync_new_with_options (
|
||||
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
|
||||
SOUP_SESSION_TIMEOUT, timeout,
|
||||
+ SOUP_SESSION_PROXY_URI, uri,
|
||||
NULL);
|
||||
g_signal_connect (ctx->priv->session, "authenticate",
|
||||
G_CALLBACK (session_authenticate), ctx);
|
||||
@@ -402,7 +446,7 @@
|
||||
|
||||
ctx->priv->async_session = soup_session_async_new_with_options (
|
||||
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
|
||||
- NULL);
|
||||
+ SOUP_SESSION_PROXY_URI, uri, NULL);
|
||||
g_signal_connect (ctx->priv->async_session, "authenticate",
|
||||
G_CALLBACK (session_authenticate), ctx);
|
||||
soup_session_add_filter (ctx->priv->async_session,
|
||||
--- servers/groupwise/Makefile.am
|
||||
+++ servers/groupwise/Makefile.am
|
||||
@@ -15,9 +15,10 @@
|
||||
$(E_DATA_SERVER_LIBS)
|
||||
|
||||
soap_test_SOURCES = soap-test.c
|
||||
-soap_test_LDADD = \
|
||||
- $(SOUP_LIBS) \
|
||||
- libegroupwise-1.2.la \
|
||||
+soap_test_LDADD = \
|
||||
+ $(top_builddir)/libedataserver/libedataserver-1.2.la \
|
||||
+ $(SOUP_LIBS) \
|
||||
+ libegroupwise-1.2.la \
|
||||
$(E_DATA_SERVER_LIBS)
|
||||
|
||||
lib_LTLIBRARIES = libegroupwise-1.2.la
|
||||
--- servers/groupwise/e-gw-connection.c
|
||||
+++ servers/groupwise/e-gw-connection.c
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <glib/gi18n-lib.h>
|
||||
+#include <libedataserver/e-proxy.h>
|
||||
#include <libsoup/soup-session-sync.h>
|
||||
#include <libsoup/soup-soap-message.h>
|
||||
#include <libsoup/soup-misc.h>
|
||||
@@ -37,6 +38,9 @@
|
||||
/* For soup sync session timeout */
|
||||
#define GW_SOUP_SESSION_TIMEOUT 30
|
||||
|
||||
+/* Soup session proxy-uri property */
|
||||
+#define SOUP_SESSION_PROXY_URI "proxy-uri"
|
||||
+
|
||||
static GObjectClass *parent_class = NULL;
|
||||
static GHashTable *loaded_connections_permissions = NULL;
|
||||
|
||||
@@ -57,8 +61,37 @@
|
||||
GList *book_list;
|
||||
EGwSendOptions *opts;
|
||||
GMutex *reauth_mutex;
|
||||
+ EProxy *proxy;
|
||||
};
|
||||
|
||||
+static void
|
||||
+update_soup_session_proxy_settings (EProxy *proxy, SoupSession* session,
|
||||
+ const char* uri)
|
||||
+{
|
||||
+ SoupUri *proxy_uri = NULL;
|
||||
+
|
||||
+ if (!session || !uri || !proxy)
|
||||
+ return;
|
||||
+
|
||||
+ if (e_proxy_require_proxy_for_uri (proxy, uri))
|
||||
+ proxy_uri = e_proxy_peek_uri (proxy);
|
||||
+
|
||||
+ g_object_set (session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+proxy_settings_changed (EProxy *proxy, gpointer user_data)
|
||||
+{
|
||||
+ EGwConnection* conn = (EGwConnection *)user_data;
|
||||
+ if (!conn || !conn->priv || !conn->priv->soup_session)
|
||||
+ return;
|
||||
+
|
||||
+ update_soup_session_proxy_settings (proxy,
|
||||
+ conn->priv->soup_session,
|
||||
+ conn->priv->uri);
|
||||
+}
|
||||
+
|
||||
static EGwConnectionStatus
|
||||
reauthenticate (EGwConnection *cnc)
|
||||
{
|
||||
@@ -319,6 +352,11 @@
|
||||
g_free (priv->server_time) ;
|
||||
priv->server_time = NULL ;
|
||||
}
|
||||
+
|
||||
+ if (priv->proxy) {
|
||||
+ g_object_unref (priv->proxy);
|
||||
+ priv->proxy = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (parent_class->dispose)
|
||||
@@ -369,6 +407,11 @@
|
||||
*/
|
||||
if (g_getenv ("SOUP_SESSION_TIMEOUT"))
|
||||
timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
|
||||
+
|
||||
+ /* Initialize proxy settings */
|
||||
+ priv->proxy = e_proxy_new ();
|
||||
+ e_proxy_setup_proxy (priv->proxy);
|
||||
+ g_signal_connect (priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), cnc);
|
||||
|
||||
/* create the SoupSession for this connection */
|
||||
priv->soup_session = soup_session_sync_new_with_options (SOUP_SESSION_TIMEOUT, timeout, NULL);
|
||||
@@ -448,11 +491,17 @@
|
||||
return cnc;
|
||||
}
|
||||
}
|
||||
-
|
||||
|
||||
/* not found, so create a new connection */
|
||||
cnc = g_object_new (E_TYPE_GW_CONNECTION, NULL);
|
||||
|
||||
+ /* Set proxy details for the Soup session before any
|
||||
+ communication.
|
||||
+ */
|
||||
+ update_soup_session_proxy_settings (cnc->priv->proxy,
|
||||
+ cnc->priv->soup_session,
|
||||
+ uri);
|
||||
+
|
||||
msg = form_login_request (uri, username, password);
|
||||
|
||||
/* send message to server */
|
208
bnc-176277-2.patch
Normal file
208
bnc-176277-2.patch
Normal file
@ -0,0 +1,208 @@
|
||||
Index: libedataserver/e-msgport.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/libedataserver/e-msgport.c,v
|
||||
retrieving revision 1.6
|
||||
diff -u -r1.6 e-msgport.c
|
||||
--- libedataserver/e-msgport.c 10 Jan 2006 07:59:04 -0000 1.6
|
||||
+++ libedataserver/e-msgport.c 31 May 2006 21:06:57 -0000
|
||||
@@ -70,7 +70,13 @@
|
||||
e_pipe (int *fds)
|
||||
{
|
||||
#ifndef G_OS_WIN32
|
||||
- return pipe (fds);
|
||||
+ if (pipe (fds) != -1)
|
||||
+ return 0;
|
||||
+
|
||||
+ fds[0] = -1;
|
||||
+ fds[1] = -1;
|
||||
+
|
||||
+ return -1;
|
||||
#else
|
||||
SOCKET temp, socket1 = -1, socket2 = -1;
|
||||
struct sockaddr_in saddr;
|
||||
@@ -180,8 +186,11 @@
|
||||
closesocket (socket1);
|
||||
out0:
|
||||
closesocket (temp);
|
||||
- errno = EIO; /* XXX */
|
||||
-
|
||||
+ errno = EMFILE; /* FIXME: use the real syscall errno? */
|
||||
+
|
||||
+ fds[0] = -1;
|
||||
+ fds[1] = -1;
|
||||
+
|
||||
return -1;
|
||||
|
||||
#endif
|
||||
@@ -487,9 +496,12 @@
|
||||
} fd;
|
||||
} pipe;
|
||||
#ifdef HAVE_NSS
|
||||
- struct {
|
||||
- PRFileDesc *read;
|
||||
- PRFileDesc *write;
|
||||
+ union {
|
||||
+ PRFileDesc *pipe[2];
|
||||
+ struct {
|
||||
+ PRFileDesc *read;
|
||||
+ PRFileDesc *write;
|
||||
+ } fd;
|
||||
} prpipe;
|
||||
#endif
|
||||
/* @#@$#$ glib stuff */
|
||||
@@ -497,6 +509,26 @@
|
||||
GMutex *lock;
|
||||
};
|
||||
|
||||
+
|
||||
+#ifdef HAVE_NSS
|
||||
+static int
|
||||
+e_prpipe (PRFileDesc **fds)
|
||||
+{
|
||||
+#ifdef G_OS_WIN32
|
||||
+ if (PR_NewTCPSocketPair (fds) != PR_FAILURE)
|
||||
+ return 0;
|
||||
+#else
|
||||
+ if (PR_CreatePipe (&fds[0], &fds[1]) != PR_FAILURE)
|
||||
+ return 0;
|
||||
+#endif
|
||||
+
|
||||
+ fds[0] = NULL;
|
||||
+ fds[1] = NULL;
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
EMsgPort *e_msgport_new(void)
|
||||
{
|
||||
EMsgPort *mp;
|
||||
@@ -505,11 +537,9 @@
|
||||
e_dlist_init(&mp->queue);
|
||||
mp->lock = g_mutex_new();
|
||||
mp->cond = g_cond_new();
|
||||
- mp->pipe.fd.read = -1;
|
||||
- mp->pipe.fd.write = -1;
|
||||
+ e_pipe (mp->pipe.pipe);
|
||||
#ifdef HAVE_NSS
|
||||
- mp->prpipe.read = NULL;
|
||||
- mp->prpipe.write = NULL;
|
||||
+ e_prpipe (mp->prpipe.pipe);
|
||||
#endif
|
||||
mp->condwait = 0;
|
||||
|
||||
@@ -525,9 +555,9 @@
|
||||
E_CLOSE(mp->pipe.fd.write);
|
||||
}
|
||||
#ifdef HAVE_NSS
|
||||
- if (mp->prpipe.read) {
|
||||
- PR_Close(mp->prpipe.read);
|
||||
- PR_Close(mp->prpipe.write);
|
||||
+ if (mp->prpipe.fd.read) {
|
||||
+ PR_Close(mp->prpipe.fd.read);
|
||||
+ PR_Close(mp->prpipe.fd.write);
|
||||
}
|
||||
#endif
|
||||
g_free(mp);
|
||||
@@ -536,40 +566,13 @@
|
||||
/* get a fd that can be used to wait on the port asynchronously */
|
||||
int e_msgport_fd(EMsgPort *mp)
|
||||
{
|
||||
- int fd;
|
||||
-
|
||||
- g_mutex_lock(mp->lock);
|
||||
- fd = mp->pipe.fd.read;
|
||||
- if (fd == -1) {
|
||||
- e_pipe(mp->pipe.pipe);
|
||||
- fd = mp->pipe.fd.read;
|
||||
- }
|
||||
- g_mutex_unlock(mp->lock);
|
||||
-
|
||||
- return fd;
|
||||
+ return mp->pipe.fd.read;
|
||||
}
|
||||
|
||||
#ifdef HAVE_NSS
|
||||
PRFileDesc *e_msgport_prfd(EMsgPort *mp)
|
||||
{
|
||||
- PRFileDesc *fd;
|
||||
-
|
||||
- g_mutex_lock(mp->lock);
|
||||
- fd = mp->prpipe.read;
|
||||
- if (fd == NULL) {
|
||||
-#ifdef G_OS_WIN32
|
||||
- PRFileDesc *fds[2];
|
||||
- PR_NewTCPSocketPair (fds);
|
||||
- mp->prpipe.read = fds[0];
|
||||
- mp->prpipe.write = fds[1];
|
||||
-#else
|
||||
- PR_CreatePipe(&mp->prpipe.read, &mp->prpipe.write);
|
||||
-#endif
|
||||
- fd = mp->prpipe.read;
|
||||
- }
|
||||
- g_mutex_unlock(mp->lock);
|
||||
-
|
||||
- return fd;
|
||||
+ return mp->prpipe.fd.read;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -579,7 +582,7 @@
|
||||
#ifdef HAVE_NSS
|
||||
PRFileDesc *prfd;
|
||||
#endif
|
||||
-
|
||||
+
|
||||
m(printf("put:\n"));
|
||||
g_mutex_lock(mp->lock);
|
||||
e_dlist_addtail(&mp->queue, &msg->ln);
|
||||
@@ -587,9 +590,10 @@
|
||||
m(printf("put: condwait > 0, waking up\n"));
|
||||
g_cond_signal(mp->cond);
|
||||
}
|
||||
+
|
||||
fd = mp->pipe.fd.write;
|
||||
#ifdef HAVE_NSS
|
||||
- prfd = mp->prpipe.write;
|
||||
+ prfd = mp->prpipe.fd.write;
|
||||
#endif
|
||||
g_mutex_unlock(mp->lock);
|
||||
|
||||
@@ -626,7 +630,7 @@
|
||||
fd_set rfds;
|
||||
int retry;
|
||||
|
||||
- m(printf("wait: waitng on pipe\n"));
|
||||
+ m(printf("wait: waiting on pipe\n"));
|
||||
g_mutex_unlock(mp->lock);
|
||||
do {
|
||||
FD_ZERO(&rfds);
|
||||
@@ -637,14 +641,14 @@
|
||||
g_mutex_lock(mp->lock);
|
||||
m(printf("wait: got pipe\n"));
|
||||
#ifdef HAVE_NSS
|
||||
- } else if (mp->prpipe.read != NULL) {
|
||||
+ } else if (mp->prpipe.fd.read != NULL) {
|
||||
PRPollDesc polltable[1];
|
||||
int retry;
|
||||
|
||||
m(printf("wait: waitng on pr pipe\n"));
|
||||
g_mutex_unlock(mp->lock);
|
||||
do {
|
||||
- polltable[0].fd = mp->prpipe.read;
|
||||
+ polltable[0].fd = mp->prpipe.fd.read;
|
||||
polltable[0].in_flags = PR_POLL_READ|PR_POLL_ERR;
|
||||
retry = PR_Poll(polltable, 1, PR_INTERVAL_NO_TIMEOUT) == -1 && PR_GetError() == PR_PENDING_INTERRUPT_ERROR;
|
||||
pthread_testcancel();
|
||||
@@ -681,9 +685,9 @@
|
||||
if (mp->pipe.fd.read != -1)
|
||||
E_READ(mp->pipe.fd.read, dummy, 1);
|
||||
#ifdef HAVE_NSS
|
||||
- if (mp->prpipe.read != NULL) {
|
||||
+ if (mp->prpipe.fd.read != NULL) {
|
||||
int c;
|
||||
- c = PR_Read(mp->prpipe.read, dummy, 1);
|
||||
+ c = PR_Read(mp->prpipe.fd.read, dummy, 1);
|
||||
g_assert(c == 1);
|
||||
}
|
||||
#endif
|
20
bnc-177394.patch
Normal file
20
bnc-177394.patch
Normal file
@ -0,0 +1,20 @@
|
||||
Index: camel/providers/imap/camel-imap-command.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-command.c,v
|
||||
retrieving revision 1.76.2.2
|
||||
diff -u -r1.76.2.2 camel/providers/imap/camel-imap-command.c
|
||||
--- camel/providers/imap/camel-imap-command.c 19 May 2006 15:21:37 -0000 1.76.2.2
|
||||
+++ camel/providers/imap/camel-imap-command.c 22 May 2006 16:00:09 -0000
|
||||
@@ -438,10 +438,9 @@
|
||||
fulllen += str->len;
|
||||
g_ptr_array_add (data, str);
|
||||
|
||||
- p = strrchr (str->str, '{');
|
||||
- if (!p)
|
||||
+ if (!(p = strrchr (str->str, '{')) || p[1] == '-')
|
||||
break;
|
||||
-
|
||||
+
|
||||
/* HACK ALERT: We scan the non-literal part of the string, looking for possible s expression braces.
|
||||
This assumes we're getting s-expressions, which we should be.
|
||||
This is so if we get a blank line after a literal, in an s-expression, we can keep going, since
|
554
bnc-179350.patch
Normal file
554
bnc-179350.patch
Normal file
@ -0,0 +1,554 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.114.2.12
|
||||
diff -u -r1.114.2.12 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 6 Jun 2006 19:51:03 -0000 1.114.2.12
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 8 Jun 2006 15:32:24 -0000
|
||||
@@ -63,15 +63,6 @@
|
||||
#define GROUPWISE_BULK_DELETE_LIMIT 100
|
||||
static CamelOfflineFolderClass *parent_class = NULL;
|
||||
|
||||
-struct _CamelGroupwiseFolderPrivate {
|
||||
-
|
||||
-#ifdef ENABLE_THREADS
|
||||
- EMutex *search_lock; /* for locking the search object */
|
||||
- EMutex *cache_lock; /* for locking the cache object */
|
||||
-#endif
|
||||
-
|
||||
-};
|
||||
-
|
||||
/*prototypes*/
|
||||
static void groupwise_transfer_messages_to (CamelFolder *source,
|
||||
GPtrArray *uids,
|
||||
@@ -94,9 +85,7 @@
|
||||
#define d(x)
|
||||
|
||||
static CamelMimeMessage *
|
||||
-groupwise_folder_get_message( CamelFolder *folder,
|
||||
- const char *uid,
|
||||
- CamelException *ex )
|
||||
+groupwise_folder_get_message (CamelFolder *folder, const char *uid, CamelException *ex)
|
||||
{
|
||||
CamelMimeMessage *msg = NULL;
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
|
||||
@@ -107,11 +96,10 @@
|
||||
EGwConnectionStatus status;
|
||||
EGwConnection *cnc;
|
||||
EGwItem *item;
|
||||
- CamelStream *stream, *cache_stream;
|
||||
+ CamelStream *stream;
|
||||
int errno;
|
||||
|
||||
/* see if it is there in cache */
|
||||
-
|
||||
mi = (CamelGroupwiseMessageInfo *) camel_folder_summary_uid (folder->summary, uid);
|
||||
if (mi == NULL) {
|
||||
camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
|
||||
@@ -119,41 +107,38 @@
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- cache_stream = camel_data_cache_get (gw_folder->cache, "cache", uid, ex);
|
||||
- stream = camel_stream_mem_new ();
|
||||
- if (cache_stream) {
|
||||
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
+ if ((stream = camel_data_cache_get (gw_folder->cache, "cache", uid, ex))) {
|
||||
msg = camel_mime_message_new ();
|
||||
- camel_stream_reset (stream);
|
||||
- camel_stream_write_to_stream (cache_stream, stream);
|
||||
- camel_stream_reset (stream);
|
||||
if (camel_data_wrapper_construct_from_stream ((CamelDataWrapper *) msg, stream) == -1) {
|
||||
if (errno == EINTR) {
|
||||
camel_exception_setv (ex, CAMEL_EXCEPTION_USER_CANCEL, _("User cancelled"));
|
||||
camel_object_unref (msg);
|
||||
- camel_object_unref (cache_stream);
|
||||
camel_object_unref (stream);
|
||||
camel_message_info_free (&mi->info);
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
return NULL;
|
||||
- } else {
|
||||
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot get message %s: %s"),
|
||||
- uid, g_strerror (errno));
|
||||
- camel_object_unref (msg);
|
||||
- msg = NULL;
|
||||
}
|
||||
+
|
||||
+ camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot get message %s: %s"),
|
||||
+ uid, g_strerror (errno));
|
||||
+ camel_object_unref (stream);
|
||||
+ camel_object_unref (msg);
|
||||
+ msg = NULL;
|
||||
+ } else {
|
||||
+ camel_object_unref (stream);
|
||||
+ camel_message_info_free (&mi->info);
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
+ return msg;
|
||||
}
|
||||
- camel_object_unref (cache_stream);
|
||||
- }
|
||||
- camel_object_unref (stream);
|
||||
-
|
||||
- if (msg != NULL) {
|
||||
- camel_message_info_free (&mi->info);
|
||||
- return msg;
|
||||
}
|
||||
|
||||
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
|
||||
_("This message is not available in offline mode."));
|
||||
camel_message_info_free (&mi->info);
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -162,6 +147,7 @@
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
|
||||
_("This message is not available in offline mode."));
|
||||
camel_message_info_free (&mi->info);
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -173,6 +159,7 @@
|
||||
g_free (container_id);
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Could not get message"));
|
||||
camel_message_info_free (&mi->info);
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -181,30 +168,30 @@
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Could not get message"));
|
||||
g_free (container_id);
|
||||
camel_message_info_free (&mi->info);
|
||||
-
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if (msg)
|
||||
- camel_medium_set_header (CAMEL_MEDIUM (msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
|
||||
+ camel_medium_set_header (CAMEL_MEDIUM (msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
|
||||
|
||||
- if(!strcmp (folder->full_name, "Sent Items"))
|
||||
+ if (!strcmp (folder->full_name, "Sent Items"))
|
||||
goto end; /*Dont cache if its sent items, since we need to Track Status*/
|
||||
|
||||
/* add to cache */
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
- if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", uid, NULL))) {
|
||||
- if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) msg, cache_stream) == -1
|
||||
- || camel_stream_flush (cache_stream) == -1)
|
||||
+ if ((stream = camel_data_cache_add (gw_folder->cache, "cache", uid, NULL))) {
|
||||
+ if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) msg, stream) == -1
|
||||
+ || camel_stream_flush (stream) == -1)
|
||||
camel_data_cache_remove (gw_folder->cache, "cache", uid, NULL);
|
||||
- camel_object_unref (cache_stream);
|
||||
+ camel_object_unref (stream);
|
||||
}
|
||||
-
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
|
||||
end:
|
||||
+
|
||||
camel_message_info_free (&mi->info);
|
||||
g_free (container_id);
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
return msg;
|
||||
}
|
||||
|
||||
@@ -411,18 +398,20 @@
|
||||
|
||||
summary_path = g_strdup_printf ("%s/summary", folder_dir);
|
||||
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
g_free (gw_folder->cache->path);
|
||||
gw_folder->cache->path = g_strdup (folder_dir);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
-
|
||||
+
|
||||
((CamelFolderClass *)parent_class)->rename(folder, new);
|
||||
camel_folder_summary_set_filename (folder->summary, summary_path);
|
||||
-
|
||||
+
|
||||
state_file = g_strdup_printf ("%s/cmeta", folder_dir);
|
||||
camel_object_set(folder, NULL, CAMEL_OBJECT_STATE_FILE, state_file, NULL);
|
||||
g_free (state_file);
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
g_free (summary_path);
|
||||
g_free (folder_dir);
|
||||
}
|
||||
@@ -433,10 +422,12 @@
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
|
||||
GPtrArray *matches;
|
||||
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_lock);
|
||||
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
camel_folder_search_set_folder (gw_folder->search, folder);
|
||||
matches = camel_folder_search_search(gw_folder->search, expression, NULL, ex);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK(gw_folder, search_lock);
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
|
||||
return matches;
|
||||
}
|
||||
@@ -450,12 +441,12 @@
|
||||
if (uids->len == 0)
|
||||
return g_ptr_array_new();
|
||||
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_lock);
|
||||
-
|
||||
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
camel_folder_search_set_folder(gw_folder->search, folder);
|
||||
matches = camel_folder_search_search(gw_folder->search, expression, uids, ex);
|
||||
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK(gw_folder, search_lock);
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
|
||||
return matches;
|
||||
}
|
||||
@@ -467,12 +458,11 @@
|
||||
|
||||
g_return_if_fail (gw_folder->search);
|
||||
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_lock);
|
||||
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
|
||||
camel_folder_search_free_result (gw_folder->search, uids);
|
||||
-
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK(gw_folder, search_lock);
|
||||
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
}
|
||||
|
||||
/******************* functions specific to Junk Mail Handling**************/
|
||||
@@ -596,31 +586,29 @@
|
||||
EGwConnectionStatus status;
|
||||
EGwConnection *cnc;
|
||||
int count, i;
|
||||
-
|
||||
GList *deleted_items, *deleted_head = NULL;
|
||||
|
||||
deleted_items = NULL;
|
||||
-
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+
|
||||
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
|
||||
((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
|
||||
groupwise_sync_summary (folder, ex);
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
return;
|
||||
}
|
||||
cnc = cnc_lookup (priv);
|
||||
|
||||
container_id = camel_groupwise_store_container_id_lookup (gw_store, folder->full_name) ;
|
||||
-
|
||||
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+
|
||||
if (!camel_groupwise_store_connected (gw_store, ex)) {
|
||||
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
camel_exception_clear (ex);
|
||||
return;
|
||||
}
|
||||
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
-
|
||||
+
|
||||
count = camel_folder_summary_count (folder->summary);
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
for (i=0 ; i <count ; i++) {
|
||||
guint32 flags = 0;
|
||||
info = camel_folder_summary_index (folder->summary, i);
|
||||
@@ -659,17 +647,13 @@
|
||||
}
|
||||
|
||||
if (g_list_length (deleted_items) == GROUPWISE_BULK_DELETE_LIMIT ) {
|
||||
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
|
||||
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
char *uid;
|
||||
while (deleted_items) {
|
||||
uid = (char *)deleted_items->data;
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
camel_folder_summary_remove_uid (folder->summary, uid);
|
||||
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
deleted_items = g_list_next (deleted_items);
|
||||
count -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
i -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
@@ -681,19 +665,15 @@
|
||||
}
|
||||
camel_message_info_free (info);
|
||||
}
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
+
|
||||
if (deleted_items) {
|
||||
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
|
||||
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
char *uid;
|
||||
while (deleted_items) {
|
||||
uid = (char *)deleted_items->data;
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
camel_folder_summary_remove_uid (folder->summary, uid);
|
||||
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
deleted_items = g_list_next (deleted_items);
|
||||
count -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
i -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
@@ -702,23 +682,17 @@
|
||||
g_list_free (deleted_head);
|
||||
}
|
||||
|
||||
- if (read_items && g_list_length (read_items)) {
|
||||
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+ if (read_items && g_list_length (read_items))
|
||||
e_gw_connection_mark_read (cnc, read_items);
|
||||
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
- }
|
||||
-
|
||||
+
|
||||
if (expunge) {
|
||||
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
status = e_gw_connection_purge_deleted_items (cnc);
|
||||
- if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK)
|
||||
g_message ("Purged deleted items in %s", folder->name);
|
||||
- }
|
||||
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
}
|
||||
-
|
||||
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+
|
||||
groupwise_sync_summary (folder, ex);
|
||||
+
|
||||
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
}
|
||||
|
||||
@@ -732,7 +706,6 @@
|
||||
char *summary_file, *state_file, *journal_file;
|
||||
char *short_name;
|
||||
|
||||
-
|
||||
folder = CAMEL_FOLDER (camel_object_new(camel_groupwise_folder_get_type ()) );
|
||||
|
||||
gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
|
||||
@@ -1063,7 +1036,7 @@
|
||||
gw_update_cache (folder, list, ex, FALSE);
|
||||
}
|
||||
}
|
||||
-
|
||||
+
|
||||
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
is_locked = FALSE;
|
||||
|
||||
@@ -1097,7 +1070,6 @@
|
||||
end1:
|
||||
if (is_locked)
|
||||
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
- return;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1318,7 +1290,6 @@
|
||||
mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
|
||||
if (mail_msg)
|
||||
camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", id, NULL))) {
|
||||
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) mail_msg, cache_stream) == -1 || camel_stream_flush (cache_stream) == -1)
|
||||
camel_data_cache_remove (gw_folder->cache, "cache", id, NULL);
|
||||
@@ -1326,7 +1297,6 @@
|
||||
}
|
||||
|
||||
camel_object_unref (mail_msg);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
}
|
||||
/******************** Caching stuff ends *************************/
|
||||
i++;
|
||||
@@ -1720,6 +1690,7 @@
|
||||
static void
|
||||
gw_update_all_items ( CamelFolder *folder, GList *item_list, CamelException *ex)
|
||||
{
|
||||
+ CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
|
||||
GPtrArray *summary = NULL;
|
||||
int index = 0;
|
||||
@@ -1741,11 +1712,11 @@
|
||||
temp = g_list_find_custom (item_list, (const char *)info->uid, (GCompareFunc) strcmp);
|
||||
}
|
||||
if (!temp) {
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
camel_folder_summary_remove_uid (folder->summary, info->uid);
|
||||
camel_data_cache_remove (gw_folder->cache, "cache", info->uid, ex);
|
||||
camel_folder_change_info_remove_uid (changes, info->uid);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
} else {
|
||||
item_list = g_list_delete_link (item_list, temp);
|
||||
}
|
||||
@@ -1754,8 +1725,6 @@
|
||||
camel_object_trigger_event (folder, "folder_changed", changes);
|
||||
|
||||
if (item_list) {
|
||||
- CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
|
||||
-
|
||||
CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
gw_update_cache (folder, item_list, ex, TRUE);
|
||||
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
@@ -1801,6 +1770,7 @@
|
||||
cnc = cnc_lookup (priv);
|
||||
|
||||
CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
/*Get the container id*/
|
||||
container_id = camel_groupwise_store_container_id_lookup (gw_store, folder->full_name) ;
|
||||
|
||||
@@ -1974,15 +1944,15 @@
|
||||
int i, max;
|
||||
gboolean delete = FALSE;
|
||||
GList *deleted_items, *deleted_head = NULL;
|
||||
-
|
||||
|
||||
deleted_items = NULL;
|
||||
cnc = cnc_lookup (priv);
|
||||
if (!cnc)
|
||||
return;
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
|
||||
+
|
||||
if (!strcmp (folder->full_name, "Trash")) {
|
||||
- CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
|
||||
status = e_gw_connection_purge_deleted_items (cnc);
|
||||
if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
camel_folder_freeze (folder);
|
||||
@@ -1997,7 +1967,7 @@
|
||||
changes = camel_folder_change_info_new ();
|
||||
|
||||
container_id = g_strdup (camel_groupwise_store_container_id_lookup (groupwise_store, folder->full_name)) ;
|
||||
-
|
||||
+
|
||||
max = camel_folder_summary_count (folder->summary);
|
||||
for (i = 0; i < max; i++) {
|
||||
info = camel_folder_summary_index (folder->summary, i);
|
||||
@@ -2013,18 +1983,14 @@
|
||||
}
|
||||
if (g_list_length (deleted_items) == GROUPWISE_BULK_DELETE_LIMIT ) {
|
||||
/* Read the FIXME below */
|
||||
- CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
|
||||
status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
|
||||
- CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
|
||||
if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
char *uid;
|
||||
while (deleted_items) {
|
||||
uid = (char *)deleted_items->data;
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
camel_folder_change_info_remove_uid (changes, uid);
|
||||
camel_folder_summary_remove_uid (folder->summary, uid);
|
||||
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
deleted_items = g_list_next (deleted_items);
|
||||
max -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
i -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
@@ -2038,18 +2004,14 @@
|
||||
|
||||
if (deleted_items) {
|
||||
/* FIXME: Put these in a function and reuse it inside the above loop, here and in groupwise_sync*/
|
||||
- CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
|
||||
status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
|
||||
- CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
|
||||
if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
char *uid;
|
||||
while (deleted_items) {
|
||||
uid = (char *)deleted_items->data;
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
camel_folder_change_info_remove_uid (changes, uid);
|
||||
camel_folder_summary_remove_uid (folder->summary, uid);
|
||||
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
deleted_items = g_list_next (deleted_items);
|
||||
}
|
||||
}
|
||||
@@ -2063,6 +2025,8 @@
|
||||
|
||||
g_free (container_id);
|
||||
camel_folder_change_info_free (changes);
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
|
||||
}
|
||||
|
||||
|
||||
@@ -2093,18 +2057,11 @@
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (object);
|
||||
CamelFolder *folder = CAMEL_FOLDER (object);
|
||||
|
||||
-
|
||||
folder->permanent_flags = CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_DELETED |
|
||||
CAMEL_MESSAGE_DRAFT | CAMEL_MESSAGE_FLAGGED | CAMEL_MESSAGE_SEEN;
|
||||
|
||||
folder->folder_flags = CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY | CAMEL_FOLDER_HAS_SEARCH_CAPABILITY;
|
||||
|
||||
- gw_folder->priv = g_malloc0 (sizeof(*gw_folder->priv));
|
||||
-
|
||||
-#ifdef ENABLE_THREADS
|
||||
- gw_folder->priv->search_lock = e_mutex_new(E_MUTEX_SIMPLE);
|
||||
- gw_folder->priv->cache_lock = e_mutex_new(E_MUTEX_REC);
|
||||
-#endif
|
||||
gw_folder->need_rescan = TRUE;
|
||||
}
|
||||
|
||||
@@ -2112,21 +2069,17 @@
|
||||
camel_groupwise_folder_finalize (CamelObject *object)
|
||||
{
|
||||
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (object);
|
||||
-
|
||||
- if (gw_folder->priv)
|
||||
- g_free(gw_folder->priv);
|
||||
+
|
||||
if (gw_folder->cache)
|
||||
camel_object_unref (gw_folder->cache);
|
||||
if (gw_folder->search)
|
||||
camel_object_unref (gw_folder->search);
|
||||
-
|
||||
}
|
||||
|
||||
CamelType
|
||||
camel_groupwise_folder_get_type (void)
|
||||
{
|
||||
static CamelType camel_groupwise_folder_type = CAMEL_INVALID_TYPE;
|
||||
-
|
||||
|
||||
if (camel_groupwise_folder_type == CAMEL_INVALID_TYPE) {
|
||||
camel_groupwise_folder_type =
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.h,v
|
||||
retrieving revision 1.8
|
||||
diff -u -r1.8 camel-groupwise-folder.h
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.h 31 Aug 2005 04:26:07 -0000 1.8
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.h 8 Jun 2006 15:32:24 -0000
|
||||
@@ -54,8 +54,6 @@
|
||||
struct _CamelGroupwiseFolder {
|
||||
CamelOfflineFolder parent_object;
|
||||
|
||||
- struct _CamelGroupwiseFolderPrivate *priv;
|
||||
-
|
||||
CamelFolderSearch *search;
|
||||
|
||||
CamelOfflineJournal *journal;
|
16
bnc-181906-eds-ex-crash.diff
Normal file
16
bnc-181906-eds-ex-crash.diff
Normal file
@ -0,0 +1,16 @@
|
||||
Index: servers/exchange/storage/exchange-account.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-account.c,v
|
||||
retrieving revision 1.32
|
||||
diff -u -p -r1.32 exchange-account.c
|
||||
--- servers/exchange/storage/exchange-account.c 10 May 2006 08:55:24 -0000 1.32
|
||||
+++ servers/exchange/storage/exchange-account.c 6 Jun 2006 08:24:29 -0000
|
||||
@@ -1984,6 +1984,8 @@ exchange_account_new (EAccountList *acco
|
||||
}
|
||||
|
||||
account = g_object_new (EXCHANGE_TYPE_ACCOUNT, NULL);
|
||||
+ if (!account)
|
||||
+ return NULL;
|
||||
account->priv->account_list = account_list;
|
||||
g_object_ref (account_list);
|
||||
account->priv->account = adata;
|
60
bnc-183819-evo-crashed-closing-offline.patch
Normal file
60
bnc-183819-evo-crashed-closing-offline.patch
Normal file
@ -0,0 +1,60 @@
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c.orig 2006-06-16 01:25:47.000000000 +0530
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006-06-16 10:52:22.000000000 +0530
|
||||
@@ -795,16 +795,27 @@ update_update (CamelSession *session, Ca
|
||||
struct _folder_update_msg *m = (struct _folder_update_msg *)msg;
|
||||
EGwConnectionStatus status;
|
||||
CamelException *ex = NULL;
|
||||
+ CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (m->folder->parent_store);
|
||||
|
||||
GList *item_list, *items_full_list = NULL, *last_element=NULL;
|
||||
int cursor = 0;
|
||||
const char *position = E_GW_CURSOR_POSITION_END;
|
||||
gboolean done;
|
||||
|
||||
+ /* Hold the connect_lock.
|
||||
+ In case if user went offline, don't do anything.
|
||||
+ m->cnc would have become invalid, as the store disconnect unrefs it.
|
||||
+ */
|
||||
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+ if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
|
||||
+ ((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
|
||||
+ goto end1;
|
||||
+ }
|
||||
+
|
||||
status = e_gw_connection_create_cursor (m->cnc, m->container_id, "id", NULL, &cursor);
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
g_warning ("ERROR update update\n");
|
||||
- return ;
|
||||
+ goto end1;
|
||||
}
|
||||
|
||||
done = FALSE;
|
||||
@@ -816,7 +827,7 @@ update_update (CamelSession *session, Ca
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
g_warning ("ERROR update update\n");
|
||||
e_gw_connection_destroy_cursor (m->cnc, m->container_id, cursor);
|
||||
- return;
|
||||
+ goto end1;
|
||||
}
|
||||
|
||||
if (!item_list || g_list_length (item_list) == 0)
|
||||
@@ -839,6 +850,7 @@ update_update (CamelSession *session, Ca
|
||||
}
|
||||
e_gw_connection_destroy_cursor (m->cnc, m->container_id, cursor);
|
||||
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
/* Take out only the first part in the list until the @ since it is guaranteed
|
||||
to be unique only until that symbol */
|
||||
|
||||
@@ -860,6 +872,11 @@ update_update (CamelSession *session, Ca
|
||||
|
||||
g_print ("\nNumber of items in the folder: %d \n", g_list_length(items_full_list));
|
||||
gw_update_all_items (m->folder, items_full_list, ex);
|
||||
+
|
||||
+ return;
|
||||
+ end1:
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+ return;
|
||||
}
|
||||
|
||||
static void
|
174
bnc-187529-calendar-cache-population.patch
Normal file
174
bnc-187529-calendar-cache-population.patch
Normal file
@ -0,0 +1,174 @@
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise.c.orig 2006-06-26 14:26:10.000000000 +0530
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c 2006-06-26 14:30:26.000000000 +0530
|
||||
@@ -132,13 +132,19 @@ populate_cache (ECalBackendGroupwise *cb
|
||||
EGwConnectionStatus status;
|
||||
ECalComponent *comp;
|
||||
GList *list = NULL, *l;
|
||||
- gboolean done = FALSE;
|
||||
+ gboolean done = FALSE, forward = FALSE;
|
||||
int cursor = 0;
|
||||
guint32 total, num = 0;
|
||||
- int percent = 0;
|
||||
+ int percent = 0, i;
|
||||
const char *position = E_GW_CURSOR_POSITION_END;
|
||||
icalcomponent_kind kind;
|
||||
const char *type;
|
||||
+ EGwFilter* filter[3];
|
||||
+ char l_str[26];
|
||||
+ char h_str[26];
|
||||
+ icaltimetype temp;
|
||||
+ struct tm tm;
|
||||
+ time_t h_time, l_time;
|
||||
|
||||
priv = cbgw->priv;
|
||||
kind = e_cal_backend_get_kind (E_CAL_BACKEND (cbgw));
|
||||
@@ -155,66 +161,101 @@ populate_cache (ECalBackendGroupwise *cb
|
||||
else
|
||||
type = "Task";
|
||||
|
||||
- status = e_gw_connection_create_cursor (priv->cnc,
|
||||
- priv->container_id,
|
||||
- "recipients message recipientStatus attachments default peek", NULL, &cursor);
|
||||
- if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
- e_cal_backend_groupwise_notify_error_code (cbgw, status);
|
||||
- g_mutex_unlock (mutex);
|
||||
- return status;
|
||||
- }
|
||||
-
|
||||
- while (!done) {
|
||||
-
|
||||
- status = e_gw_connection_read_cursor (priv->cnc, priv->container_id, cursor, FALSE, CURSOR_ITEM_LIMIT, position, &list);
|
||||
+ /* Fetch the data with a bias to present, near past/future */
|
||||
+ temp = icaltime_current_time_with_zone (icaltimezone_get_utc_timezone ());
|
||||
+ i = g_ascii_strtod (g_getenv ("PRELOAD_WINDOW_DAYS")? g_getenv ("PRELOAD_WINDOW_DAYS"):"15", NULL);
|
||||
+ temp.day -= i;
|
||||
+ icaltime_normalize (temp);
|
||||
+ l_time = icaltime_as_timet_with_zone (temp, icaltimezone_get_utc_timezone ());
|
||||
+ gmtime_r (&l_time, &tm);
|
||||
+ strftime (l_str, 26, "%Y-%m-%dT%H:%M:%SZ", &tm);
|
||||
+ temp.day += (2*i);
|
||||
+ icaltime_normalize (temp);
|
||||
+ h_time = icaltime_as_timet_with_zone (temp, icaltimezone_get_utc_timezone ());
|
||||
+ gmtime_r (&h_time, &tm);
|
||||
+ strftime (h_str, 26, "%Y-%m-%dT%H:%M:%SZ", &tm);
|
||||
+
|
||||
+ filter[0] = e_gw_filter_new ();
|
||||
+ e_gw_filter_add_filter_component (filter[0], E_GW_FILTER_OP_GREATERTHAN_OR_EQUAL, "startDate", l_str);
|
||||
+ e_gw_filter_add_filter_component (filter[0], E_GW_FILTER_OP_LESSTHAN_OR_EQUAL, "startDate", h_str);
|
||||
+ e_gw_filter_group_conditions (filter[0], E_GW_FILTER_OP_AND, 2);
|
||||
+ filter[1] = e_gw_filter_new ();
|
||||
+ e_gw_filter_add_filter_component (filter[1], E_GW_FILTER_OP_GREATERTHAN, "startDate", h_str);
|
||||
+ filter[2] = e_gw_filter_new ();
|
||||
+ e_gw_filter_add_filter_component (filter[2], E_GW_FILTER_OP_LESSTHAN, "startDate", l_str);
|
||||
+
|
||||
+ for (i = 0; i < 3; i++) {
|
||||
+ status = e_gw_connection_create_cursor (priv->cnc,
|
||||
+ priv->container_id,
|
||||
+ "recipients message recipientStatus attachments default peek", filter[i], &cursor);
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
e_cal_backend_groupwise_notify_error_code (cbgw, status);
|
||||
g_mutex_unlock (mutex);
|
||||
return status;
|
||||
}
|
||||
- for (l = list; l != NULL; l = g_list_next(l)) {
|
||||
- EGwItem *item;
|
||||
- char *progress_string = NULL;
|
||||
+ done = FALSE;
|
||||
+ if (i == 1) {
|
||||
+ position = E_GW_CURSOR_POSITION_START;
|
||||
+ forward = TRUE;
|
||||
+
|
||||
+ } else {
|
||||
+ position = E_GW_CURSOR_POSITION_END;
|
||||
+ forward = FALSE;
|
||||
+ }
|
||||
|
||||
- item = E_GW_ITEM (l->data);
|
||||
- comp = e_gw_item_to_cal_component (item, cbgw);
|
||||
- g_object_unref (item);
|
||||
+ while (!done) {
|
||||
|
||||
- /* Show the progress information */
|
||||
- num++;
|
||||
- percent = ((float) num/total) * 100;
|
||||
-
|
||||
- /* FIXME The total obtained from the server is wrong. Sometimes the num can
|
||||
- be greater than the total. The following makes sure that the percentage is not >= 100 */
|
||||
-
|
||||
- if (percent > 100)
|
||||
- percent = 99;
|
||||
-
|
||||
- progress_string = g_strdup_printf (_("Loading %s items"), type);
|
||||
- e_cal_backend_notify_view_progress (E_CAL_BACKEND (cbgw), progress_string, percent);
|
||||
+ status = e_gw_connection_read_cursor (priv->cnc, priv->container_id, cursor, forward, CURSOR_ITEM_LIMIT, position, &list);
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
+ e_cal_backend_groupwise_notify_error_code (cbgw, status);
|
||||
+ g_mutex_unlock (mutex);
|
||||
+ return status;
|
||||
+ }
|
||||
+ for (l = list; l != NULL; l = g_list_next(l)) {
|
||||
+ EGwItem *item;
|
||||
+ char *progress_string = NULL;
|
||||
+
|
||||
+ item = E_GW_ITEM (l->data);
|
||||
+ comp = e_gw_item_to_cal_component (item, cbgw);
|
||||
+ g_object_unref (item);
|
||||
+
|
||||
+ /* Show the progress information */
|
||||
+ num++;
|
||||
+ percent = ((float) num/total) * 100;
|
||||
|
||||
- if (E_IS_CAL_COMPONENT (comp)) {
|
||||
- char *comp_str;
|
||||
+ /* FIXME The total obtained from the server is wrong. Sometimes the num can
|
||||
+ be greater than the total. The following makes sure that the percentage is not >= 100 */
|
||||
+
|
||||
+ if (percent > 100)
|
||||
+ percent = 99;
|
||||
+
|
||||
+ progress_string = g_strdup_printf (_("Loading %s items"), type);
|
||||
+ e_cal_backend_notify_view_progress (E_CAL_BACKEND (cbgw), progress_string, percent);
|
||||
|
||||
- e_cal_component_commit_sequence (comp);
|
||||
- if (kind == icalcomponent_isa (e_cal_component_get_icalcomponent (comp))) {
|
||||
- comp_str = e_cal_component_get_as_string (comp);
|
||||
- e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), (const char *) comp_str);
|
||||
- g_free (comp_str);
|
||||
+ if (E_IS_CAL_COMPONENT (comp)) {
|
||||
+ char *comp_str;
|
||||
+
|
||||
+ e_cal_component_commit_sequence (comp);
|
||||
+ if (kind == icalcomponent_isa (e_cal_component_get_icalcomponent (comp))) {
|
||||
+ comp_str = e_cal_component_get_as_string (comp);
|
||||
+ e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), (const char *) comp_str);
|
||||
+ g_free (comp_str);
|
||||
+ }
|
||||
+ e_cal_backend_cache_put_component (priv->cache, comp);
|
||||
+ g_object_unref (comp);
|
||||
}
|
||||
- e_cal_backend_cache_put_component (priv->cache, comp);
|
||||
- g_object_unref (comp);
|
||||
+ g_free (progress_string);
|
||||
}
|
||||
- g_free (progress_string);
|
||||
+
|
||||
+ if (!list || g_list_length (list) == 0)
|
||||
+ done = TRUE;
|
||||
+ g_list_free (list);
|
||||
+ list = NULL;
|
||||
+ position = E_GW_CURSOR_POSITION_CURRENT;
|
||||
}
|
||||
-
|
||||
- if (!list || g_list_length (list) == 0)
|
||||
- done = TRUE;
|
||||
- g_list_free (list);
|
||||
- list = NULL;
|
||||
- position = E_GW_CURSOR_POSITION_CURRENT;
|
||||
- }
|
||||
- e_gw_connection_destroy_cursor (priv->cnc, priv->container_id, cursor);
|
||||
+ e_gw_connection_destroy_cursor (priv->cnc, priv->container_id, cursor);
|
||||
+ g_object_unref (filter[i]);
|
||||
+ }
|
||||
e_cal_backend_notify_view_done (E_CAL_BACKEND (cbgw), GNOME_Evolution_Calendar_Success);
|
||||
|
||||
g_mutex_unlock (mutex);
|
190
bulk-delete.patch
Normal file
190
bulk-delete.patch
Normal file
@ -0,0 +1,190 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.130
|
||||
diff -u -p -r1.130 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 18 Apr 2006 15:15:30 -0000 1.130
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 24 Apr 2006 08:37:43 -0000
|
||||
@@ -61,6 +61,7 @@
|
||||
#define JUNK_FOLDER "Junk Mail"
|
||||
#define READ_CURSOR_MAX_IDS 500
|
||||
#define MAX_ATTACHMENT_SIZE 1*1024*1024 /*In bytes*/
|
||||
+#define GROUPWISE_BULK_DELETE_LIMIT 100
|
||||
|
||||
static CamelOfflineFolderClass *parent_class = NULL;
|
||||
|
||||
@@ -586,7 +587,11 @@ groupwise_sync (CamelFolder *folder, gbo
|
||||
EGwConnectionStatus status;
|
||||
EGwConnection *cnc;
|
||||
int count, i;
|
||||
-
|
||||
+
|
||||
+ GList *deleted_items, *deleted_head=NULL;
|
||||
+
|
||||
+ deleted_items = NULL;
|
||||
+
|
||||
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
|
||||
((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
|
||||
groupwise_sync_summary (folder, ex);
|
||||
@@ -606,7 +611,7 @@ groupwise_sync (CamelFolder *folder, gbo
|
||||
|
||||
count = camel_folder_summary_count (folder->summary);
|
||||
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
- for (i=0 ; i <count ; i++) {
|
||||
+ for (i=0 ; i < count ; i++) {
|
||||
guint32 flags = 0;
|
||||
info = camel_folder_summary_index (folder->summary, i);
|
||||
gw_info = (CamelGroupwiseMessageInfo *) info;
|
||||
@@ -635,22 +640,57 @@ groupwise_sync (CamelFolder *folder, gbo
|
||||
if (diff.changed & CAMEL_MESSAGE_SEEN)
|
||||
read_items = g_list_append (read_items, (char *)uid);
|
||||
if (diff.changed & CAMEL_MESSAGE_DELETED) {
|
||||
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
- status = e_gw_connection_remove_item (cnc, container_id, uid);
|
||||
- if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
- camel_folder_summary_remove (folder->summary, info);
|
||||
- camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
- i--; count--;
|
||||
+ if (deleted_items)
|
||||
+ deleted_items = g_list_prepend (deleted_items, (char *)camel_message_info_uid (info));
|
||||
+ else {
|
||||
+ g_list_free (deleted_head);
|
||||
+ deleted_head = NULL;
|
||||
+ deleted_head = deleted_items = g_list_prepend (deleted_items, (char *)camel_message_info_uid (info));
|
||||
+ }
|
||||
+
|
||||
+ if (g_list_length (deleted_items) == GROUPWISE_BULK_DELETE_LIMIT ) {
|
||||
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+ status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
+ char *uid;
|
||||
+ while (deleted_items) {
|
||||
+ uid = (char *)deleted_items->data;
|
||||
+ CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
+ camel_folder_summary_remove_uid (folder->summary, uid);
|
||||
+ camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
+ CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
+ deleted_items = g_list_next (deleted_items);
|
||||
+ count -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
+ i -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
}
|
||||
}
|
||||
}
|
||||
camel_message_info_free (info);
|
||||
}
|
||||
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
+ if (deleted_items) {
|
||||
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
+ status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
|
||||
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
+ char *uid;
|
||||
+ while (deleted_items) {
|
||||
+ uid = (char *)deleted_items->data;
|
||||
+ CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
+ camel_folder_summary_remove_uid (folder->summary, uid);
|
||||
+ camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
+ CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
+ deleted_items = g_list_next (deleted_items);
|
||||
+ count -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
+ i -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
+ }
|
||||
+ }
|
||||
+ g_list_free (deleted_head);
|
||||
+ }
|
||||
|
||||
if (read_items && g_list_length (read_items)) {
|
||||
CAMEL_SERVICE_LOCK (gw_store, connect_lock);
|
||||
@@ -1960,8 +2000,10 @@ groupwise_expunge (CamelFolder *folder,
|
||||
CamelFolderChangeInfo *changes;
|
||||
int i, max;
|
||||
gboolean delete = FALSE;
|
||||
+ GList *deleted_items, *deleted_head=NULL;
|
||||
+
|
||||
|
||||
-
|
||||
+ deleted_items = NULL;
|
||||
cnc = cnc_lookup (priv);
|
||||
if (!cnc)
|
||||
return;
|
||||
@@ -1988,26 +2030,62 @@ groupwise_expunge (CamelFolder *folder,
|
||||
info = camel_folder_summary_index (folder->summary, i);
|
||||
ginfo = (CamelGroupwiseMessageInfo *) info;
|
||||
if (ginfo && (ginfo->info.flags & CAMEL_MESSAGE_DELETED)) {
|
||||
- const char *uid = camel_message_info_uid (info);
|
||||
- CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
|
||||
- status = e_gw_connection_remove_item (cnc, container_id, uid);
|
||||
- if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
+
|
||||
+ if (deleted_items)
|
||||
+ deleted_items = g_list_prepend (deleted_items, (char *)camel_message_info_uid (info));
|
||||
+ else {
|
||||
+ g_list_free (deleted_head);
|
||||
+ deleted_head = NULL;
|
||||
+ deleted_head = deleted_items = g_list_prepend (deleted_items, (char *)camel_message_info_uid (info));
|
||||
+ }
|
||||
+ if (g_list_length (deleted_items) == GROUPWISE_BULK_DELETE_LIMIT ) {
|
||||
+ /* Read the FIXME below */
|
||||
+ CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
|
||||
+ status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
|
||||
+ CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
+ char *uid;
|
||||
+ while (deleted_items) {
|
||||
+ uid = (char *)deleted_items->data;
|
||||
+ CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
+ camel_folder_change_info_remove_uid (changes, uid);
|
||||
+ camel_folder_summary_remove_uid (folder->summary, uid);
|
||||
+ camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
+ CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
+ deleted_items = g_list_next (deleted_items);
|
||||
+ max -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
+ i -= GROUPWISE_BULK_DELETE_LIMIT;
|
||||
+ }
|
||||
+ }
|
||||
+ delete = TRUE;
|
||||
+ }
|
||||
+ }
|
||||
+ camel_message_info_free (info);
|
||||
+ }
|
||||
+
|
||||
+ if (deleted_items) {
|
||||
+ /* FIXME: Put these in a function and reuse it inside the above loop, here and in groupwise_sync*/
|
||||
+ CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
|
||||
+ status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
|
||||
+ CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
+ char *uid;
|
||||
+ while (deleted_items) {
|
||||
+ uid = (char *)deleted_items->data;
|
||||
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
- camel_folder_change_info_remove_uid (changes, (char *) uid);
|
||||
- camel_folder_summary_remove (folder->summary, info);
|
||||
+ camel_folder_change_info_remove_uid (changes, uid);
|
||||
+ camel_folder_summary_remove_uid (folder->summary, uid);
|
||||
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
|
||||
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
- delete = TRUE;
|
||||
- i--; max--;
|
||||
+ deleted_items = g_list_next (deleted_items);
|
||||
}
|
||||
- CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
|
||||
}
|
||||
- camel_message_info_free (info);
|
||||
+ delete = TRUE;
|
||||
+ g_list_free (deleted_head);
|
||||
}
|
||||
|
||||
if (delete)
|
||||
camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
|
||||
-
|
||||
|
||||
g_free (container_id);
|
||||
camel_folder_change_info_free (changes);
|
17
cal-attachment-filename-handling.patch
Normal file
17
cal-attachment-filename-handling.patch
Normal file
@ -0,0 +1,17 @@
|
||||
Index: calendar/libical/src/libical/icalvalue.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/libical/src/libical/icalvalue.c,v
|
||||
retrieving revision 1.22
|
||||
retrieving revision 1.23
|
||||
diff -u -p -r1.22 -r1.23
|
||||
--- calendar/libical/src/libical/icalvalue.c 15 Jun 2006 14:42:21 -0000 1.22
|
||||
+++ calendar/libical/src/libical/icalvalue.c 3 Jul 2006 14:29:43 -0000 1.23
|
||||
@@ -1346,7 +1346,7 @@ int icalvalue_decode_ical_string(const c
|
||||
|
||||
icalmemory_append_char(&str,&str_p,&buf_sz,'\0');
|
||||
|
||||
- if ((int)strlen(str) >= nMaxBufferLen) {
|
||||
+ if ((int)strlen(str) > nMaxBufferLen) {
|
||||
return 0;
|
||||
}
|
||||
|
298
camel-partha-gw-fixes.patch
Normal file
298
camel-partha-gw-fixes.patch
Normal file
@ -0,0 +1,298 @@
|
||||
diff -Nrup camel/providers/groupwise/camel-groupwise-folder.c /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 2006-03-23 14:08:09.734955209 +0100
|
||||
+++ /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-folder.c 2006-03-23 12:07:49.000000000 +0100
|
||||
@@ -92,7 +92,7 @@ static void gw_update_cache ( CamelFolde
|
||||
static CamelMimeMessage *groupwise_folder_item_to_msg ( CamelFolder *folder, EGwItem *item, CamelException *ex );
|
||||
|
||||
|
||||
-#define d(x) x
|
||||
+#define d(x)
|
||||
|
||||
static CamelMimeMessage *
|
||||
groupwise_folder_get_message( CamelFolder *folder,
|
||||
@@ -635,9 +635,10 @@ groupwise_sync (CamelFolder *folder, gbo
|
||||
diff.changed &= folder->permanent_flags;
|
||||
|
||||
/* weed out flag changes that we can't sync to the server */
|
||||
- if (!diff.changed)
|
||||
+ if (!diff.changed) {
|
||||
camel_message_info_free(info);
|
||||
- else {
|
||||
+ continue;
|
||||
+ } else {
|
||||
const char *uid = camel_message_info_uid (info);
|
||||
if (diff.changed & CAMEL_MESSAGE_SEEN)
|
||||
read_items = g_list_append (read_items, (char *)uid);
|
||||
@@ -656,7 +657,6 @@ groupwise_sync (CamelFolder *folder, gbo
|
||||
}
|
||||
}
|
||||
camel_message_info_free (info);
|
||||
- info = NULL;
|
||||
}
|
||||
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
|
||||
|
||||
@@ -989,7 +989,6 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
|
||||
/* The storing of time-stamp to summary code below should be commented if the
|
||||
above commented code is uncommented */
|
||||
-
|
||||
if (summary->time_string)
|
||||
g_free (summary->time_string);
|
||||
|
||||
@@ -1047,7 +1046,7 @@ end1:
|
||||
return;
|
||||
}
|
||||
|
||||
-void
|
||||
+static void
|
||||
gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean uid_flag)
|
||||
{
|
||||
CamelGroupwiseMessageInfo *mi = NULL;
|
||||
@@ -1069,6 +1068,7 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
int total_items = g_list_length (item_list), i=0;
|
||||
|
||||
/*Assert lock*/
|
||||
+ CAMEL_SERVICE_ASSERT_LOCKED (gw_store, connect_lock);
|
||||
changes = camel_folder_change_info_new ();
|
||||
container_id = g_strdup (camel_groupwise_store_container_id_lookup (gw_store, folder->full_name));
|
||||
if (!container_id) {
|
||||
@@ -1092,8 +1092,9 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
const char *id;
|
||||
GSList *recp_list = NULL;
|
||||
status_flags = 0;
|
||||
- CamelStream *cache_stream;
|
||||
+ CamelStream *cache_stream, *t_cache_stream;
|
||||
CamelMimeMessage *mail_msg = NULL;
|
||||
+ gboolean is_sent_folder = FALSE;
|
||||
|
||||
exists = FALSE;
|
||||
|
||||
@@ -1118,11 +1119,7 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
if (pmi) {
|
||||
exists = TRUE;
|
||||
camel_message_info_ref (pmi);
|
||||
- mi = (CamelGroupwiseMessageInfo *)camel_message_info_clone(pmi);
|
||||
- /*
|
||||
- pmi->summary = folder->summary;
|
||||
- mi->info.summary = folder->summary;
|
||||
- */
|
||||
+ mi = (CamelGroupwiseMessageInfo *)pmi;
|
||||
}
|
||||
|
||||
if (!exists) {
|
||||
@@ -1146,9 +1143,15 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
item_status = e_gw_item_get_item_status (item);
|
||||
if (item_status & E_GW_ITEM_STAT_READ)
|
||||
status_flags |= CAMEL_MESSAGE_SEEN;
|
||||
+ else
|
||||
+ mi->info.flags &= ~CAMEL_MESSAGE_SEEN;
|
||||
+
|
||||
if (item_status & E_GW_ITEM_STAT_REPLIED)
|
||||
status_flags |= CAMEL_MESSAGE_ANSWERED;
|
||||
- mi->info.flags |= status_flags;
|
||||
+ if (exists)
|
||||
+ mi->info.flags |= status_flags;
|
||||
+ else
|
||||
+ mi->info.flags = status_flags;
|
||||
|
||||
priority = e_gw_item_get_priority (item);
|
||||
if (priority && !(g_ascii_strcasecmp (priority,"High"))) {
|
||||
@@ -1222,12 +1225,7 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
mi->info.date_sent = mi->info.date_received = actual_time;
|
||||
}
|
||||
}
|
||||
-#if 0
|
||||
-
|
||||
- if (exists)
|
||||
- g_free(mi->info.uid);
|
||||
- mi->info.uid = g_strdup(e_gw_item_get_id(item));
|
||||
-#endif
|
||||
+
|
||||
if (!exists) {
|
||||
mi->info.uid = g_strdup (e_gw_item_get_id(item));
|
||||
mi->info.size = e_gw_item_get_mail_size (item);
|
||||
@@ -1235,12 +1233,7 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
}
|
||||
|
||||
if (exists) {
|
||||
- /*
|
||||
camel_folder_change_info_change_uid (changes, mi->info.uid);
|
||||
- camel_message_info_free (&mi->info);*/
|
||||
- camel_folder_summary_remove(folder->summary, pmi);
|
||||
- camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
|
||||
- camel_folder_change_info_add_uid (changes, mi->info.uid);
|
||||
camel_message_info_free (pmi);
|
||||
} else {
|
||||
camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
|
||||
@@ -1253,13 +1246,17 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
continue;
|
||||
|
||||
if (!strcmp (folder->full_name, "Sent Items"))
|
||||
- exists = FALSE;
|
||||
+ is_sent_folder = TRUE;
|
||||
/******************** Begine Caching ************************/
|
||||
/* add to cache if its a new message*/
|
||||
- if (!exists) {
|
||||
+ t_cache_stream = camel_data_cache_get (gw_folder->cache, "cache", id, ex);
|
||||
+ if (t_cache_stream && !is_sent_folder) {
|
||||
+ camel_object_unref (t_cache_stream);
|
||||
+
|
||||
mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
|
||||
if (mail_msg)
|
||||
camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
|
||||
+
|
||||
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
|
||||
if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", id, NULL))) {
|
||||
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) mail_msg, cache_stream) == -1 || camel_stream_flush (cache_stream) == -1)
|
||||
@@ -1579,7 +1576,6 @@ groupwise_folder_item_to_msg( CamelFolde
|
||||
}
|
||||
g_object_unref (temp_item);
|
||||
} else {
|
||||
- g_print ("%d:%d\n", attach->size, MAX_ATTACHMENT_SIZE);
|
||||
if (attach->size > MAX_ATTACHMENT_SIZE) {
|
||||
long count = 0;
|
||||
int i, t_len=0, offset=0, t_offset=0;
|
||||
@@ -1743,7 +1739,7 @@ groupwise_append_message (CamelFolder *f
|
||||
CamelGroupwiseStorePrivate *priv = gw_store->priv;
|
||||
CamelOfflineStore *offline = (CamelOfflineStore *) folder->parent_store;
|
||||
CamelAddress *recipients;
|
||||
- EGwConnectionStatus status = E_GW_CONNECTION_STATUS_OK;
|
||||
+ EGwConnectionStatus status;
|
||||
EGwConnection *cnc;
|
||||
EGwItem *item;
|
||||
char *id;
|
||||
diff -Nrup camel/providers/groupwise/camel-groupwise-store.c /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-store.c
|
||||
--- camel/providers/groupwise/camel-groupwise-store.c 2006-03-23 14:08:09.722954807 +0100
|
||||
+++ /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-store.c 2006-03-23 10:26:40.000000000 +0100
|
||||
@@ -461,16 +461,15 @@ groupwise_build_folder_info(CamelGroupwi
|
||||
name = fi->full_name;
|
||||
else
|
||||
name++;
|
||||
-
|
||||
- if (!strcmp (folder_name, "Sent Items"))
|
||||
- fi->flags |= CAMEL_FOLDER_TYPE_SENT;
|
||||
- else if (!strcmp (folder_name, "Mailbox"))
|
||||
- fi->flags |= CAMEL_FOLDER_TYPE_INBOX;
|
||||
- else if (!strcmp (folder_name, "Trash"))
|
||||
- fi->flags |= CAMEL_FOLDER_TYPE_TRASH;
|
||||
- else if (!strcmp (folder_name, "Junk Mail"))
|
||||
- fi->flags |= CAMEL_FOLDER_TYPE_JUNK;
|
||||
-
|
||||
+ if (!strcmp (folder_name, "Sent Items"))
|
||||
+ fi->flags |= CAMEL_FOLDER_TYPE_SENT;
|
||||
+ else if (!strcmp (folder_name, "Mailbox"))
|
||||
+ fi->flags |= CAMEL_FOLDER_TYPE_INBOX;
|
||||
+ else if (!strcmp (folder_name, "Trash"))
|
||||
+ fi->flags |= CAMEL_FOLDER_TYPE_TRASH;
|
||||
+ else if (!strcmp (folder_name, "Junk Mail"))
|
||||
+ fi->flags |= CAMEL_FOLDER_TYPE_JUNK;
|
||||
+
|
||||
fi->name = g_strdup(name);
|
||||
return fi;
|
||||
}
|
||||
@@ -690,7 +689,7 @@ gw_store_reload_folder (CamelGroupwiseSt
|
||||
{
|
||||
CamelGroupwiseStorePrivate *priv = gw_store->priv;
|
||||
CamelGroupwiseSummary *summary;
|
||||
- char *container_id, *folder_dir, *storage_path;
|
||||
+ char *container_id;
|
||||
EGwConnectionStatus status;
|
||||
GList *list = NULL;
|
||||
gboolean done = FALSE;
|
||||
@@ -751,11 +750,9 @@ gw_store_reload_folder (CamelGroupwiseSt
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
|
||||
e_gw_connection_destroy_cursor (priv->cnc, container_id, cursor);
|
||||
- camel_folder_summary_clear (folder->summary);
|
||||
camel_folder_summary_save (folder->summary);
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
|
||||
camel_operation_end (NULL);
|
||||
- camel_object_unref (folder);
|
||||
g_free (container_id);
|
||||
return;
|
||||
}
|
||||
@@ -981,6 +978,10 @@ groupwise_folders_sync (CamelGroupwiseSt
|
||||
info = NULL;
|
||||
}
|
||||
}
|
||||
+ if (store->current_folder && strcmp (store->current_folder->full_name, info->full_name) == 0) {
|
||||
+ g_print ("Syncing up %s\n", info->full_name);
|
||||
+ CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS (store->current_folder))->sync(store->current_folder, FALSE, ex);
|
||||
+ }
|
||||
}
|
||||
|
||||
g_free ((char *)url);
|
||||
@@ -1153,7 +1154,8 @@ groupwise_get_folder_info (CamelStore *s
|
||||
}
|
||||
|
||||
CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
- if ((groupwise_store->list_loaded == FALSE) && check_for_connection((CamelService *)store, ex)) {
|
||||
+/* if ((groupwise_store->list_loaded == FALSE) && check_for_connection((CamelService *)store, ex)) {*/
|
||||
+ if (check_for_connection((CamelService *)store, ex)) {
|
||||
if (!priv->cnc) {
|
||||
if (groupwise_connect ((CamelService *)store, ex)) {
|
||||
g_warning ("Could connect!!!\n");
|
||||
@@ -1161,7 +1163,7 @@ groupwise_get_folder_info (CamelStore *s
|
||||
g_warning ("Could not connect..failure connecting\n");
|
||||
}
|
||||
if (camel_groupwise_store_connected ((CamelGroupwiseStore *)store, ex)) {
|
||||
- groupwise_store->list_loaded = TRUE;
|
||||
+ /*groupwise_store->list_loaded = TRUE;*/
|
||||
groupwise_folders_sync (groupwise_store, ex);
|
||||
if (camel_exception_is_set (ex)) {
|
||||
CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
@@ -1173,7 +1175,7 @@ groupwise_get_folder_info (CamelStore *s
|
||||
}
|
||||
CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
|
||||
- //camel_exception_clear (ex);
|
||||
+ /*camel_exception_clear (ex);*/
|
||||
info = groupwise_get_folder_info_offline (store, top, flags, ex);
|
||||
return info;
|
||||
}
|
||||
diff -Nrup camel/providers/groupwise/camel-groupwise-utils.c /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-utils.c
|
||||
--- camel/providers/groupwise/camel-groupwise-utils.c 2006-03-23 14:08:09.702954138 +0100
|
||||
+++ /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-utils.c 2006-03-21 07:12:04.000000000 +0100
|
||||
@@ -432,7 +432,7 @@ camel_groupwise_util_item_from_message (
|
||||
} else {
|
||||
/*only message*/
|
||||
CamelStreamMem *content = (CamelStreamMem *)camel_stream_mem_new ();
|
||||
- CamelDataWrapper *dw = camel_data_wrapper_new ();
|
||||
+ CamelDataWrapper *dw = NULL;
|
||||
CamelContentType *type;
|
||||
char *buffer = NULL;
|
||||
char *content_type = NULL;
|
||||
@@ -587,7 +587,7 @@ do_multipart (EGwConnection *cnc, EGwIte
|
||||
CamelContentType *type;
|
||||
CamelMimePart *part;
|
||||
CamelStreamMem *content = (CamelStreamMem *)camel_stream_mem_new ();
|
||||
- CamelDataWrapper *dw = camel_data_wrapper_new ();
|
||||
+ CamelDataWrapper *dw = NULL;
|
||||
const char *disposition, *filename;
|
||||
char *buffer = NULL;
|
||||
char *mime_type = NULL;
|
||||
@@ -611,7 +611,7 @@ do_multipart (EGwConnection *cnc, EGwIte
|
||||
const char *cid = NULL;
|
||||
CamelStreamMem *temp_content = (CamelStreamMem *)camel_stream_mem_new ();
|
||||
temp_part = camel_multipart_get_part ((CamelMultipart *)dw, 1);
|
||||
- CamelDataWrapper *temp_dw = camel_data_wrapper_new ();
|
||||
+ CamelDataWrapper *temp_dw = NULL;
|
||||
if (temp_part) {
|
||||
is_alternative = TRUE;
|
||||
temp_dw = camel_medium_get_content_object (CAMEL_MEDIUM (temp_part));
|
||||
@@ -628,8 +628,6 @@ do_multipart (EGwConnection *cnc, EGwIte
|
||||
g_free (mime_type);
|
||||
}
|
||||
camel_object_unref (temp_content);
|
||||
- camel_object_unref (temp_dw);
|
||||
- camel_object_unref (dw);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -653,6 +651,5 @@ do_multipart (EGwConnection *cnc, EGwIte
|
||||
g_free (buffer);
|
||||
g_free (mime_type);
|
||||
camel_object_unref (content);
|
||||
- camel_object_unref (dw);
|
||||
} /*end of for*/
|
||||
}
|
393
camel-vfs-stream.diff
Normal file
393
camel-vfs-stream.diff
Normal file
@ -0,0 +1,393 @@
|
||||
--- configure.in.old 2006-05-23 07:34:48.254719640 +0200
|
||||
+++ configure.in 2006-05-23 07:35:07.050359111 +0200
|
||||
@@ -1199,7 +1199,7 @@
|
||||
AC_MSG_ERROR([*** zlib is required])
|
||||
fi
|
||||
|
||||
-EVO_SET_COMPILE_FLAGS(CAMEL, gthread-2.0 gmodule-2.0 gobject-2.0 $mozilla_nss,
|
||||
+EVO_SET_COMPILE_FLAGS(CAMEL, gthread-2.0 gmodule-2.0 gobject-2.0 $mozilla_nss gnome-vfs-2.0,
|
||||
$THREADS_CFLAGS $KRB4_CFLAGS $KRB5_CFLAGS $MANUAL_NSS_CFLAGS,
|
||||
-lz $THREADS_LIBS $KRB4_LDFLAGS $KRB5_LDFLAGS $MANUAL_NSS_LIBS)
|
||||
AC_SUBST(CAMEL_CFLAGS)
|
||||
Index: camel/Makefile.am
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/Makefile.am,v
|
||||
retrieving revision 1.213
|
||||
diff -u -p -r1.213 Makefile.am
|
||||
--- camel/Makefile.am 4 Jan 2006 23:47:07 -0000 1.213
|
||||
+++ camel/Makefile.am 23 May 2006 03:54:24 -0000
|
||||
@@ -201,6 +201,7 @@ libcamel_1_2_la_SOURCES = \
|
||||
camel-stream-fs.c \
|
||||
camel-stream-mem.c \
|
||||
camel-stream-null.c \
|
||||
+ camel-stream-vfs.c \
|
||||
camel-stream.c \
|
||||
camel-string-utils.c \
|
||||
camel-text-index.c \
|
||||
@@ -270,6 +271,7 @@ libcamelinclude_HEADERS = \
|
||||
camel-stream-mem.h \
|
||||
camel-stream-null.h \
|
||||
camel-stream-process.h \
|
||||
+ camel-stream-vfs.h \
|
||||
camel-stream.h \
|
||||
camel-string-utils.h \
|
||||
camel-text-index.h \
|
||||
--- /dev/null 2006-04-26 01:42:37.000000000 +0530
|
||||
+++ camel/camel-stream-vfs.c 2006-05-18 16:42:45.000000000 +0530
|
||||
@@ -0,0 +1,281 @@
|
||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
+/* camel-stream-vfs.c : file system based stream */
|
||||
+
|
||||
+/*
|
||||
+ * Authors: Srinivasa Ragavan <sragavan@novell.com>
|
||||
+ *
|
||||
+ * Copyright 2006 Novell, Inc. (www.novell.com)
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of version 2 of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||
+ * USA
|
||||
+ */
|
||||
+
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include <config.h>
|
||||
+#endif
|
||||
+
|
||||
+#include <unistd.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <errno.h>
|
||||
+#include <string.h>
|
||||
+
|
||||
+#include <glib/gstdio.h>
|
||||
+
|
||||
+#include "camel-file-utils.h"
|
||||
+#include "camel-operation.h"
|
||||
+#include "camel-private.h"
|
||||
+#include "camel-stream-vfs.h"
|
||||
+
|
||||
+static CamelSeekableStreamClass *parent_class = NULL;
|
||||
+
|
||||
+/* Returns the class for a CamelStreamVFS */
|
||||
+#define CSVFS_CLASS(so) CAMEL_STREAM_VFS_CLASS (CAMEL_OBJECT_GET_CLASS(so))
|
||||
+
|
||||
+static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n);
|
||||
+static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n);
|
||||
+/* static int stream_flush (CamelStream *stream); */
|
||||
+static int stream_close (CamelStream *stream);
|
||||
+static off_t stream_seek (CamelSeekableStream *stream, off_t offset,
|
||||
+ CamelStreamSeekPolicy policy);
|
||||
+
|
||||
+static void
|
||||
+camel_stream_vfs_class_init (CamelStreamVFSClass *camel_stream_vfs_class)
|
||||
+{
|
||||
+ CamelSeekableStreamClass *camel_seekable_stream_class =
|
||||
+ CAMEL_SEEKABLE_STREAM_CLASS (camel_stream_vfs_class);
|
||||
+ CamelStreamClass *camel_stream_class =
|
||||
+ CAMEL_STREAM_CLASS (camel_stream_vfs_class);
|
||||
+
|
||||
+ parent_class = CAMEL_SEEKABLE_STREAM_CLASS (camel_type_get_global_classfuncs (camel_seekable_stream_get_type ()));
|
||||
+
|
||||
+ /* virtual method overload */
|
||||
+ camel_stream_class->read = stream_read;
|
||||
+ camel_stream_class->write = stream_write;
|
||||
+/* camel_stream_class->flush = stream_flush; */
|
||||
+ camel_stream_class->close = stream_close;
|
||||
+
|
||||
+ camel_seekable_stream_class->seek = stream_seek;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+camel_stream_vfs_init (gpointer object, gpointer klass)
|
||||
+{
|
||||
+ CamelStreamVFS *stream = CAMEL_STREAM_VFS (object);
|
||||
+
|
||||
+ stream->handle = (gpointer) -1;
|
||||
+ ((CamelSeekableStream *)stream)->bound_end = CAMEL_STREAM_UNBOUND;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+camel_stream_vfs_finalize (CamelObject *object)
|
||||
+{
|
||||
+ CamelStreamVFS *stream_vfs = CAMEL_STREAM_VFS (object);
|
||||
+
|
||||
+ if (stream_vfs->handle != -1)
|
||||
+ close (stream_vfs->handle);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+CamelType
|
||||
+camel_stream_vfs_get_type (void)
|
||||
+{
|
||||
+ static CamelType camel_stream_vfs_type = CAMEL_INVALID_TYPE;
|
||||
+
|
||||
+ if (camel_stream_vfs_type == CAMEL_INVALID_TYPE) {
|
||||
+ camel_stream_vfs_type = camel_type_register (camel_seekable_stream_get_type (), "CamelStreamVFS",
|
||||
+ sizeof (CamelStreamVFS),
|
||||
+ sizeof (CamelStreamVFSClass),
|
||||
+ (CamelObjectClassInitFunc) camel_stream_vfs_class_init,
|
||||
+ NULL,
|
||||
+ (CamelObjectInitFunc) camel_stream_vfs_init,
|
||||
+ (CamelObjectFinalizeFunc) camel_stream_vfs_finalize);
|
||||
+ }
|
||||
+
|
||||
+ return camel_stream_vfs_type;
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * camel_stream_vfs_new_with_handle:
|
||||
+ * @handle: a GnomeVFS handle
|
||||
+ *
|
||||
+ * Creates a new fs stream using the given GnomeVFS handle @handle as the
|
||||
+ * backing store. When the stream is destroyed, the file descriptor
|
||||
+ * will be closed.
|
||||
+ *
|
||||
+ * Returns a new #CamelStreamVFS
|
||||
+ **/
|
||||
+CamelStream *
|
||||
+camel_stream_vfs_new_with_handle (GnomeVFSHandle *handle)
|
||||
+{
|
||||
+ CamelStreamVFS *stream_vfs;
|
||||
+ off_t offset;
|
||||
+ GnomeVFSResult result;
|
||||
+
|
||||
+ if (!handle)
|
||||
+ return NULL;
|
||||
+
|
||||
+ stream_vfs = CAMEL_STREAM_VFS (camel_object_new (camel_stream_vfs_get_type ()));
|
||||
+ stream_vfs->handle = handle;
|
||||
+ gnome_vfs_seek (handle, GNOME_VFS_SEEK_CURRENT, 0);
|
||||
+ offset = 0;
|
||||
+ CAMEL_SEEKABLE_STREAM (stream_vfs)->position = offset;
|
||||
+
|
||||
+ return CAMEL_STREAM (stream_vfs);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * camel_stream_vfs_new_with_uri:
|
||||
+ * @name: a file uri
|
||||
+ * @flags: flags as in open(2)
|
||||
+ * @mode: a file mode
|
||||
+ *
|
||||
+ * Creates a new #CamelStreamVFS corresponding to the named file, flags,
|
||||
+ * and mode.
|
||||
+ *
|
||||
+ * Returns the new stream, or %NULL on error.
|
||||
+ **/
|
||||
+CamelStream *
|
||||
+camel_stream_vfs_new_with_uri (const char *name, int flags, mode_t mode)
|
||||
+{
|
||||
+ GnomeVFSResult result;
|
||||
+ GnomeVFSHandle *handle;
|
||||
+ int vfs_flag = 0;
|
||||
+
|
||||
+ if (flags & O_WRONLY)
|
||||
+ vfs_flag = vfs_flag | GNOME_VFS_OPEN_WRITE;
|
||||
+ if (flags & O_RDONLY)
|
||||
+ vfs_flag = vfs_flag | GNOME_VFS_OPEN_READ;
|
||||
+ if (flags & O_RDWR)
|
||||
+ vfs_flag = vfs_flag | GNOME_VFS_OPEN_READ |GNOME_VFS_OPEN_WRITE;
|
||||
+
|
||||
+ if (flags & O_CREAT)
|
||||
+ result = gnome_vfs_create (&handle, name, vfs_flag, flags & O_TRUNC, mode);
|
||||
+ else
|
||||
+ result = gnome_vfs_open (&handle, name, vfs_flag);
|
||||
+
|
||||
+ if (result != GNOME_VFS_OK) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ return camel_stream_vfs_new_with_handle (handle);
|
||||
+}
|
||||
+
|
||||
+static ssize_t
|
||||
+stream_read (CamelStream *stream, char *buffer, size_t n)
|
||||
+{
|
||||
+ CamelStreamVFS *stream_vfs = CAMEL_STREAM_VFS (stream);
|
||||
+ CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
|
||||
+ ssize_t nread = 0;
|
||||
+ GnomeVFSResult result;
|
||||
+
|
||||
+ if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
|
||||
+ n = MIN (seekable->bound_end - seekable->position, n);
|
||||
+
|
||||
+ result = gnome_vfs_read (stream_vfs->handle, buffer, n, &nread);
|
||||
+
|
||||
+ if (nread > 0 && result == GNOME_VFS_OK)
|
||||
+ seekable->position += nread;
|
||||
+ else if (nread == 0)
|
||||
+ stream->eos = TRUE;
|
||||
+
|
||||
+ return nread;
|
||||
+}
|
||||
+
|
||||
+static ssize_t
|
||||
+stream_write (CamelStream *stream, const char *buffer, size_t n)
|
||||
+{
|
||||
+ CamelStreamVFS *stream_vfs = CAMEL_STREAM_VFS (stream);
|
||||
+ CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
|
||||
+ ssize_t nwritten = 0;
|
||||
+ GnomeVFSResult result;
|
||||
+
|
||||
+ if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
|
||||
+ n = MIN (seekable->bound_end - seekable->position, n);
|
||||
+
|
||||
+ result = gnome_vfs_write (stream_vfs->handle, buffer, n, &nwritten);
|
||||
+
|
||||
+ if (nwritten > 0 && result == GNOME_VFS_OK)
|
||||
+ seekable->position += nwritten;
|
||||
+
|
||||
+ return nwritten;
|
||||
+}
|
||||
+
|
||||
+/* static int */
|
||||
+/* stream_flush (CamelStream *stream) */
|
||||
+/* { */
|
||||
+/* return fsync(((CamelStreamVFS *)stream)->handle); */
|
||||
+/* } */
|
||||
+
|
||||
+static int
|
||||
+stream_close (CamelStream *stream)
|
||||
+{
|
||||
+ GnomeVFSResult result;
|
||||
+
|
||||
+ result = gnome_vfs_close(((CamelStreamVFS *)stream)->handle);
|
||||
+
|
||||
+ if (result != GNOME_VFS_OK)
|
||||
+ return -1;
|
||||
+
|
||||
+ ((CamelStreamVFS *)stream)->handle = NULL;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static off_t
|
||||
+stream_seek (CamelSeekableStream *stream, off_t offset, CamelStreamSeekPolicy policy)
|
||||
+{
|
||||
+ CamelStreamVFS *stream_vfs = CAMEL_STREAM_VFS (stream);
|
||||
+ off_t real = 0;
|
||||
+ GnomeVFSResult result;
|
||||
+ GnomeVFSHandle *handle = stream_vfs->handle;
|
||||
+
|
||||
+ switch (policy) {
|
||||
+ case CAMEL_STREAM_SET:
|
||||
+ real = offset;
|
||||
+ break;
|
||||
+ case CAMEL_STREAM_CUR:
|
||||
+ real = stream->position + offset;
|
||||
+ break;
|
||||
+ case CAMEL_STREAM_END:
|
||||
+ if (stream->bound_end == CAMEL_STREAM_UNBOUND) {
|
||||
+ result = gnome_vfs_seek (handle, GNOME_VFS_SEEK_END, offset);
|
||||
+ if (result != GNOME_VFS_OK)
|
||||
+ return -1;
|
||||
+ gnome_vfs_tell (handle, &real);
|
||||
+ if (real != -1) {
|
||||
+ if (real<stream->bound_start)
|
||||
+ real = stream->bound_start;
|
||||
+ stream->position = real;
|
||||
+ }
|
||||
+ return real;
|
||||
+ }
|
||||
+ real = stream->bound_end + offset;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (stream->bound_end != CAMEL_STREAM_UNBOUND)
|
||||
+ real = MIN (real, stream->bound_end);
|
||||
+ real = MAX (real, stream->bound_start);
|
||||
+
|
||||
+ result = gnome_vfs_seek (handle, GNOME_VFS_SEEK_START, real);
|
||||
+ if (result != GNOME_VFS_OK)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (real != stream->position && ((CamelStream *)stream)->eos)
|
||||
+ ((CamelStream *)stream)->eos = FALSE;
|
||||
+
|
||||
+ stream->position = real;
|
||||
+
|
||||
+ return real;
|
||||
+}
|
||||
--- /dev/null 2006-04-26 01:42:37.000000000 +0530
|
||||
+++ camel/camel-stream-vfs.h 2006-05-18 16:41:12.000000000 +0530
|
||||
@@ -0,0 +1,72 @@
|
||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
+/* camel-stream-vfs.h :stream based on unix filesystem */
|
||||
+
|
||||
+/*
|
||||
+ * Author:
|
||||
+ * Srinivasa Ragavan <sragavan@novell.com>
|
||||
+ *
|
||||
+ * Copyright 2006 Novell, Inc. (www.novell.com)
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of version 2 of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||
+ * USA
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+#ifndef CAMEL_STREAM_VFS_H
|
||||
+#define CAMEL_STREAM_VFS_H 1
|
||||
+
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+extern "C" {
|
||||
+#pragma }
|
||||
+#endif /* __cplusplus */
|
||||
+
|
||||
+/* for open flags */
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <libgnomevfs/gnome-vfs.h>
|
||||
+
|
||||
+#include <camel/camel-seekable-stream.h>
|
||||
+
|
||||
+#define CAMEL_STREAM_VFS_TYPE (camel_stream_vfs_get_type ())
|
||||
+#define CAMEL_STREAM_VFS(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_VFS_TYPE, CamelStreamVFS))
|
||||
+#define CAMEL_STREAM_VFS_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_VFS_TYPE, CamelStreamVFSClass))
|
||||
+#define CAMEL_IS_STREAM_VFS(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_VFS_TYPE))
|
||||
+
|
||||
+typedef struct _CamelStreamVFS CamelStreamVFS;
|
||||
+
|
||||
+struct _CamelStreamVFS {
|
||||
+ CamelSeekableStream parent_object;
|
||||
+
|
||||
+ GnomeVFSHandle *handle;
|
||||
+};
|
||||
+
|
||||
+typedef struct {
|
||||
+ CamelSeekableStreamClass parent_class;
|
||||
+
|
||||
+} CamelStreamVFSClass;
|
||||
+
|
||||
+/* Standard Camel function */
|
||||
+CamelType camel_stream_vfs_get_type (void);
|
||||
+
|
||||
+/* public methods */
|
||||
+CamelStream * camel_stream_vfs_new_with_uri (const char *uri, int flags, mode_t mode);
|
||||
+
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+}
|
||||
+#endif /* __cplusplus */
|
||||
+
|
||||
+#endif /* CAMEL_STREAM_VFS_H */
|
1121
crash-while-browsing-through-mails.patch
Normal file
1121
crash-while-browsing-through-mails.patch
Normal file
File diff suppressed because it is too large
Load Diff
70
datarootdir.diff
Normal file
70
datarootdir.diff
Normal file
@ -0,0 +1,70 @@
|
||||
--- addressbook/libebook/libebook.pc.in
|
||||
+++ addressbook/libebook/libebook.pc.in
|
||||
@@ -2,6 +2,7 @@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
+datarootdir=@datarootdir@
|
||||
|
||||
idldir=@idldir@
|
||||
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
|
||||
--- addressbook/libedata-book/libedata-book.pc.in
|
||||
+++ addressbook/libedata-book/libedata-book.pc.in
|
||||
@@ -2,6 +2,7 @@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
+datarootdir=@datarootdir@
|
||||
|
||||
idldir=@idldir@
|
||||
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
|
||||
--- calendar/libecal/libecal.pc.in
|
||||
+++ calendar/libecal/libecal.pc.in
|
||||
@@ -2,6 +2,7 @@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
+datarootdir=@datarootdir@
|
||||
|
||||
idldir=@idldir@
|
||||
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
|
||||
--- calendar/libedata-cal/libedata-cal.pc.in
|
||||
+++ calendar/libedata-cal/libedata-cal.pc.in
|
||||
@@ -2,6 +2,7 @@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
+datarootdir=@datarootdir@
|
||||
|
||||
idldir=@idldir@
|
||||
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
|
||||
--- evolution-data-server.pc.in
|
||||
+++ evolution-data-server.pc.in
|
||||
@@ -4,6 +4,7 @@
|
||||
includedir=@includedir@
|
||||
privlibdir=@privlibdir@
|
||||
extensiondir=@extensiondir@
|
||||
+datarootdir=@datarootdir@
|
||||
datadir=@datadir@
|
||||
privdatadir=@privdatadir@
|
||||
|
||||
--- servers/exchange/storage/libexchange-storage.pc.in
|
||||
+++ servers/exchange/storage/libexchange-storage.pc.in
|
||||
@@ -2,6 +2,7 @@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
+datarootdir=@datarootdir@
|
||||
|
||||
idldir=@idldir@
|
||||
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
|
||||
--- servers/groupwise/libegroupwise.pc.in
|
||||
+++ servers/groupwise/libegroupwise.pc.in
|
||||
@@ -2,6 +2,7 @@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
+datarootdir=@datarootdir@
|
||||
|
||||
idldir=@idldir@
|
||||
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
|
11
e-d-s-configure-break-fix.patch
Normal file
11
e-d-s-configure-break-fix.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- configure.in.orig 2006-07-04 12:02:26.528729871 +0200
|
||||
+++ configure.in 2006-07-04 13:33:54.123889885 +0200
|
||||
@@ -310,7 +310,7 @@ int main(int argc, char **argv)
|
||||
}],[
|
||||
AC_DEFINE(HAVE_LKSTRFTIME, 1, [strftime supports use of l and k])
|
||||
ac_cv_lkstrftime=yes
|
||||
-],ac_cv_lkstrftime=no,ac_cv_lkstrftime=no])
|
||||
+],ac_cv_lkstrftime=no,[ac_cv_lkstrftime=no])
|
||||
AC_MSG_RESULT($ac_cv_lkstrftime)
|
||||
|
||||
PKG_PROG_PKG_CONFIG
|
54
eds-compiler-warning.patch
Normal file
54
eds-compiler-warning.patch
Normal file
@ -0,0 +1,54 @@
|
||||
--- addressbook/backends/ldap/e-book-backend-ldap.c
|
||||
+++ addressbook/backends/ldap/e-book-backend-ldap.c
|
||||
@@ -2285,7 +2285,9 @@
|
||||
GTimeVal start, end;
|
||||
unsigned long diff;
|
||||
|
||||
- if (enable_debug)
|
||||
+ if (enable_debug) {
|
||||
printf ("contact_list_handler ...\n");
|
||||
+ g_get_current_time (&start);
|
||||
+ }
|
||||
ldap = bl->priv->ldap;
|
||||
if (!ldap) {
|
||||
@@ -2481,6 +2483,8 @@
|
||||
if (enable_debug) {
|
||||
g_get_current_time (&end);
|
||||
printf ("e_book_backend_ldap_get_contact_list invoked contact_list_handler ");
|
||||
+ diff = end.tv_sec * 1000 + end.tv_usec/1000;
|
||||
+ diff -= start.tv_sec * 1000 + start.tv_usec/1000;
|
||||
printf ("and took %ld.%03ld seconds\n", diff/1000, diff%1000);
|
||||
}
|
||||
}
|
||||
--- camel/camel-stream-vfs.c
|
||||
+++ camel/camel-stream-vfs.c
|
||||
@@ -151,7 +151,7 @@
|
||||
{
|
||||
GnomeVFSResult result;
|
||||
GnomeVFSHandle *handle;
|
||||
- int vfs_flag;
|
||||
+ int vfs_flag = 0;
|
||||
|
||||
if (flags & O_WRONLY)
|
||||
vfs_flag = vfs_flag | GNOME_VFS_OPEN_WRITE;
|
||||
--- libedataserverui/e-passwords.c
|
||||
+++ libedataserverui/e-passwords.c
|
||||
@@ -600,6 +600,7 @@
|
||||
#endif
|
||||
|
||||
#if WITH_GNOME_KEYRING
|
||||
+static void
|
||||
ep_get_password (EPassMsg *msg)
|
||||
{
|
||||
char *path, *passwd;
|
||||
--- servers/exchange/storage/exchange-account.c
|
||||
+++ servers/exchange/storage/exchange-account.c
|
||||
@@ -1846,7 +1846,7 @@
|
||||
int
|
||||
exchange_account_check_password_expiry (ExchangeAccount *account)
|
||||
{
|
||||
- E2kGlobalCatalogEntry *entry;
|
||||
+ E2kGlobalCatalogEntry *entry = NULL;
|
||||
int max_pwd_age_days = -1;
|
||||
|
||||
g_return_val_if_fail (EXCHANGE_IS_ACCOUNT (account), 0);
|
25
eds-kerb-check.diff
Normal file
25
eds-kerb-check.diff
Normal file
@ -0,0 +1,25 @@
|
||||
Index: servers/exchange/storage/exchange-account.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-account.c,v
|
||||
retrieving revision 1.30
|
||||
diff -u -p -r1.30 exchange-account.c
|
||||
--- servers/exchange/storage/exchange-account.c 6 Mar 2006 06:00:26 -0000 1.30
|
||||
+++ servers/exchange/storage/exchange-account.c 19 Apr 2006 09:26:18 -0000
|
||||
@@ -1000,7 +1000,7 @@ is_password_expired (ExchangeAccount *ac
|
||||
|
||||
result = e2k_kerberos_check_password (ac->username, domain,
|
||||
ac->password);
|
||||
- if (result != E2K_KERBEROS_OK ||
|
||||
+ if (result != E2K_KERBEROS_OK &&
|
||||
result != E2K_KERBEROS_PASSWORD_EXPIRED) {
|
||||
/* try again with nt domain */
|
||||
domain = ac->nt_domain;
|
||||
@@ -1102,7 +1102,7 @@ exchange_account_set_password (ExchangeA
|
||||
|
||||
result = e2k_kerberos_change_password (account->priv->username, domain,
|
||||
old_pass, new_pass);
|
||||
- if (result != E2K_KERBEROS_OK || result != E2K_KERBEROS_PASSWORD_TOO_WEAK) {
|
||||
+ if (result != E2K_KERBEROS_OK && result != E2K_KERBEROS_PASSWORD_TOO_WEAK) {
|
||||
/* try with nt_domain */
|
||||
domain = account->priv->nt_domain;
|
||||
if (domain)
|
64
eds-translations-updated.diff
Normal file
64
eds-translations-updated.diff
Normal file
@ -0,0 +1,64 @@
|
||||
diff -up ../../602/build-eds/usr/src/packages/BUILD/evolution-data-server-1.6.0/po/it.po po/it.po
|
||||
--- ../../602/build-eds/usr/src/packages/BUILD/evolution-data-server-1.6.0/po/it.po 2006-06-02 07:38:25.231210320 +0200
|
||||
+++ po/it.po 2006-05-31 18:31:38.000000000 +0200
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Project-Id-Version: evolution-data-server\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-05-04 06:53+0000\n"
|
||||
-"PO-Revision-Date: 2006-05-17 14:47\n"
|
||||
+"PO-Revision-Date: 2006-05-31 17:31\n"
|
||||
"Last-Translator: Novell Language <language@novell.com>\n"
|
||||
"Language-Team: Novell Language <language@novell.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -714,7 +714,7 @@ msgstr "Impossibile salvare i dati del c
|
||||
#: ../calendar/backends/file/e-cal-backend-file.c:209
|
||||
#,
|
||||
msgid "Can't save calendar data: "
|
||||
-msgstr "Can't save calendar data: "
|
||||
+msgstr "Impossibile salvare i dati del calendario:"
|
||||
|
||||
#: ../calendar/backends/groupwise/e-cal-backend-groupwise-utils.c:872
|
||||
#: ../camel/providers/groupwise/camel-groupwise-folder.c:1582
|
||||
@@ -2517,7 +2517,7 @@ msgstr "Certificato non corretto da %s:\
|
||||
#: ../camel/camel-tcp-stream-ssl.c:896
|
||||
#, c-format
|
||||
msgid "SSL Certificate check for %s:\n\n%s\n\nDo you wish to accept?"
|
||||
-msgstr "Controllo certificato SSL per %s:\n\n%s\n\nSi desidera accettare?"
|
||||
+msgstr "Controllo certificato SSL per %s:\n\n%s\nSi desidera accettare?"
|
||||
|
||||
#: ../camel/camel-tcp-stream-ssl.c:940
|
||||
#, c-format
|
||||
@@ -2642,7 +2642,7 @@ msgstr "Impossibile caricare il sommario
|
||||
|
||||
#: ../camel/providers/groupwise/camel-groupwise-folder.c:966
|
||||
msgid "Trash Folder Full. Please Empty."
|
||||
-msgstr "Trash Folder Full. Please Empty."
|
||||
+msgstr "La cartella del cestino è piena. Svuotarla."
|
||||
|
||||
# LF
|
||||
#: ../camel/providers/groupwise/camel-groupwise-folder.c:1129
|
||||
@@ -2767,7 +2767,7 @@ msgstr "Non è stata inserita la passwor
|
||||
#: ../camel/providers/groupwise/camel-groupwise-store.c:226
|
||||
#,
|
||||
msgid "Unable to authenticate to GroupWise server. "
|
||||
-msgstr "Unable to authenticate to GroupWise server. "
|
||||
+msgstr "Impossibile autenticare il server Groupwise."
|
||||
|
||||
#: ../camel/providers/groupwise/camel-groupwise-store.c:304
|
||||
msgid "Some features may not work correctly with your current server version"
|
||||
@@ -4954,13 +4954,13 @@ msgstr "Eli_mina %s"
|
||||
#: ../libedataserverui/e-passwords.c:472
|
||||
#,
|
||||
msgid "_Remember this passphrase"
|
||||
-msgstr "_Remember this passphrase"
|
||||
+msgstr "_Memorizza questa passphrase"
|
||||
|
||||
# LF
|
||||
#: ../libedataserverui/e-passwords.c:473
|
||||
#,
|
||||
msgid "_Remember this passphrase for the remainder of this session"
|
||||
-msgstr "_Remember this passphrase for the remainder of this session"
|
||||
+msgstr "_Memorizza la passphrase per l'intera sessione"
|
||||
|
||||
# LF
|
||||
#: ../libedataserverui/e-passwords.c:476
|
20805
eds-updated-translations.diff
Normal file
20805
eds-updated-translations.diff
Normal file
File diff suppressed because it is too large
Load Diff
110
eds-warnings.patch
Normal file
110
eds-warnings.patch
Normal file
@ -0,0 +1,110 @@
|
||||
Index: calendar/backends/contacts/e-cal-backend-contacts.c
|
||||
================================================================================
|
||||
--- calendar/backends/contacts/e-cal-backend-contacts.c
|
||||
+++ calendar/backends/contacts/e-cal-backend-contacts.c
|
||||
@@ -384,7 +384,7 @@
|
||||
static struct icaltimetype
|
||||
cdate_to_icaltime (EContactDate *cdate)
|
||||
{
|
||||
- struct icaltimetype ret;
|
||||
+ struct icaltimetype ret = icaltime_null_time();
|
||||
|
||||
/*FIXME: this is a really _ugly_ (temporary) hack
|
||||
* since several functions are still depending on the epoch,
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
|
||||
@@ -44,6 +44,7 @@
|
||||
* Items management
|
||||
*/
|
||||
EGwItem *e_gw_item_new_from_cal_component (const char *container, ECalBackendGroupwise *cbgw, ECalComponent *comp);
|
||||
+EGwItem *e_gw_item_new_for_delegate_from_cal (ECalBackendGroupwise *cbgw, ECalComponent *comp);
|
||||
ECalComponent *e_gw_item_to_cal_component (EGwItem *item, ECalBackendGroupwise *cbgw);
|
||||
void e_gw_item_set_changes (EGwItem *item, EGwItem *cached_item);
|
||||
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c
|
||||
@@ -1866,7 +1866,7 @@
|
||||
CamelGroupwiseStore *gw_store= CAMEL_GROUPWISE_STORE(folder->parent_store);
|
||||
CamelGroupwiseStorePrivate *priv = gw_store->priv;
|
||||
CamelOfflineStore *offline = (CamelOfflineStore *) folder->parent_store;
|
||||
- EGwConnectionStatus status;
|
||||
+ EGwConnectionStatus status = E_GW_CONNECTION_STATUS_OK;
|
||||
EGwConnection *cnc;
|
||||
EGwItem *item;
|
||||
char *id;
|
||||
--- camel/providers/imap/camel-imap-store.c
|
||||
+++ camel/providers/imap/camel-imap-store.c
|
||||
@@ -693,6 +693,9 @@
|
||||
}
|
||||
|
||||
#ifdef HAVE_SSL
|
||||
+ /* as soon as we send a STARTTLS command, all hope is lost of a clean QUIT if problems arise */
|
||||
+ clean_quit = FALSE;
|
||||
+
|
||||
if (!(store->capabilities & IMAP_CAPABILITY_STARTTLS)) {
|
||||
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
|
||||
_("Failed to connect to IMAP server %s in secure mode: %s"),
|
||||
@@ -701,9 +704,6 @@
|
||||
goto exception;
|
||||
}
|
||||
|
||||
- /* as soon as we send a STARTTLS command, all hope is lost of a clean QUIT if problems arise */
|
||||
- clean_quit = FALSE;
|
||||
-
|
||||
response = camel_imap_command (store, NULL, ex, "STARTTLS");
|
||||
if (!response) {
|
||||
camel_object_unref (store->istream);
|
||||
--- camel/providers/pop3/camel-pop3-store.c
|
||||
+++ camel/providers/pop3/camel-pop3-store.c
|
||||
@@ -215,6 +215,9 @@
|
||||
}
|
||||
|
||||
#ifdef HAVE_SSL
|
||||
+ /* as soon as we send a STLS command, all hope is lost of a clean QUIT if problems arise */
|
||||
+ clean_quit = FALSE;
|
||||
+
|
||||
if (!(store->engine->capa & CAMEL_POP3_CAP_STLS)) {
|
||||
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
|
||||
_("Failed to connect to POP server %s in secure mode: %s"),
|
||||
@@ -222,9 +225,6 @@
|
||||
goto stls_exception;
|
||||
}
|
||||
|
||||
- /* as soon as we send a STLS command, all hope is lost of a clean QUIT if problems arise */
|
||||
- clean_quit = FALSE;
|
||||
-
|
||||
pc = camel_pop3_engine_command_new (store->engine, 0, NULL, NULL, "STLS\r\n");
|
||||
while (camel_pop3_engine_iterate (store->engine, NULL) > 0)
|
||||
;
|
||||
--- libdb/dbm/dbm.c
|
||||
+++ libdb/dbm/dbm.c
|
||||
@@ -128,7 +128,8 @@
|
||||
|
||||
if (__cur_db == NULL) {
|
||||
__db_no_open();
|
||||
- item.dptr = 0;
|
||||
+ item.dptr = NULL;
|
||||
+ item.dsize = 0;
|
||||
return (item);
|
||||
}
|
||||
return (dbm_fetch(__cur_db, key));
|
||||
@@ -141,7 +142,8 @@
|
||||
|
||||
if (__cur_db == NULL) {
|
||||
__db_no_open();
|
||||
- item.dptr = 0;
|
||||
+ item.dptr = NULL;
|
||||
+ item.dsize = 0;
|
||||
return (item);
|
||||
}
|
||||
return (dbm_firstkey(__cur_db));
|
||||
@@ -157,7 +159,8 @@
|
||||
|
||||
if (__cur_db == NULL) {
|
||||
__db_no_open();
|
||||
- item.dptr = 0;
|
||||
+ item.dptr = NULL;
|
||||
+ item.dsize = 0;
|
||||
return (item);
|
||||
}
|
||||
return (dbm_nextkey(__cur_db));
|
65
email-appears-twice.patch
Normal file
65
email-appears-twice.patch
Normal file
@ -0,0 +1,65 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.135
|
||||
diff -u -p -r1.135 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 6 Jun 2006 20:07:47 -0000 1.135
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 9 Jun 2006 09:41:02 -0000
|
||||
@@ -374,9 +374,17 @@ groupwise_msg_set_recipient_list (CamelM
|
||||
}
|
||||
|
||||
if (org) {
|
||||
+ if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
|
||||
+ int i;
|
||||
+ for (i = 0; org->display_name[i] != '<' &&
|
||||
+ org->display_name[i] != '\0';
|
||||
+ i++);
|
||||
+
|
||||
+ org->display_name[i] = '\0';
|
||||
+ }
|
||||
if (org->display_name && org->email)
|
||||
- ha=camel_header_address_new_name(org->display_name,org->email);
|
||||
- else
|
||||
+ ha=camel_header_address_new_name(org->display_name, org->email);
|
||||
+ else if (org->display_name)
|
||||
ha=camel_header_address_new_group(org->display_name);
|
||||
|
||||
subs_email=camel_header_address_list_encode(ha);
|
||||
@@ -1225,9 +1233,17 @@ gw_update_cache (CamelFolder *folder, GL
|
||||
org = e_gw_item_get_organizer (item);
|
||||
if (org) {
|
||||
GString *str;
|
||||
+ int i;
|
||||
str = g_string_new ("");
|
||||
- if (org->display_name && org->display_name[0])
|
||||
+ if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
|
||||
+ for (i = 0; org->display_name[i] != '<' &&
|
||||
+ org->display_name[i] != '\0';
|
||||
+ i++);
|
||||
+
|
||||
+ org->display_name[i] = '\0';
|
||||
str = g_string_append (str, org->display_name);
|
||||
+ str = g_string_append (str, " ");
|
||||
+ }
|
||||
if (org->email && org->email[0]) {
|
||||
g_string_append (str, "<");
|
||||
str = g_string_append (str, org->email);
|
||||
@@ -1428,9 +1444,17 @@ gw_update_summary ( CamelFolder *folder,
|
||||
org = e_gw_item_get_organizer (item);
|
||||
if (org) {
|
||||
GString *str;
|
||||
+ int i;
|
||||
str = g_string_new ("");
|
||||
- if (org->display_name && org->display_name[0])
|
||||
+ if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
|
||||
+ for (i = 0; org->display_name[i] != '<' &&
|
||||
+ org->display_name[i] != '\0';
|
||||
+ i++);
|
||||
+
|
||||
+ org->display_name[i] = '\0';
|
||||
str = g_string_append (str, org->display_name);
|
||||
+ str = g_string_append (str, " ");
|
||||
+ }
|
||||
if (org->email && org->email[0]) {
|
||||
g_string_append (str, "<");
|
||||
str = g_string_append (str, org->email);
|
16
empty-trash-notify.patch
Normal file
16
empty-trash-notify.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.132
|
||||
diff -u -p -r1.132 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 28 Apr 2006 13:21:23 -0000 1.132
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 3 May 2006 05:21:39 -0000
|
||||
@@ -963,6 +963,8 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
if (status ==E_GW_CONNECTION_STATUS_OTHER) {
|
||||
g_warning ("Trash full....Empty Trash!!!!\n");
|
||||
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Trash Folder Full. Please Empty."));
|
||||
+ goto end1;
|
||||
/*groupwise_expunge (folder, ex);*/
|
||||
} else
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
|
3
evolution-data-server-1.8.2.tar.bz2
Normal file
3
evolution-data-server-1.8.2.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0b02f78306b791233e2aa160c523484602133862a5668138f11db1881b81a84d
|
||||
size 6972055
|
11
evolution-data-server-configure.patch
Normal file
11
evolution-data-server-configure.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- configure.in
|
||||
+++ configure.in
|
||||
@@ -295,6 +295,8 @@
|
||||
],ac_cv_lkstrftime=no,ac_cv_lkstrftime=no])
|
||||
AC_MSG_RESULT($ac_cv_lkstrftime)
|
||||
|
||||
+PKG_PROG_PKG_CONFIG
|
||||
+
|
||||
dnl ********************************************************************************
|
||||
dnl security extension support (SSL and S/MIME)
|
||||
dnl
|
51
evolution-data-server-decl.patch
Normal file
51
evolution-data-server-decl.patch
Normal file
@ -0,0 +1,51 @@
|
||||
--- docs/reference/addressbook/libebook/libebook.types
|
||||
+++ docs/reference/addressbook/libebook/libebook.types
|
||||
@@ -1,4 +1,10 @@
|
||||
#include <glib-object.h>
|
||||
+#include <libebook/e-book.h>
|
||||
+#include <libebook/e-book-view.h>
|
||||
+#include <libebook/e-book-listener.h>
|
||||
+#include <libebook/e-book-view-listener.h>
|
||||
+#include <libebook/e-contact.h>
|
||||
+#include <libebook/e-vcard.h>
|
||||
e_book_listener_get_type
|
||||
e_book_view_listener_get_type
|
||||
e_book_view_get_type
|
||||
--- docs/reference/calendar/libecal/libecal.types
|
||||
+++ docs/reference/calendar/libecal/libecal.types
|
||||
@@ -1,4 +1,9 @@
|
||||
#include <glib-object.h>
|
||||
+#include <libecal/e-cal.h>
|
||||
+#include <libecal/e-cal-component.h>
|
||||
+#include <libecal/e-cal-listener.h>
|
||||
+#include <libecal/e-cal-view.h>
|
||||
+#include <libecal/e-cal-view-listener.h>
|
||||
e_cal_get_type
|
||||
e_cal_view_get_type
|
||||
e_cal_listener_get_type
|
||||
--- docs/reference/calendar/libedata-cal/libedata-cal.types
|
||||
+++ docs/reference/calendar/libedata-cal/libedata-cal.types
|
||||
@@ -1,4 +1,12 @@
|
||||
#include <glib-object.h>
|
||||
+#include <libedata-cal/e-cal-backend-cache.h>
|
||||
+#include <libedata-cal/e-cal-backend-factory.h>
|
||||
+#include <libedata-cal/e-cal-backend-sexp.h>
|
||||
+#include <libedata-cal/e-cal-backend-sync.h>
|
||||
+#include <libedata-cal/e-cal-backend.h>
|
||||
+#include <libedata-cal/e-data-cal-factory.h>
|
||||
+#include <libedata-cal/e-data-cal-view.h>
|
||||
+#include <libedata-cal/e-data-cal.h>
|
||||
e_cal_backend_cache_get_type
|
||||
e_cal_backend_factory_get_type
|
||||
e_cal_backend_sexp_get_type
|
||||
--- libedataserverui/e-name-selector-dialog.c
|
||||
+++ libedataserverui/e-name-selector-dialog.c
|
||||
@@ -30,6 +30,8 @@
|
||||
#include <gtk/gtklabel.h>
|
||||
#include <gtk/gtkscrolledwindow.h>
|
||||
#include <gtk/gtkstock.h>
|
||||
+#include <gtk/gtkcellrenderertext.h>
|
||||
+#include <glib/gstrfuncs.h>
|
||||
#include <glib/gi18n-lib.h>
|
||||
#include <libedataserverui/e-source-option-menu.h>
|
||||
#include <libedataserverui/e-destination-store.h>
|
21
evolution-data-server-retval.patch
Normal file
21
evolution-data-server-retval.patch
Normal file
@ -0,0 +1,21 @@
|
||||
--- addressbook/backends/file/e-book-backend-file.c
|
||||
+++ addressbook/backends/file/e-book-backend-file.c
|
||||
@@ -523,7 +523,7 @@
|
||||
EDataBookView *book_view = data;
|
||||
FileBackendSearchClosure *closure = get_closure (book_view);
|
||||
if (!closure)
|
||||
- return;
|
||||
+ return NULL;
|
||||
EBookBackendFile *bf = closure->bf;
|
||||
const char *query;
|
||||
DB *db;
|
||||
--- libedataserverui/e-passwords.c
|
||||
+++ libedataserverui/e-passwords.c
|
||||
@@ -270,6 +270,7 @@
|
||||
}
|
||||
|
||||
#if WITH_GNOME_KEYRING
|
||||
+static void
|
||||
ep_forget_passwords(EPassMsg *msg)
|
||||
{
|
||||
GnomeKeyringAttributeList *attributes;
|
815
evolution-data-server.changes
Normal file
815
evolution-data-server.changes
Normal file
@ -0,0 +1,815 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Dec 29 17:43:36 CET 2006 - sbrabec@suse.cz
|
||||
|
||||
- Use better libexecdir path.
|
||||
- File list cleanup.
|
||||
- Splitted evolution-data-server-doc from
|
||||
evolution-data-server-devel.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Dec 29 12:18:27 GMT 2006 - james@usr-local-bin.org
|
||||
|
||||
- Re-enable custom configure options.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 13 17:01:40 CST 2006 - maw@suse.de
|
||||
|
||||
- Move to /usr
|
||||
- Do some specfile cleanup.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 21 16:20:49 CET 2006 - sbrabec@suse.cz
|
||||
|
||||
- Do not explicitly require mDNSResponder-lib blocking avahi compat
|
||||
package.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 20 12:54:33 CET 2006 - vvaradhan@novell.com
|
||||
|
||||
- update to version 1.8.2
|
||||
- translation updates
|
||||
- Bug fixes: (bgo)
|
||||
330157, 369259, 369168, 350576,350885, 358010, 350880, 347811,
|
||||
312348, 328836, 365000, 353924
|
||||
- Bug fixes: (bnc)
|
||||
268412, 208395, 208318, 207960
|
||||
- Removed upstreamed bgo-369168-buffer-overrun.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 6 12:28:46 CEST 2006 - kharish@novell.com
|
||||
|
||||
- Fix for (bnc) Bug 217142. Patch submitted by Hans Petter Jansson.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 27 17:27:44 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
Bug 208519 - evolution groupwise crashes on start
|
||||
- Commented "bnc-164323-random-mark-unread.patch" (patch46)
|
||||
as it is a "to-be" reverted patch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 18 11:49:40 CEST 2006 - schwab@suse.de
|
||||
|
||||
- Fix missing declaration.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Oct 2 23:17:53 CEST 2006 - jhargadon@suse.de
|
||||
|
||||
- update to version 1.8.1
|
||||
- translation updates
|
||||
- Bug fixes:
|
||||
350907, 350617, 347811, 357666, 351330, 352596, 352872, 356051
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Sep 30 07:49:31 CEST 2006 - aj@suse.de
|
||||
|
||||
- Do not require libgnomeui-devel for building.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 12 11:42:47 CEST 2006 - ro@suse.de
|
||||
|
||||
- fix two cases of missing return values (retval.patch)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 4 19:56:41 CEST 2006 - aj@suse.de
|
||||
|
||||
- update to 1.8.0:
|
||||
* updated translation
|
||||
* bugfixes
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Aug 19 01:34:30 CEST 2006 - jhargadon@suse.de
|
||||
|
||||
- update to version 1.7.91
|
||||
- Add filters to Groupwise SOAP calls so that each component
|
||||
fetches items of its own type and none other
|
||||
- Memory fixes in Addressbook
|
||||
- Updated Translations
|
||||
- Support for GW Reminder Notes
|
||||
- Split cache for less memory, better performance
|
||||
- Support for security-classifications in GW send options
|
||||
- Support for default alarms in GW
|
||||
- Support for Gadu Gadu IM in Contact Entries
|
||||
- Memory reduction and Performance improvements in Contacts
|
||||
- Removed patches that were incorporated upstream.
|
||||
|
||||
------------------------------------------------------------------
|
||||
Thu Jul 20 05:52:31 CEST 2006 - kharish@novell.com
|
||||
|
||||
- Patch to add alarms to GW meetings by default based on customer
|
||||
preference. Fixes bnc 167330.
|
||||
|
||||
------------------------------------------------------------------
|
||||
Wed Jul 19 04:06:42 CEST 2006 - kharish@novell.com
|
||||
|
||||
- Patch to correctly handle calendar attachment filenames that do
|
||||
not require special characters handling. They were being parsed
|
||||
incorrectly and ignored by clients.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jul 5 10:20:25 CEST 2006 - aj@suse.de
|
||||
|
||||
- Handle datarootdir in pkgconfig files.
|
||||
|
||||
------------------------------------------------------------------
|
||||
Wed Jul 5 08:06:11 CEST 2006 - psankar@novell.com
|
||||
|
||||
- Enables forwarding of mails
|
||||
Fixes bnc 167517
|
||||
|
||||
------------------------------------------------------------------
|
||||
Tue Jul 4 13:36:29 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes a build break - Added e-d-s-configure-break-fix.patch
|
||||
|
||||
------------------------------------------------------------------
|
||||
Mon Jun 26 11:19:11 CEST 2006 - kharish@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
187529 - Sequence cache population requests for better
|
||||
performance.
|
||||
|
||||
------------------------------------------------------------------
|
||||
Fri Jun 16 08:16:15 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
183819 - Evolution crashed while closing in offline mode
|
||||
182310 - Evolution crashed when going offline
|
||||
183816 - Evolution crashed when swtiched from online to offline...
|
||||
|
||||
------------------------------------------------------------------
|
||||
Thu Jun 15 13:39:38 CEST 2006 - psankar@novell.com
|
||||
|
||||
- Added the fix to display the email address
|
||||
only once for the gw accounts
|
||||
Fixes bnc #168013, #179622
|
||||
|
||||
------------------------------------------------------------------
|
||||
Fri Jun 9 14:51:30 CEST 2006 - sdevashish@novell.com
|
||||
|
||||
- Added bnc-170052-eds-crash.patch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 8 17:34:59 CEST 2006 - fejj@suse.de
|
||||
|
||||
- Added bnc-179350.patch which fixes a critical deadlock bug in the
|
||||
GroupWise provider.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 8 11:02:30 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Updated some translation fixes
|
||||
- Committed patch for bug 181906, which solves a exchange crash.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 2 12:48:15 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Updated German Translations.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 31 23:23:11 CEST 2006 - fejj@suse.de
|
||||
|
||||
- Added bnc-176277-2.patch which fixes a deadlock condition
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 29 13:23:30 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
174255 - Honour desktop proxy setting.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 29 07:53:12 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Added reworked patch for bug 176615 as per fejj's comment.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu May 25 09:22:49 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
176615 - Added a new camel stream vfs for saving to remote shares.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 23 05:58:46 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Updated translations (Srini)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 22 19:53:30 CEST 2006 - fejj@suse.de
|
||||
|
||||
- Added bnc-177394.patch to fix a crasher when an IMAP server replies
|
||||
that the size of a literal is negative.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 19 17:43:26 CEST 2006 - fejj@suse.de
|
||||
|
||||
- Added imap-locking.patch which fixes bug #171502 and bug #176277
|
||||
which are both deadlock conditions in the imap code.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu May 18 11:23:56 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- gw-trash-fix.diff: Show trash folder contents to user. (Sankar)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 16 17:15:24 CEST 2006 - fejj@suse.de
|
||||
|
||||
- Added bnc-173454.patch: Fixes double-base64 encoding of non-7bit MIME
|
||||
part data.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu May 11 12:36:53 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
169997 - Fixes a issue where the groupwise server crashes due to infinite loop.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 5 06:13:11 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Added empty-trash-notify.patch: Fixes missing trash folder.
|
||||
- Fixes (bnc)
|
||||
169034 - Fixed the failure to download exchange public folder.
|
||||
- Removed gw-force-use-imap.patch as it was decided to default to soap.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 2 21:40:52 CEST 2006 - fejj@suse.de
|
||||
|
||||
- Added bnc-167638.patch: Fixes long shutdown times due to the imap/gw providers trying to sync data at exit time.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 1 23:24:29 CEST 2006 - fejj@suse.de
|
||||
|
||||
- Added bgo-315976-INBOX-not-shown-when-override-namespace.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 25 17:15:39 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
169228 - Retract GNOME Keyring Integration from the build (Srini)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 24 19:05:15 CEST 2006 - fejj@suse.de
|
||||
|
||||
- bgo-321797: Fix SSL/TLS options to not be able to fallback to
|
||||
cleartext connections on failure to connect via encrypted channels.
|
||||
|
||||
--------------------------------------------------------------------
|
||||
Mon Apr 24 11:21:38 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- bulk-delete.patch: Uses new SOAP API for removing bulk items (Sankar)
|
||||
- imap-perf.patch: Get onloy the used headers and not all (Sankar)
|
||||
- nameselectorlist-keychange.diff: Change the keybinding for list (Srini)
|
||||
- imap4-removal.diff: Remove IMAP4 from the build (harish)
|
||||
|
||||
--------------------------------------------------------------------
|
||||
Fri Apr 21 12:44:25 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Fixes (bgo)
|
||||
310433 - Should not allow renaming standard folders. - Sushma
|
||||
329371 - Use name in email format doesnot work.
|
||||
- Fixes (bnc)
|
||||
164323 - Updated the previous patch for randomly marking messages unread.
|
||||
|
||||
--------------------------------------------------------------------
|
||||
Fri Apr 21 07:31:29 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
159934 - Fix for eds CPU high usage (Devashish)
|
||||
165714 - Send item id while delegating multiple events. (Harish)
|
||||
- eds-kerb-check.diff - Ensure checks for expiry take effect while
|
||||
trying for nt domain. (Harish)
|
||||
|
||||
--------------------------------------------------------------------
|
||||
Tue Apr 20 11:44:24 CEST 2006 - psankar@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
167566 - Crash on disable account - Sankar
|
||||
167640 - Syntax error missing space - Partha
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 18 10:44:24 CEST 2006 - sragavan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
1643232 - Randomly marking read messages as unread - Sankar
|
||||
- Fix to make groupwise use IMAP as default for mails (Harish)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Apr 16 20:35:22 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
152070 evolution-data-server-1.6 crash - Devashish
|
||||
160915 Evolution crashed when clicked on 'Goto' date in
|
||||
calendar view - Chenthill
|
||||
163982 While saving appointment system hanged with 126
|
||||
error popups - Chenthill
|
||||
164140 EDS Crashed when starting 'evolution --offline' - Devashish
|
||||
164367 GW: Attachment to appointments/meetings throws 'Unknown Error'
|
||||
- Chenthill
|
||||
164676 evolution-data-server stuck in tight loop - Devashish
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 7 08:41:09 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
163664 E-D-S crashes if a contact has invalid UTF-8 - Federico
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 5 14:15:31 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
161290 EDS crashed while forwarding a mail - Devashish
|
||||
162005 evolution-data-server crashed when deleting a recurring
|
||||
appointment in my groupwise calendar - Chenthill
|
||||
- Disable beagle-meta-summary patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 4 10:27:29 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Updated bnc-158107-no-notification-canceled-mtgs.patch - Fixes
|
||||
sending user specified comments during cancellation of meetings.
|
||||
- Fixes (bnc)
|
||||
161000 Junk mail features in evolution cannot be shut off. - Sankar
|
||||
158617 Evolution crashed after few minutes after marking few
|
||||
mails junk - Sankar - (single patch)
|
||||
- GW Proxy optimizations - Do not do GetQM while refreshing on proxy.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 3 15:14:45 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
160889 Evolution shows summary folders in tree
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 28 11:40:48 CEST 2006 - ro@suse.de
|
||||
|
||||
- replace mDNSResponder by mDNSResponder-devel in BuildReq
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 27 18:57:05 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
160147 Can't delete calendar accounts once they are created
|
||||
158107 No notification of cancelled meetings
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 27 17:00:10 CEST 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bgo)
|
||||
334416 Evolution crashed while traversing mails
|
||||
(crash-while-browsing-through-mails.patch)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 23 14:54:10 CET 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bgo)
|
||||
334807 EDS Crasher
|
||||
323275 EDS Crash @ Startup Of Evolution
|
||||
334000 Unexpected dialog while creating appointment/meeting
|
||||
272307 groupwise: mail headers are all screwed up with mailing lists
|
||||
- Fixes (bnc)
|
||||
152070 evolution-data-server-1.6 crash (collection of random crashes)
|
||||
158112 Send/Receive Dialog can take several minutes to go away
|
||||
- GW specific SOAP mailer improvements
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 20 14:34:06 CET 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
138047 Evolution: Message Inconsistency with Passphrase/Password
|
||||
153522 Evolution doesn't update message status if two clients
|
||||
are running against the same account
|
||||
152062 Evolution won't show an attachment
|
||||
158093 Evolution: Groupwise "Sent Items" folder should have a
|
||||
"To:" column instead of a "From:" column
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 15 22:02:09 CET 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
157323 Messages deleted from Groupwise folder remain in Evo.
|
||||
156559 Evolution won't show me 827 messages
|
||||
153522 Evolution doesn't update message status if two clients
|
||||
are running against the same account
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 13 16:04:51 CET 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes (bnc)
|
||||
137357 Configur groupwise account 'You must be working in
|
||||
online ...' message displayed
|
||||
152355 Mails in mailbox was not displayed unless .evolution
|
||||
folder contents where deleted
|
||||
156584 Evolution won't shut down
|
||||
156823 Newly configured groupwise accounts don't work
|
||||
115042 Evolution crashes when accessing my cabinet folder
|
||||
- Feature - Meta summary support for beagle
|
||||
- Keyring support enabled
|
||||
- Update to version 1.6.0 - Fixes (bgo)
|
||||
329244 Crash when editing To/CC/BCC fields of a mail
|
||||
331870 Crashes on addition of two or more email addresses of
|
||||
same person in name-selector-dialog
|
||||
327592 [PATCH] Evolution crashes on exit
|
||||
332726 Crash when saving event with recurrence rule
|
||||
273060 Recu Meeting: updates accepted for one instance gets deleted
|
||||
331633 Evolution crashes upon starting up on Solaris
|
||||
329669 Recurring events go crazy
|
||||
260346 Evolution is not storing the email ids with the respective
|
||||
fields for exchange
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 6 14:22:50 CET 2006 - vvaradhan@novell.com
|
||||
|
||||
- Fixes #155362 - No symbol table information in the generated
|
||||
debuginfo packages.
|
||||
Remove '-g0' from CFLAGS in evolution-data-server.spec
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 27 16:25:41 CET 2006 - vvaradhan@novell.com
|
||||
|
||||
- Update to version 1.5.92
|
||||
- Fixes: (in bgo)
|
||||
327413: Crash when evolution shuts down
|
||||
329306: Crash when entering password multiple times
|
||||
331680: Crashes on opening New message compose window
|
||||
323384: Email ids from bugzilla mails gets added with a "|"
|
||||
260889: Evolution is crashing when clicked clear botton in
|
||||
search bar in contacts view
|
||||
331127: weather calendar crashes e-d-s, use g_free instead
|
||||
of g_object_unref
|
||||
326428: EDS crashed after changing 'Anniversary' field in
|
||||
contacts UI
|
||||
301116: libedataserverui needs to specify the translation
|
||||
domain explicitly
|
||||
|
||||
- Fixes: (in bnc)
|
||||
150427: evo 2.6 - hang on calendar
|
||||
- Add a patch to integrate with gnome-keyring
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Feb 12 15:20:12 CET 2006 - aj@suse.de
|
||||
|
||||
- Reduce BuildRequires.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 10 12:28:03 CET 2006 - vvaradhan@novell.com
|
||||
|
||||
- Update to version 1.5.90
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 31 12:25:52 CET 2006 - ro@suse.de
|
||||
|
||||
- reduced BuildRequires
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 25 21:31:25 CET 2006 - mls@suse.de
|
||||
|
||||
- converted neededforbuild to BuildRequires
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 12 13:05:09 CET 2005 - sbrabec@suse.cz
|
||||
|
||||
- Fixed devel dependencies for older products.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 6 16:35:09 CET 2005 - sbrabec@suse.cz
|
||||
|
||||
- Degrade to version 1.4.1.1.
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=323106
|
||||
- Fixed devel dependencies.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 1 18:11:03 CET 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.4.2.1
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 2 22:45:48 CET 2005 - dmueller@suse.de
|
||||
|
||||
- don't build as root
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 13 17:47:02 CEST 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.4.1
|
||||
- Fix more warnings
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 26 01:33:03 CEST 2005 - ro@suse.de
|
||||
|
||||
- added LDAP_DEPRECATED to CFLAGS
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 9 16:23:59 CEST 2005 - aj@suse.de
|
||||
|
||||
- Change last patch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 7 15:12:38 CEST 2005 - schwab@suse.de
|
||||
|
||||
- Fix missing declarations.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 5 11:09:50 CEST 2005 - rodrigo@suse.de
|
||||
|
||||
- Update to version 1.4.0
|
||||
- Removed upstreamed patches
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 24 22:34:01 CEST 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.3.8
|
||||
- Fix brokeness inlibical
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Aug 13 07:46:16 CEST 2005 - aj@suse.de
|
||||
|
||||
- Add lzo and lzo-devel to nfb.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 12 01:13:36 CEST 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.3.7
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 1 18:32:44 CEST 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.3.6.1
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 29 15:13:19 CEST 2005 - sbrabec@suse.cz
|
||||
|
||||
- Require mozilla-nss (#98002).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jul 27 00:59:35 CEST 2005 - ro@suse.de
|
||||
|
||||
- fix typo in specfile
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 25 23:43:28 CEST 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.3.5
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 14 14:09:11 CEST 2005 - schwab@suse.de
|
||||
|
||||
- Fix missing declarations again.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 1 21:06:07 CEST 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.3.3
|
||||
- Remove upstreamed patches
|
||||
- Fix compiler warnings
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jun 21 15:04:09 CEST 2005 - schwab@suse.de
|
||||
|
||||
- Fix missing declarations.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 10 18:17:57 CEST 2005 - sbrabec@suse.cz
|
||||
|
||||
- Build with system nspr and nss libraries.
|
||||
- Build with Kerberos 5 support.
|
||||
- Build documentation.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 10 15:24:33 CEST 2005 - sbrabec@suse.cz
|
||||
|
||||
- Build with mozilla-nss.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 1 17:54:58 CEST 2005 - sbrabec@suse.cz
|
||||
|
||||
- Fixed devel requirements.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu May 19 01:52:18 CEST 2005 - ro@suse.de
|
||||
|
||||
- fix build with current pkgconfig
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 29 15:09:42 CEST 2005 - sbrabec@suse.cz
|
||||
|
||||
- Yet another mail crasher fix (#66996).
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=273945
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 14 15:19:20 CEST 2005 - sbrabec@suse.cz
|
||||
|
||||
- Fixed serious GCC 4 warnings.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Mar 19 19:08:26 CET 2005 - clahey@suse.de
|
||||
|
||||
- Fixes 72916.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Mar 18 17:10:37 CET 2005 - gekker@suse.de
|
||||
|
||||
- Fix x-evolution-header (x73401).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 16 13:52:04 CET 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.2.1
|
||||
- Add 64bit-warn.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 8 23:04:46 CET 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.2.0 (GNOME 2.10)
|
||||
- remove upstreamed dest.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 2 19:50:38 CET 2005 - gekker@suse.de
|
||||
|
||||
- add dest.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 2 17:19:19 CET 2005 - gekker@suse.de
|
||||
|
||||
- update to version 1.1.6
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Feb 27 23:44:53 CET 2005 - ro@suse.de
|
||||
|
||||
- fix build on lib64
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 25 21:53:46 CET 2005 - gekker@suse.de
|
||||
|
||||
- fix libexecdir, so that e-d-s will actually get launched
|
||||
- enable ssl support now that camel has been moved to e-d-s
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 9 18:27:21 CET 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.1.5
|
||||
- Remove upstreamed patch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Feb 5 20:55:37 CET 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.1.4.2
|
||||
- Remove upsteamed patches, including security fix mentioned below.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 24 16:06:58 CET 2005 - sbrabec@suse.cz
|
||||
|
||||
- Fixed integer overflow (arbitrary code execution with elevated
|
||||
privileges) in lock helper (CAN-2005-0102, #50116).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 24 15:46:44 CET 2005 - meissner@suse.de
|
||||
|
||||
- Fixed some gcc 4 warnings/error that show code problems.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 14 22:13:56 CET 2005 - clahey@suse.de
|
||||
|
||||
- Update to version 1.1.3.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 6 21:49:52 CET 2005 - gekker@suse.de
|
||||
|
||||
- Update to version 1.1.2
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 7 17:32:04 CET 2004 - gekker@suse.de
|
||||
|
||||
- Update to version 1.0.3 (Ximian 70057)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 30 15:48:00 CET 2004 - ro@suse.de
|
||||
|
||||
- re-diffed libdb.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 29 20:03:32 CET 2004 - gekker@suse.de
|
||||
|
||||
- Update to version 1.0.2
|
||||
- Removed patches included in this update
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 12 18:05:45 CET 2004 - sbrabec@suse.cz
|
||||
|
||||
- Fixed libdb on x86_64 (broken local contacts in Evolution, #46845).
|
||||
http://bugzilla.ximian.com/show_bug.cgi?id=67600
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 2 17:09:46 CET 2004 - ro@suse.de
|
||||
|
||||
- locale rename: no -> nb
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 30 21:54:35 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Add patch to fix bug 66368 in bugzilla.ximian.com
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 30 00:03:07 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Add patch to fix bug 66230 in bugzilla.ximian.com
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 24 19:51:40 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Updated to version 1.0.1
|
||||
- Removed evolution-data-server-0.0.99.dif which is in upstream source
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 17 02:17:00 CEST 2004 - ro@suse.de
|
||||
|
||||
- readd evolution-data-server-0.0.99.dif to fix parallel build
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 13 22:00:49 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Updated to version 1.0.0
|
||||
- Removed evolution-data-server-0.0.99.dif which was not changelogged,
|
||||
and seems to not actually change anything
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Sep 4 12:41:37 CEST 2004 - coolo@suse.de
|
||||
|
||||
- use %jobs (OOo is waiting on it)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 27 21:53:34 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Update to version 0.0.99
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 18 20:07:44 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Fix LDAP support and remove unused configure options
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 13 22:43:52 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Update to version 0.0.98
|
||||
- Add dependencies to the evolution-data-server-devel package
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 5 21:15:31 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Add build deps for gnutls libs from libsoup
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 3 17:54:52 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Don't run any autotools when building with no patches
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 3 17:23:50 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Patch is in tarball for gnome_segv2 now
|
||||
- Updated to version 0.0.97
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 29 18:27:39 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Add patch from CVS to detect path to gnome_segv2 better
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jul 28 20:25:32 CEST 2004 - dobey@suse.de
|
||||
|
||||
- Updated to version 0.0.96
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 13 20:31:41 CEST 2004 - clahey@suse.de
|
||||
|
||||
- Updated to version 0.0.95.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jun 21 19:13:23 CEST 2004 - clahey@suse.de
|
||||
|
||||
- Updated to version 0.0.94.1.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 4 03:52:11 CEST 2004 - mibarra@suse.de
|
||||
|
||||
- Updated to version 0.0.94.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 24 16:17:53 CEST 2004 - ro@suse.de
|
||||
|
||||
- fix lib64 issue
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat May 22 03:49:56 CEST 2004 - mibarra@suse.de
|
||||
|
||||
- Updated to 0.0.93.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 18 18:54:04 CEST 2004 - clahey@suse.de
|
||||
|
||||
- Don't install to /opt/gnome/libexec
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 18 04:32:40 CEST 2004 - clahey@suse.de
|
||||
|
||||
- Initial import of evolution-data-server.
|
||||
|
721
evolution-data-server.spec
Normal file
721
evolution-data-server.spec
Normal file
@ -0,0 +1,721 @@
|
||||
#
|
||||
# spec file for package evolution-data-server (Version 1.8.2)
|
||||
#
|
||||
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself.
|
||||
#
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
# norootforbuild
|
||||
|
||||
Name: evolution-data-server
|
||||
BuildRequires: gcc-c++ gnome-common gnome-keyring-devel gtk-doc intltool krb5-devel libglade2-devel libgnome-devel libidl-devel libsoup-devel mDNSResponder-devel mozilla-nss-devel openldap2 openldap2-devel perl-XML-Parser python-devel sgml-skel
|
||||
License: GNU General Public License (GPL)
|
||||
Group: Development/Libraries/GNOME
|
||||
Autoreqprov: on
|
||||
Summary: Evolution Data Server
|
||||
Version: 1.8.2
|
||||
Release: 14
|
||||
Source: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/1.8/%{name}-%{version}.tar.bz2
|
||||
#Patch3: evolution-data-server-gcc4.patch
|
||||
Patch5: evolution-data-server-configure.patch
|
||||
Patch6: nss-nspr.patch
|
||||
Patch7: evolution-data-server-decl.patch
|
||||
Patch8: eds-warnings.patch
|
||||
Patch9: evolution-fix-function-declarations.patch
|
||||
# FIXME: After upgrade, use patch# - 100
|
||||
#Patch108: eds-1.5.5-warnings.patch
|
||||
#Patch10: keyring-integration.patch
|
||||
Patch11: backend-timeout-fix.patch
|
||||
Patch12: bnc-156823-newly-configured-gw-dont-work.patch
|
||||
Patch13: bnc-156584-evo-wont-shutdown.patch
|
||||
Patch14: beagle-meta-summary.patch
|
||||
Patch15: bnc-137357-newly-configured-gw-dont-work.patch
|
||||
Patch16: bnc-152355-mails-doesnt-show-gw.patch
|
||||
Patch17: bnc-157323-messages-deleted-from-gw-remain-in-evo.patch
|
||||
Patch18: bnc-153522-evolution-doesnt-update-message-status.patch
|
||||
Patch19: bnc-158093-sent-folder-have-to-not-from.patch
|
||||
Patch20: bnc-138047-password-passphrase-msg-inconsistency.patch
|
||||
Patch21: bnc-153522-evo-doesnt-update-msg-status-workaround.patch
|
||||
Patch22: bnc-152062-evolution-wont-show-attachment.patch
|
||||
Patch23: bgo-272307-evolution-clobbers-mail-address.patch
|
||||
Patch24: bgo-331146-eds-crash-at-startup.patch
|
||||
Patch25: bgo-334807-eds-crasher.patch
|
||||
Patch26: bgo-323275-eds-crash-at-startup.patch
|
||||
Patch27: bgo-334000-unexpected-dialog-creating-appt.patch
|
||||
Patch28: patch-for-random-eds-addr-crashes.patch
|
||||
Patch29: camel-partha-gw-fixes.patch
|
||||
Patch30: bnc-158112-send-receive-dlg-takes-time.patch
|
||||
Patch31: crash-while-browsing-through-mails.patch
|
||||
Patch32: bnc-158107-no-notification-canceled-mtgs.patch
|
||||
Patch33: bnc-160147-cant-delete-created-calendar-accounts.patch
|
||||
Patch34: bnc-161000-junk-mail-dont-work.patch
|
||||
Patch35: gw-proxy-issues.patch
|
||||
Patch36: bnc-161290-eds-crashed-forwarding-mail.patch
|
||||
Patch37: bnc-162005-e-d-s-crash-deleting-recur-appt.patch
|
||||
Patch38: bnc-163664-eds-crashes-on-invalid-utf8-contacts.patch
|
||||
Patch39: bnc-160915-evolution-crash-clickng-goto-cal-view.patch
|
||||
Patch40: bnc-164367-gw-attachments-appts-throw-error.patch
|
||||
Patch41: bnc-163982-system-hang-with-126-error-popups.patch
|
||||
Patch42: bnc-164676-eds-stuck-tight-loop.patch
|
||||
Patch43: bnc-152070-eds-crash.patch
|
||||
Patch44: bnc-164140-eds-crash-evolution--offline.patch
|
||||
#Patch45: gw-force-use-imap.patch
|
||||
Patch46: bnc-164323-random-mark-unread.patch
|
||||
Patch47: 167566-camel-groupwise-summary.patch
|
||||
Patch48: 167640-camel-groupwise-store.patch
|
||||
Patch49: bnc-159934-eds-CPU-spikes.patch
|
||||
Patch50: eds-kerb-check.diff
|
||||
Patch51: bnc-165714-eds-delegate-multiple-events.diff
|
||||
Patch52: bgo-310433-eds-deny-rename-stdfolders.diff
|
||||
Patch53: bgo-329371-eds-fix-full-username-email-format.patch
|
||||
Patch54: bnc-164323-random-mark-unread-updated.patch
|
||||
Patch55: bulk-delete.patch
|
||||
Patch56: imap-perf.patch
|
||||
Patch57: nameselectorlist-keychange.diff
|
||||
Patch58: imap4-removal.diff
|
||||
Patch59: bgo-321797.patch
|
||||
Patch60: bgo-315976-INBOX-not-shown-when-override-namespace.patch
|
||||
Patch61: bnc-167638.patch
|
||||
Patch62: empty-trash-notify.patch
|
||||
Patch63: bnc-169034-eds-pub-folder-download.diff
|
||||
Patch64: bnc-169997-eds-infinite-loop.diff
|
||||
Patch65: bnc-173454.patch
|
||||
Patch66: gw-trash-fix.diff
|
||||
Patch67: imap-locking.patch
|
||||
Patch68: bnc-177394.patch
|
||||
Patch69: eds-updated-translations.diff
|
||||
Patch70: camel-vfs-stream.diff
|
||||
Patch71: bnc-174255-honour-system-proxy-settings.patch
|
||||
Patch72: bnc-176277-2.patch
|
||||
Patch73: german-translation-eds.diff
|
||||
Patch74: bnc-181906-eds-ex-crash.diff
|
||||
Patch75: eds-translations-updated.diff
|
||||
Patch76: bnc-179350.patch
|
||||
Patch77: bnc-170052-eds-crash.patch
|
||||
Patch78: email-appears-twice.patch
|
||||
Patch79: bnc-183819-evo-crashed-closing-offline.patch
|
||||
Patch80: bnc-187529-calendar-cache-population.patch
|
||||
Patch81: e-d-s-configure-break-fix.patch
|
||||
Patch82: fwd-mail.patch
|
||||
Patch83: datarootdir.diff
|
||||
Patch84: cal-attachment-filename-handling.patch
|
||||
Patch85: bnc-167330-default-GW-alarms.patch
|
||||
Patch86: eds-compiler-warning.patch
|
||||
Patch87: evolution-data-server-retval.patch
|
||||
Patch88: implicit-declaration.diff
|
||||
Patch89: bgo-369168-buffer-overrun.patch
|
||||
# Change patch below if we move away from /opt/gnome
|
||||
# It avoids a build dependency on libgnomeui to speed up bootstrap
|
||||
Patch99: libgnomeui-dep.patch
|
||||
Url: http://www.gnome.org
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
Requires: libsoup >= 2.2.6 mozilla-nss
|
||||
|
||||
%description
|
||||
Evolution Data Server provides a central location for your address book
|
||||
and calendar in the GNOME Desktop.
|
||||
|
||||
|
||||
|
||||
%package devel
|
||||
Summary: Evolution Data Server Development Files
|
||||
Group: Development/Libraries/GNOME
|
||||
Requires: evolution-data-server = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: libsoup-devel libbonobo-devel libgnome-devel gnome-vfs2-devel libxml2-devel orbit2-devel openldap2-devel libglade2-devel
|
||||
Requires: gtk2-devel gconf2-devel glib2-devel gnome-keyring-devel
|
||||
%if %suse_version >= 930
|
||||
Requires: krb5-devel
|
||||
%endif
|
||||
%if %suse_version >= 1000
|
||||
Requires: libcom_err
|
||||
%endif
|
||||
|
||||
%description devel
|
||||
The Evolution Data Server development files provide the necessary
|
||||
libraries, headers, and other files for developing applications which
|
||||
use the Evolution Data Server for storing contact and calendar
|
||||
information.
|
||||
|
||||
|
||||
|
||||
%package doc
|
||||
Summary: Additional Package Documentation.
|
||||
Group: Development/Libraries/GNOME
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description doc
|
||||
Evolution Data Server provides a central location for your address book
|
||||
and calendar in the GNOME Desktop.
|
||||
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
#%patch3
|
||||
%patch5
|
||||
#%patch6
|
||||
%patch7
|
||||
#%patch108
|
||||
%patch8
|
||||
%patch9
|
||||
#%patch10
|
||||
#%patch11
|
||||
#%patch12
|
||||
#%patch13
|
||||
#%patch14
|
||||
#%patch15
|
||||
#%patch16
|
||||
#%patch17
|
||||
#%patch18
|
||||
#%patch19
|
||||
#%patch20
|
||||
#%patch21
|
||||
#%patch22
|
||||
#%patch23
|
||||
#%patch24
|
||||
#%patch25
|
||||
#%patch26
|
||||
#%patch27
|
||||
#%patch28 -p0
|
||||
#%patch29
|
||||
#%patch30
|
||||
#%patch31
|
||||
#%patch32
|
||||
#%patch33
|
||||
#%patch34
|
||||
#%patch35
|
||||
#%patch36
|
||||
#%patch37
|
||||
#%patch38
|
||||
%patch39
|
||||
%patch40
|
||||
%patch41
|
||||
#%patch42
|
||||
%patch43
|
||||
%patch44
|
||||
#%patch45
|
||||
#%patch46
|
||||
#%patch47
|
||||
#%patch48
|
||||
#%patch49
|
||||
#%patch50
|
||||
#%patch51
|
||||
#%patch52
|
||||
#%patch53
|
||||
#%patch54
|
||||
#%patch55
|
||||
#%patch56
|
||||
#%patch57
|
||||
#%patch58
|
||||
#%patch59
|
||||
#%patch60
|
||||
%patch61
|
||||
#%patch62
|
||||
#%patch63
|
||||
#%patch64
|
||||
#%patch65
|
||||
#%patch66
|
||||
#%patch67
|
||||
#%patch68
|
||||
#%patch69
|
||||
#%patch70
|
||||
%patch71
|
||||
#%patch72
|
||||
#%patch73
|
||||
#%patch74
|
||||
#%patch75
|
||||
#%patch77
|
||||
#%patch78
|
||||
%patch79
|
||||
#%patch80
|
||||
#%patch81
|
||||
#%patch82
|
||||
#%patch83
|
||||
%patch86
|
||||
%patch87
|
||||
%patch88
|
||||
#%patch89
|
||||
%patch99 -p1
|
||||
|
||||
%build
|
||||
libtoolize --force --copy
|
||||
intltoolize --force --copy
|
||||
aclocal
|
||||
autoconf
|
||||
automake
|
||||
autoheader
|
||||
# needed for evolution-data-server-1.8.2:
|
||||
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
|
||||
%configure\
|
||||
--libexecdir=%{_prefix}/lib/evolution-data-server\
|
||||
--with-openldap\
|
||||
--with-krb5=/usr\
|
||||
--enable-gnome-keyring\
|
||||
--enable-gtk-doc\
|
||||
--enable-ssl
|
||||
make %{?jobs:-j%jobs}
|
||||
|
||||
%install
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
%find_lang evolution-data-server-1.8
|
||||
rm $RPM_BUILD_ROOT%{_libdir}/*/*/*.*a
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files -f evolution-data-server-1.8.lang
|
||||
%defattr(-,root,root)
|
||||
%doc README COPYING ChangeLog NEWS TODO AUTHORS INSTALL
|
||||
%{_datadir}/evolution-data-server-1.8
|
||||
%{_datadir}/idl/evolution-data-server-1.2
|
||||
%{_datadir}/pixmaps/evolution-data-server-1.8
|
||||
%{_libdir}/*.so.*
|
||||
%{_libdir}/bonobo/servers/*
|
||||
%{_libdir}/evolution-data-server-1.2
|
||||
%{_prefix}/lib/evolution-data-server
|
||||
|
||||
%files devel
|
||||
%defattr(-, root, root)
|
||||
%{_includedir}/evolution-data-server-1.8
|
||||
%{_libdir}/*.so
|
||||
%{_libdir}/*.*a
|
||||
%{_libdir}/pkgconfig/*.pc
|
||||
|
||||
%files doc
|
||||
%defattr(-, root, root)
|
||||
%{_datadir}/gtk-doc/html/*
|
||||
|
||||
%changelog -n evolution-data-server
|
||||
* Fri Dec 29 2006 - sbrabec@suse.cz
|
||||
- Use better libexecdir path.
|
||||
- File list cleanup.
|
||||
- Splitted evolution-data-server-doc from
|
||||
evolution-data-server-devel.
|
||||
* Fri Dec 29 2006 - james@usr-local-bin.org
|
||||
- Re-enable custom configure options.
|
||||
* Wed Dec 13 2006 - maw@suse.de
|
||||
- Move to /usr
|
||||
- Do some specfile cleanup.
|
||||
* Tue Nov 21 2006 - sbrabec@suse.cz
|
||||
- Do not explicitly require mDNSResponder-lib blocking avahi compat
|
||||
package.
|
||||
* Mon Nov 20 2006 - vvaradhan@novell.com
|
||||
- update to version 1.8.2
|
||||
- translation updates
|
||||
- Bug fixes: (bgo)
|
||||
330157, 369259, 369168, 350576,350885, 358010, 350880, 347811,
|
||||
312348, 328836, 365000, 353924
|
||||
- Bug fixes: (bnc)
|
||||
268412, 208395, 208318, 207960
|
||||
- Removed upstreamed bgo-369168-buffer-overrun.patch
|
||||
* Mon Nov 06 2006 - kharish@novell.com
|
||||
- Fix for (bnc) Bug 217142. Patch submitted by Hans Petter Jansson.
|
||||
* Fri Oct 27 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
Bug 208519 - evolution groupwise crashes on start
|
||||
- Commented "bnc-164323-random-mark-unread.patch" (patch46)
|
||||
as it is a "to-be" reverted patch.
|
||||
* Wed Oct 18 2006 - schwab@suse.de
|
||||
- Fix missing declaration.
|
||||
* Mon Oct 02 2006 - jhargadon@suse.de
|
||||
- update to version 1.8.1
|
||||
- translation updates
|
||||
- Bug fixes:
|
||||
350907, 350617, 347811, 357666, 351330, 352596, 352872, 356051
|
||||
* Sat Sep 30 2006 - aj@suse.de
|
||||
- Do not require libgnomeui-devel for building.
|
||||
* Tue Sep 12 2006 - ro@suse.de
|
||||
- fix two cases of missing return values (retval.patch)
|
||||
* Mon Sep 04 2006 - aj@suse.de
|
||||
- update to 1.8.0:
|
||||
* updated translation
|
||||
* bugfixes
|
||||
* Sat Aug 19 2006 - jhargadon@suse.de
|
||||
- update to version 1.7.91
|
||||
- Add filters to Groupwise SOAP calls so that each component
|
||||
fetches items of its own type and none other
|
||||
- Memory fixes in Addressbook
|
||||
- Updated Translations
|
||||
- Support for GW Reminder Notes
|
||||
- Split cache for less memory, better performance
|
||||
- Support for security-classifications in GW send options
|
||||
- Support for default alarms in GW
|
||||
- Support for Gadu Gadu IM in Contact Entries
|
||||
- Memory reduction and Performance improvements in Contacts
|
||||
- Removed patches that were incorporated upstream.
|
||||
* Thu Jul 20 2006 - kharish@novell.com
|
||||
- Patch to add alarms to GW meetings by default based on customer
|
||||
preference. Fixes bnc 167330.
|
||||
* Wed Jul 19 2006 - kharish@novell.com
|
||||
- Patch to correctly handle calendar attachment filenames that do
|
||||
not require special characters handling. They were being parsed
|
||||
incorrectly and ignored by clients.
|
||||
* Wed Jul 05 2006 - aj@suse.de
|
||||
- Handle datarootdir in pkgconfig files.
|
||||
* Wed Jul 05 2006 - psankar@novell.com
|
||||
- Enables forwarding of mails
|
||||
Fixes bnc 167517
|
||||
* Tue Jul 04 2006 - vvaradhan@novell.com
|
||||
- Fixes a build break - Added e-d-s-configure-break-fix.patch
|
||||
* Mon Jun 26 2006 - kharish@novell.com
|
||||
- Fixes (bnc)
|
||||
187529 - Sequence cache population requests for better
|
||||
performance.
|
||||
* Fri Jun 16 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
183819 - Evolution crashed while closing in offline mode
|
||||
182310 - Evolution crashed when going offline
|
||||
183816 - Evolution crashed when swtiched from online to offline...
|
||||
* Thu Jun 15 2006 - psankar@novell.com
|
||||
- Added the fix to display the email address
|
||||
only once for the gw accounts
|
||||
Fixes bnc #168013, #179622
|
||||
* Fri Jun 09 2006 - sdevashish@novell.com
|
||||
- Added bnc-170052-eds-crash.patch.
|
||||
* Thu Jun 08 2006 - fejj@suse.de
|
||||
- Added bnc-179350.patch which fixes a critical deadlock bug in the
|
||||
GroupWise provider.
|
||||
* Thu Jun 08 2006 - sragavan@novell.com
|
||||
- Updated some translation fixes
|
||||
- Committed patch for bug 181906, which solves a exchange crash.
|
||||
* Fri Jun 02 2006 - sragavan@novell.com
|
||||
- Updated German Translations.
|
||||
* Wed May 31 2006 - fejj@suse.de
|
||||
- Added bnc-176277-2.patch which fixes a deadlock condition
|
||||
* Mon May 29 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
174255 - Honour desktop proxy setting.
|
||||
* Mon May 29 2006 - sragavan@novell.com
|
||||
- Added reworked patch for bug 176615 as per fejj's comment.
|
||||
* Thu May 25 2006 - sragavan@novell.com
|
||||
- Fixes (bnc)
|
||||
176615 - Added a new camel stream vfs for saving to remote shares.
|
||||
* Tue May 23 2006 - sragavan@novell.com
|
||||
- Updated translations (Srini)
|
||||
* Mon May 22 2006 - fejj@suse.de
|
||||
- Added bnc-177394.patch to fix a crasher when an IMAP server replies
|
||||
that the size of a literal is negative.
|
||||
* Fri May 19 2006 - fejj@suse.de
|
||||
- Added imap-locking.patch which fixes bug #171502 and bug #176277
|
||||
which are both deadlock conditions in the imap code.
|
||||
* Thu May 18 2006 - sragavan@novell.com
|
||||
- gw-trash-fix.diff: Show trash folder contents to user. (Sankar)
|
||||
* Tue May 16 2006 - fejj@suse.de
|
||||
- Added bnc-173454.patch: Fixes double-base64 encoding of non-7bit MIME
|
||||
part data.
|
||||
* Thu May 11 2006 - sragavan@novell.com
|
||||
- Fixes (bnc)
|
||||
169997 - Fixes a issue where the groupwise server crashes due to infinite loop.
|
||||
* Fri May 05 2006 - sragavan@novell.com
|
||||
- Added empty-trash-notify.patch: Fixes missing trash folder.
|
||||
- Fixes (bnc)
|
||||
169034 - Fixed the failure to download exchange public folder.
|
||||
- Removed gw-force-use-imap.patch as it was decided to default to soap.
|
||||
* Tue May 02 2006 - fejj@suse.de
|
||||
- Added bnc-167638.patch: Fixes long shutdown times due to the imap/gw providers trying to sync data at exit time.
|
||||
* Mon May 01 2006 - fejj@suse.de
|
||||
- Added bgo-315976-INBOX-not-shown-when-override-namespace.patch
|
||||
* Tue Apr 25 2006 - sragavan@novell.com
|
||||
- Fixes (bnc)
|
||||
169228 - Retract GNOME Keyring Integration from the build (Srini)
|
||||
* Mon Apr 24 2006 - fejj@suse.de
|
||||
- bgo-321797: Fix SSL/TLS options to not be able to fallback to
|
||||
cleartext connections on failure to connect via encrypted channels.
|
||||
* Mon Apr 24 2006 - sragavan@novell.com
|
||||
- bulk-delete.patch: Uses new SOAP API for removing bulk items (Sankar)
|
||||
- imap-perf.patch: Get onloy the used headers and not all (Sankar)
|
||||
- nameselectorlist-keychange.diff: Change the keybinding for list (Srini)
|
||||
- imap4-removal.diff: Remove IMAP4 from the build (harish)
|
||||
* Fri Apr 21 2006 - sragavan@novell.com
|
||||
- Fixes (bgo)
|
||||
310433 - Should not allow renaming standard folders. - Sushma
|
||||
329371 - Use name in email format doesnot work.
|
||||
- Fixes (bnc)
|
||||
164323 - Updated the previous patch for randomly marking messages unread.
|
||||
* Fri Apr 21 2006 - sragavan@novell.com
|
||||
- Fixes (bnc)
|
||||
159934 - Fix for eds CPU high usage (Devashish)
|
||||
165714 - Send item id while delegating multiple events. (Harish)
|
||||
- eds-kerb-check.diff - Ensure checks for expiry take effect while
|
||||
trying for nt domain. (Harish)
|
||||
* Thu Apr 20 2006 - psankar@novell.com
|
||||
- Fixes (bnc)
|
||||
167566 - Crash on disable account - Sankar
|
||||
167640 - Syntax error missing space - Partha
|
||||
* Tue Apr 18 2006 - sragavan@novell.com
|
||||
- Fixes (bnc)
|
||||
1643232 - Randomly marking read messages as unread - Sankar
|
||||
- Fix to make groupwise use IMAP as default for mails (Harish)
|
||||
* Sun Apr 16 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
152070 evolution-data-server-1.6 crash - Devashish
|
||||
160915 Evolution crashed when clicked on 'Goto' date in
|
||||
calendar view - Chenthill
|
||||
163982 While saving appointment system hanged with 126
|
||||
error popups - Chenthill
|
||||
164140 EDS Crashed when starting 'evolution --offline' - Devashish
|
||||
164367 GW: Attachment to appointments/meetings throws 'Unknown Error'
|
||||
- Chenthill
|
||||
164676 evolution-data-server stuck in tight loop - Devashish
|
||||
* Fri Apr 07 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
163664 E-D-S crashes if a contact has invalid UTF-8 - Federico
|
||||
* Wed Apr 05 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
161290 EDS crashed while forwarding a mail - Devashish
|
||||
162005 evolution-data-server crashed when deleting a recurring
|
||||
appointment in my groupwise calendar - Chenthill
|
||||
- Disable beagle-meta-summary patch
|
||||
* Tue Apr 04 2006 - vvaradhan@novell.com
|
||||
- Updated bnc-158107-no-notification-canceled-mtgs.patch - Fixes
|
||||
sending user specified comments during cancellation of meetings.
|
||||
- Fixes (bnc)
|
||||
161000 Junk mail features in evolution cannot be shut off. - Sankar
|
||||
158617 Evolution crashed after few minutes after marking few
|
||||
mails junk - Sankar - (single patch)
|
||||
- GW Proxy optimizations - Do not do GetQM while refreshing on proxy.
|
||||
* Mon Apr 03 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
160889 Evolution shows summary folders in tree
|
||||
* Tue Mar 28 2006 - ro@suse.de
|
||||
- replace mDNSResponder by mDNSResponder-devel in BuildReq
|
||||
* Mon Mar 27 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
160147 Can't delete calendar accounts once they are created
|
||||
158107 No notification of cancelled meetings
|
||||
* Mon Mar 27 2006 - vvaradhan@novell.com
|
||||
- Fixes (bgo)
|
||||
334416 Evolution crashed while traversing mails
|
||||
(crash-while-browsing-through-mails.patch)
|
||||
* Thu Mar 23 2006 - vvaradhan@novell.com
|
||||
- Fixes (bgo)
|
||||
334807 EDS Crasher
|
||||
323275 EDS Crash @ Startup Of Evolution
|
||||
334000 Unexpected dialog while creating appointment/meeting
|
||||
272307 groupwise: mail headers are all screwed up with mailing lists
|
||||
- Fixes (bnc)
|
||||
152070 evolution-data-server-1.6 crash (collection of random crashes)
|
||||
158112 Send/Receive Dialog can take several minutes to go away
|
||||
- GW specific SOAP mailer improvements
|
||||
* Mon Mar 20 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
138047 Evolution: Message Inconsistency with Passphrase/Password
|
||||
153522 Evolution doesn't update message status if two clients
|
||||
are running against the same account
|
||||
152062 Evolution won't show an attachment
|
||||
158093 Evolution: Groupwise "Sent Items" folder should have a
|
||||
"To:" column instead of a "From:" column
|
||||
* Wed Mar 15 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
157323 Messages deleted from Groupwise folder remain in Evo.
|
||||
156559 Evolution won't show me 827 messages
|
||||
153522 Evolution doesn't update message status if two clients
|
||||
are running against the same account
|
||||
* Mon Mar 13 2006 - vvaradhan@novell.com
|
||||
- Fixes (bnc)
|
||||
137357 Configur groupwise account 'You must be working in
|
||||
online ...' message displayed
|
||||
152355 Mails in mailbox was not displayed unless .evolution
|
||||
folder contents where deleted
|
||||
156584 Evolution won't shut down
|
||||
156823 Newly configured groupwise accounts don't work
|
||||
115042 Evolution crashes when accessing my cabinet folder
|
||||
- Feature - Meta summary support for beagle
|
||||
- Keyring support enabled
|
||||
- Update to version 1.6.0 - Fixes (bgo)
|
||||
329244 Crash when editing To/CC/BCC fields of a mail
|
||||
331870 Crashes on addition of two or more email addresses of
|
||||
same person in name-selector-dialog
|
||||
327592 [PATCH] Evolution crashes on exit
|
||||
332726 Crash when saving event with recurrence rule
|
||||
273060 Recu Meeting: updates accepted for one instance gets deleted
|
||||
331633 Evolution crashes upon starting up on Solaris
|
||||
329669 Recurring events go crazy
|
||||
260346 Evolution is not storing the email ids with the respective
|
||||
fields for exchange
|
||||
* Mon Mar 06 2006 - vvaradhan@novell.com
|
||||
- Fixes #155362 - No symbol table information in the generated
|
||||
debuginfo packages.
|
||||
Remove '-g0' from CFLAGS in evolution-data-server.spec
|
||||
* Mon Feb 27 2006 - vvaradhan@novell.com
|
||||
- Update to version 1.5.92
|
||||
- Fixes: (in bgo)
|
||||
327413: Crash when evolution shuts down
|
||||
329306: Crash when entering password multiple times
|
||||
331680: Crashes on opening New message compose window
|
||||
323384: Email ids from bugzilla mails gets added with a "|"
|
||||
260889: Evolution is crashing when clicked clear botton in
|
||||
search bar in contacts view
|
||||
331127: weather calendar crashes e-d-s, use g_free instead
|
||||
of g_object_unref
|
||||
326428: EDS crashed after changing 'Anniversary' field in
|
||||
contacts UI
|
||||
301116: libedataserverui needs to specify the translation
|
||||
domain explicitly
|
||||
- Fixes: (in bnc)
|
||||
150427: evo 2.6 - hang on calendar
|
||||
- Add a patch to integrate with gnome-keyring
|
||||
* Sun Feb 12 2006 - aj@suse.de
|
||||
- Reduce BuildRequires.
|
||||
* Fri Feb 10 2006 - vvaradhan@novell.com
|
||||
- Update to version 1.5.90
|
||||
* Tue Jan 31 2006 - ro@suse.de
|
||||
- reduced BuildRequires
|
||||
* Wed Jan 25 2006 - mls@suse.de
|
||||
- converted neededforbuild to BuildRequires
|
||||
* Mon Dec 12 2005 - sbrabec@suse.cz
|
||||
- Fixed devel dependencies for older products.
|
||||
* Tue Dec 06 2005 - sbrabec@suse.cz
|
||||
- Degrade to version 1.4.1.1.
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=323106
|
||||
- Fixed devel dependencies.
|
||||
* Thu Dec 01 2005 - gekker@suse.de
|
||||
- Update to version 1.4.2.1
|
||||
* Wed Nov 02 2005 - dmueller@suse.de
|
||||
- don't build as root
|
||||
* Thu Oct 13 2005 - gekker@suse.de
|
||||
- Update to version 1.4.1
|
||||
- Fix more warnings
|
||||
* Mon Sep 26 2005 - ro@suse.de
|
||||
- added LDAP_DEPRECATED to CFLAGS
|
||||
* Fri Sep 09 2005 - aj@suse.de
|
||||
- Change last patch.
|
||||
* Wed Sep 07 2005 - schwab@suse.de
|
||||
- Fix missing declarations.
|
||||
* Mon Sep 05 2005 - rodrigo@suse.de
|
||||
- Update to version 1.4.0
|
||||
- Removed upstreamed patches
|
||||
* Wed Aug 24 2005 - gekker@suse.de
|
||||
- Update to version 1.3.8
|
||||
- Fix brokeness inlibical
|
||||
* Sat Aug 13 2005 - aj@suse.de
|
||||
- Add lzo and lzo-devel to nfb.
|
||||
* Fri Aug 12 2005 - gekker@suse.de
|
||||
- Update to version 1.3.7
|
||||
* Mon Aug 01 2005 - gekker@suse.de
|
||||
- Update to version 1.3.6.1
|
||||
* Fri Jul 29 2005 - sbrabec@suse.cz
|
||||
- Require mozilla-nss (#98002).
|
||||
* Wed Jul 27 2005 - ro@suse.de
|
||||
- fix typo in specfile
|
||||
* Mon Jul 25 2005 - gekker@suse.de
|
||||
- Update to version 1.3.5
|
||||
* Thu Jul 14 2005 - schwab@suse.de
|
||||
- Fix missing declarations again.
|
||||
* Fri Jul 01 2005 - gekker@suse.de
|
||||
- Update to version 1.3.3
|
||||
- Remove upstreamed patches
|
||||
- Fix compiler warnings
|
||||
* Tue Jun 21 2005 - schwab@suse.de
|
||||
- Fix missing declarations.
|
||||
* Fri Jun 10 2005 - sbrabec@suse.cz
|
||||
- Build with system nspr and nss libraries.
|
||||
- Build with Kerberos 5 support.
|
||||
- Build documentation.
|
||||
* Fri Jun 10 2005 - sbrabec@suse.cz
|
||||
- Build with mozilla-nss.
|
||||
* Wed Jun 01 2005 - sbrabec@suse.cz
|
||||
- Fixed devel requirements.
|
||||
* Thu May 19 2005 - ro@suse.de
|
||||
- fix build with current pkgconfig
|
||||
* Fri Apr 29 2005 - sbrabec@suse.cz
|
||||
- Yet another mail crasher fix (#66996).
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=273945
|
||||
* Thu Apr 14 2005 - sbrabec@suse.cz
|
||||
- Fixed serious GCC 4 warnings.
|
||||
* Sat Mar 19 2005 - clahey@suse.de
|
||||
- Fixes 72916.
|
||||
* Fri Mar 18 2005 - gekker@suse.de
|
||||
- Fix x-evolution-header (x73401).
|
||||
* Wed Mar 16 2005 - gekker@suse.de
|
||||
- Update to version 1.2.1
|
||||
- Add 64bit-warn.patch
|
||||
* Tue Mar 08 2005 - gekker@suse.de
|
||||
- Update to version 1.2.0 (GNOME 2.10)
|
||||
- remove upstreamed dest.patch
|
||||
* Wed Mar 02 2005 - gekker@suse.de
|
||||
- add dest.patch
|
||||
* Wed Mar 02 2005 - gekker@suse.de
|
||||
- update to version 1.1.6
|
||||
* Sun Feb 27 2005 - ro@suse.de
|
||||
- fix build on lib64
|
||||
* Fri Feb 25 2005 - gekker@suse.de
|
||||
- fix libexecdir, so that e-d-s will actually get launched
|
||||
- enable ssl support now that camel has been moved to e-d-s
|
||||
* Wed Feb 09 2005 - gekker@suse.de
|
||||
- Update to version 1.1.5
|
||||
- Remove upstreamed patch.
|
||||
* Sat Feb 05 2005 - gekker@suse.de
|
||||
- Update to version 1.1.4.2
|
||||
- Remove upsteamed patches, including security fix mentioned below.
|
||||
* Mon Jan 24 2005 - sbrabec@suse.cz
|
||||
- Fixed integer overflow (arbitrary code execution with elevated
|
||||
privileges) in lock helper (CAN-2005-0102, #50116).
|
||||
* Mon Jan 24 2005 - meissner@suse.de
|
||||
- Fixed some gcc 4 warnings/error that show code problems.
|
||||
* Fri Jan 14 2005 - clahey@suse.de
|
||||
- Update to version 1.1.3.
|
||||
* Thu Jan 06 2005 - gekker@suse.de
|
||||
- Update to version 1.1.2
|
||||
* Tue Dec 07 2004 - gekker@suse.de
|
||||
- Update to version 1.0.3 (Ximian 70057)
|
||||
* Tue Nov 30 2004 - ro@suse.de
|
||||
- re-diffed libdb.patch
|
||||
* Mon Nov 29 2004 - gekker@suse.de
|
||||
- Update to version 1.0.2
|
||||
- Removed patches included in this update
|
||||
* Fri Nov 12 2004 - sbrabec@suse.cz
|
||||
- Fixed libdb on x86_64 (broken local contacts in Evolution, #46845).
|
||||
http://bugzilla.ximian.com/show_bug.cgi?id=67600
|
||||
* Tue Nov 02 2004 - ro@suse.de
|
||||
- locale rename: no -> nb
|
||||
* Thu Sep 30 2004 - dobey@suse.de
|
||||
- Add patch to fix bug 66368 in bugzilla.ximian.com
|
||||
* Thu Sep 30 2004 - dobey@suse.de
|
||||
- Add patch to fix bug 66230 in bugzilla.ximian.com
|
||||
* Fri Sep 24 2004 - dobey@suse.de
|
||||
- Updated to version 1.0.1
|
||||
- Removed evolution-data-server-0.0.99.dif which is in upstream source
|
||||
* Fri Sep 17 2004 - ro@suse.de
|
||||
- readd evolution-data-server-0.0.99.dif to fix parallel build
|
||||
* Mon Sep 13 2004 - dobey@suse.de
|
||||
- Updated to version 1.0.0
|
||||
- Removed evolution-data-server-0.0.99.dif which was not changelogged,
|
||||
and seems to not actually change anything
|
||||
* Sat Sep 04 2004 - coolo@suse.de
|
||||
- use %%jobs (OOo is waiting on it)
|
||||
* Fri Aug 27 2004 - dobey@suse.de
|
||||
- Update to version 0.0.99
|
||||
* Wed Aug 18 2004 - dobey@suse.de
|
||||
- Fix LDAP support and remove unused configure options
|
||||
* Fri Aug 13 2004 - dobey@suse.de
|
||||
- Update to version 0.0.98
|
||||
- Add dependencies to the evolution-data-server-devel package
|
||||
* Thu Aug 05 2004 - dobey@suse.de
|
||||
- Add build deps for gnutls libs from libsoup
|
||||
* Tue Aug 03 2004 - dobey@suse.de
|
||||
- Don't run any autotools when building with no patches
|
||||
* Tue Aug 03 2004 - dobey@suse.de
|
||||
- Patch is in tarball for gnome_segv2 now
|
||||
- Updated to version 0.0.97
|
||||
* Thu Jul 29 2004 - dobey@suse.de
|
||||
- Add patch from CVS to detect path to gnome_segv2 better
|
||||
* Wed Jul 28 2004 - dobey@suse.de
|
||||
- Updated to version 0.0.96
|
||||
* Tue Jul 13 2004 - clahey@suse.de
|
||||
- Updated to version 0.0.95.
|
||||
* Mon Jun 21 2004 - clahey@suse.de
|
||||
- Updated to version 0.0.94.1.
|
||||
* Fri Jun 04 2004 - mibarra@suse.de
|
||||
- Updated to version 0.0.94.
|
||||
* Mon May 24 2004 - ro@suse.de
|
||||
- fix lib64 issue
|
||||
* Sat May 22 2004 - mibarra@suse.de
|
||||
- Updated to 0.0.93.
|
||||
* Tue May 18 2004 - clahey@suse.de
|
||||
- Don't install to /opt/gnome/libexec
|
||||
* Tue May 18 2004 - clahey@suse.de
|
||||
- Initial import of evolution-data-server.
|
16
evolution-fix-function-declarations.patch
Normal file
16
evolution-fix-function-declarations.patch
Normal file
@ -0,0 +1,16 @@
|
||||
--- docs/reference/libedataserver/libedataserver.types
|
||||
+++ docs/reference/libedataserver/libedataserver.types
|
||||
@@ -1,4 +1,13 @@
|
||||
#include <glib-object.h>
|
||||
+#include <e-account.h>
|
||||
+#include <e-component-listener.h>
|
||||
+#include <e-file-cache.h>
|
||||
+#include <e-iterator.h>
|
||||
+#include <e-list-iterator.h>
|
||||
+#include <e-list.h>
|
||||
+#include <e-source-group.h>
|
||||
+#include <e-source-list.h>
|
||||
+#include <e-source.h>
|
||||
e_account_get_type
|
||||
e_component_listener_get_type
|
||||
e_file_cache_get_type
|
63
fwd-mail.patch
Normal file
63
fwd-mail.patch
Normal file
@ -0,0 +1,63 @@
|
||||
Index: servers/groupwise/e-gw-item.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-item.c,v
|
||||
retrieving revision 1.100
|
||||
diff -u -p -r1.100 e-gw-item.c
|
||||
--- servers/groupwise/e-gw-item.c 13 Jun 2006 07:15:37 -0000 1.100
|
||||
+++ servers/groupwise/e-gw-item.c 13 Jun 2006 10:54:23 -0000
|
||||
@@ -72,6 +72,7 @@ struct _EGwItemPrivate {
|
||||
char *msg_body_id;
|
||||
int item_status;
|
||||
/*Attachments*/
|
||||
+ gboolean has_attachment;
|
||||
GSList *attach_list ;
|
||||
/*linkInfo for replies*/
|
||||
EGwItemLinkInfo *link_info;
|
||||
@@ -525,6 +526,7 @@ e_gw_item_init (EGwItem *item, EGwItemCl
|
||||
priv->self_status = 0;
|
||||
priv->link_info = NULL;
|
||||
priv->msg_body_id = NULL;
|
||||
+ priv->has_attachment = FALSE;
|
||||
item->priv = priv;
|
||||
|
||||
|
||||
@@ -1795,6 +1797,9 @@ e_gw_item_new_from_soap_parameter (const
|
||||
} else if (!g_ascii_strcasecmp (name, "size")) {
|
||||
item->priv->size = soup_soap_parameter_get_int_value (child);
|
||||
|
||||
+ } else if (!g_ascii_strcasecmp (name, "hasAttachment")) {
|
||||
+ item->priv->has_attachment = soup_soap_parameter_get_int_value (child);
|
||||
+
|
||||
} else if (!g_ascii_strcasecmp (name, "options")) {
|
||||
SoupSoapParameter *subparam;
|
||||
char *value = NULL;
|
||||
@@ -2065,6 +2070,14 @@ e_gw_item_get_mail_size (EGwItem *item)
|
||||
return item->priv->size;
|
||||
}
|
||||
|
||||
+gboolean
|
||||
+e_gw_item_has_attachment (EGwItem *item)
|
||||
+{
|
||||
+ g_return_val_if_fail (E_IS_GW_ITEM (item), 0);
|
||||
+
|
||||
+ return item->priv->has_attachment;
|
||||
+}
|
||||
+
|
||||
char *
|
||||
e_gw_item_get_creation_date (EGwItem *item)
|
||||
{
|
||||
Index: servers/groupwise/e-gw-item.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-item.h,v
|
||||
retrieving revision 1.40
|
||||
diff -u -p -r1.40 e-gw-item.h
|
||||
--- servers/groupwise/e-gw-item.h 6 Dec 2005 10:05:57 -0000 1.40
|
||||
+++ servers/groupwise/e-gw-item.h 13 Jun 2006 10:54:23 -0000
|
||||
@@ -298,6 +298,7 @@ void e_gw_item_set_source (EGwItem *item
|
||||
int e_gw_item_get_trigger (EGwItem *item);
|
||||
void e_gw_item_set_trigger (EGwItem *item, int trigger);
|
||||
|
||||
+gboolean e_gw_item_has_attachment (EGwItem *item);
|
||||
|
||||
typedef struct {
|
||||
char *email;
|
53
german-translation-eds.diff
Normal file
53
german-translation-eds.diff
Normal file
@ -0,0 +1,53 @@
|
||||
--- /root/sragavan/602/build-eds/usr/src/packages/BUILD/evolution-data-server-1.6.0/po/de.po 2006-06-02 06:39:20.962276877 +0200
|
||||
+++ po/de.po 2006-05-25 12:28:10.000000000 +0200
|
||||
@@ -12,7 +12,7 @@
|
||||
"Project-Id-Version: evolution-data-server\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-05-04 06:53+0000\n"
|
||||
-"PO-Revision-Date: 2006-05-17 11:25\n"
|
||||
+"PO-Revision-Date: 2006-05-25 11:28\n"
|
||||
"Last-Translator: Novell Language <language@novell.com>\n"
|
||||
"Language-Team: Novell Language <language@novell.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -656,7 +656,7 @@
|
||||
#: ../calendar/backends/file/e-cal-backend-file.c:209
|
||||
#,
|
||||
msgid "Can't save calendar data: "
|
||||
-msgstr "Can't save calendar data: "
|
||||
+msgstr "Kalenderdaten können nicht gespeichert werden: "
|
||||
|
||||
#: ../calendar/backends/groupwise/e-cal-backend-groupwise-utils.c:872
|
||||
#: ../camel/providers/groupwise/camel-groupwise-folder.c:1582
|
||||
@@ -2485,7 +2485,7 @@
|
||||
|
||||
#: ../camel/providers/groupwise/camel-groupwise-folder.c:966
|
||||
msgid "Trash Folder Full. Please Empty."
|
||||
-msgstr "Trash Folder Full. Please Empty."
|
||||
+msgstr "Müllordner voll. Bitte leeren."
|
||||
|
||||
#: ../camel/providers/groupwise/camel-groupwise-folder.c:1129
|
||||
#: ../camel/providers/groupwise/camel-groupwise-store.c:632
|
||||
@@ -2605,7 +2605,7 @@
|
||||
#: ../camel/providers/groupwise/camel-groupwise-store.c:226
|
||||
#,
|
||||
msgid "Unable to authenticate to GroupWise server. "
|
||||
-msgstr "Unable to authenticate to GroupWise server. "
|
||||
+msgstr "Authentifizierung beim GroupWise-Server nicht möglich. "
|
||||
|
||||
#: ../camel/providers/groupwise/camel-groupwise-store.c:304
|
||||
msgid "Some features may not work correctly with your current server version"
|
||||
@@ -4662,12 +4662,12 @@
|
||||
#: ../libedataserverui/e-passwords.c:472
|
||||
#,
|
||||
msgid "_Remember this passphrase"
|
||||
-msgstr "_Remember this passphrase"
|
||||
+msgstr "_An diesen Passwortsatz erinnern"
|
||||
|
||||
#: ../libedataserverui/e-passwords.c:473
|
||||
#,
|
||||
msgid "_Remember this passphrase for the remainder of this session"
|
||||
-msgstr "_Remember this passphrase for the remainder of this session"
|
||||
+msgstr "_Für den Rest dieser Sitzung an diesen Passwortsatz erinnern"
|
||||
|
||||
#: ../libedataserverui/e-passwords.c:476
|
||||
msgid "_Remember this password"
|
141
gw-proxy-issues.patch
Normal file
141
gw-proxy-issues.patch
Normal file
@ -0,0 +1,141 @@
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c.orig 2006-04-04 17:00:02.054008863 +0200
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006-04-04 17:00:05.509122536 +0200
|
||||
@@ -914,7 +914,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
if (!camel_groupwise_store_connected (gw_store, ex))
|
||||
goto end1;
|
||||
|
||||
- if (!strcmp (folder->full_name, "Trash") || is_proxy) {
|
||||
+ if (!strcmp (folder->full_name, "Trash")) {
|
||||
status = e_gw_connection_get_items (cnc, container_id, "peek recipient distribution created delivered attachments subject status size", NULL, &list);
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
if (status ==E_GW_CONNECTION_STATUS_OTHER) {
|
||||
@@ -939,71 +939,73 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
|
||||
|
||||
/*Get the New Items*/
|
||||
- status = e_gw_connection_get_quick_messages (cnc, container_id,
|
||||
- "peek id",
|
||||
- &t_str, "New", NULL, NULL, -1, &slist);
|
||||
- if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
|
||||
- goto end2;
|
||||
- }
|
||||
+ if (!is_proxy) {
|
||||
+ status = e_gw_connection_get_quick_messages (cnc, container_id,
|
||||
+ "peek id",
|
||||
+ &t_str, "New", NULL, NULL, -1, &slist);
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
|
||||
+ goto end2;
|
||||
+ }
|
||||
|
||||
- /*
|
||||
- * The value in t_str is the one that has to be used for the next set of calls.
|
||||
- * so store this value in the summary.
|
||||
- */
|
||||
- if (summary->time_string)
|
||||
- g_free (summary->time_string);
|
||||
+ /*
|
||||
+ * The value in t_str is the one that has to be used for the next set of calls.
|
||||
+ * so store this value in the summary.
|
||||
+ */
|
||||
+ if (summary->time_string)
|
||||
+ g_free (summary->time_string);
|
||||
|
||||
|
||||
- summary->time_string = g_strdup (t_str);
|
||||
- g_free (t_str);
|
||||
- t_str = NULL;
|
||||
+ summary->time_string = g_strdup (t_str);
|
||||
+ g_free (t_str);
|
||||
+ t_str = NULL;
|
||||
|
||||
- /*
|
||||
- for ( sl = slist ; sl != NULL; sl = sl->next)
|
||||
- list = g_list_append (list, sl->data);*/
|
||||
+ /*
|
||||
+ for ( sl = slist ; sl != NULL; sl = sl->next)
|
||||
+ list = g_list_append (list, sl->data);*/
|
||||
|
||||
- if (slist && g_slist_length(slist) != 0)
|
||||
- check_all = TRUE;
|
||||
+ if (slist && g_slist_length(slist) != 0)
|
||||
+ check_all = TRUE;
|
||||
|
||||
- g_slist_free (slist);
|
||||
- slist = NULL;
|
||||
+ g_slist_free (slist);
|
||||
+ slist = NULL;
|
||||
|
||||
- t_str = g_strdup (time_string);
|
||||
+ t_str = g_strdup (time_string);
|
||||
|
||||
- /*Get those items which have been modifed*/
|
||||
+ /*Get those items which have been modifed*/
|
||||
|
||||
- status = e_gw_connection_get_quick_messages (cnc, container_id,
|
||||
- "peek id",
|
||||
- &t_str, "Modified", NULL, NULL, -1, &slist);
|
||||
+ status = e_gw_connection_get_quick_messages (cnc, container_id,
|
||||
+ "peek id",
|
||||
+ &t_str, "Modified", NULL, NULL, -1, &slist);
|
||||
|
||||
- if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
|
||||
- goto end3;
|
||||
- }
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
|
||||
+ goto end3;
|
||||
+ }
|
||||
|
||||
- /* The storing of time-stamp to summary code below should be commented if the
|
||||
- above commented code is uncommented */
|
||||
+ /* The storing of time-stamp to summary code below should be commented if the
|
||||
+ above commented code is uncommented */
|
||||
|
||||
- /* if (summary->time_string)
|
||||
- g_free (summary->time_string);
|
||||
+ /* if (summary->time_string)
|
||||
+ g_free (summary->time_string);
|
||||
|
||||
- summary->time_string = g_strdup (t_str);
|
||||
+ summary->time_string = g_strdup (t_str);
|
||||
|
||||
- g_free (t_str), t_str = NULL;*/
|
||||
+ g_free (t_str), t_str = NULL;*/
|
||||
|
||||
- for ( sl = slist ; sl != NULL; sl = sl->next)
|
||||
- list = g_list_prepend (list, sl->data);
|
||||
+ for ( sl = slist ; sl != NULL; sl = sl->next)
|
||||
+ list = g_list_prepend (list, sl->data);
|
||||
|
||||
- g_slist_free (slist);
|
||||
- slist = NULL;
|
||||
+ g_slist_free (slist);
|
||||
+ slist = NULL;
|
||||
|
||||
- if (gw_store->current_folder != folder) {
|
||||
- gw_store->current_folder = folder;
|
||||
- }
|
||||
+ if (gw_store->current_folder != folder) {
|
||||
+ gw_store->current_folder = folder;
|
||||
+ }
|
||||
|
||||
- if (list) {
|
||||
- gw_update_cache (folder, list, ex, FALSE);
|
||||
+ if (list) {
|
||||
+ gw_update_cache (folder, list, ex, FALSE);
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
@@ -1017,7 +1019,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
* this folder, and update the summary.
|
||||
*/
|
||||
/*create a new session thread for the update all operation*/
|
||||
- if (check_all) {
|
||||
+ if (check_all || is_proxy) {
|
||||
msg = camel_session_thread_msg_new (session, &update_ops, sizeof(*msg));
|
||||
msg->cnc = cnc;
|
||||
msg->t_str = g_strdup (time_string);
|
41
gw-trash-fix.diff
Normal file
41
gw-trash-fix.diff
Normal file
@ -0,0 +1,41 @@
|
||||
Index: camel/providers/imap/camel-imap-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.c,v
|
||||
retrieving revision 1.359
|
||||
retrieving revision 1.360
|
||||
diff -u -r1.359 -r1.360
|
||||
--- camel/providers/imap/camel-imap-folder.c 2006/04/21 09:15:50 1.359
|
||||
+++ camel/providers/imap/camel-imap-folder.c 2006/05/10 08:49:18 1.360
|
||||
@@ -2322,7 +2322,7 @@
|
||||
}
|
||||
|
||||
|
||||
-#define CAMEL_MESSAGE_INFO_HEADERS "DATE FROM TO CC SUBJECT REFERENCES IN-REPLY-TO MESSAGE-ID MIME-VERSION CONTENT-TYPE"
|
||||
+#define CAMEL_MESSAGE_INFO_HEADERS "DATE FROM TO CC SUBJECT REFERENCES IN-REPLY-TO MESSAGE-ID MIME-VERSION CONTENT-TYPE "
|
||||
|
||||
/* FIXME: this needs to be kept in sync with camel-mime-utils.c's list
|
||||
of mailing-list headers and so might be best if this were
|
||||
Index: camel/providers/groupwise/camel-groupwise-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
|
||||
retrieving revision 1.133
|
||||
diff -u -p -r1.133 camel-groupwise-folder.c
|
||||
--- camel/providers/groupwise/camel-groupwise-folder.c 17 May 2006 08:48:19 -0000 1.133
|
||||
+++ camel/providers/groupwise/camel-groupwise-folder.c 17 May 2006 08:52:17 -0000
|
||||
@@ -959,6 +959,7 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
goto end1;
|
||||
|
||||
if (!strcmp (folder->full_name, "Trash")) {
|
||||
+#if 0
|
||||
status = e_gw_connection_get_items (cnc, container_id, "peek recipient distribution created delivered attachments subject status size", NULL, &list);
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
if (status ==E_GW_CONNECTION_STATUS_OTHER) {
|
||||
@@ -978,6 +979,8 @@ groupwise_refresh_folder(CamelFolder *fo
|
||||
list = NULL;
|
||||
}
|
||||
goto end1;
|
||||
+#endif
|
||||
+ is_proxy = TRUE;
|
||||
}
|
||||
|
||||
time_string = g_strdup (((CamelGroupwiseSummary *) folder->summary)->time_string);
|
720
imap-locking.patch
Normal file
720
imap-locking.patch
Normal file
@ -0,0 +1,720 @@
|
||||
Index: camel/providers/imap/camel-imap-command.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-command.c,v
|
||||
retrieving revision 1.76.2.1
|
||||
diff -u -r1.76.2.1 camel-imap-command.c
|
||||
--- camel/providers/imap/camel-imap-command.c 12 Apr 2006 19:08:32 -0000 1.76.2.1
|
||||
+++ camel/providers/imap/camel-imap-command.c 19 May 2006 15:19:00 -0000
|
||||
@@ -38,7 +38,6 @@
|
||||
#include "camel-imap-folder.h"
|
||||
#include "camel-imap-store.h"
|
||||
#include "camel-imap-store-summary.h"
|
||||
-#include "camel-imap-private.h"
|
||||
#include <camel/camel-exception.h>
|
||||
#include <camel/camel-private.h>
|
||||
#include <camel/camel-utf8.h>
|
||||
Index: camel/providers/imap/camel-imap-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.c,v
|
||||
retrieving revision 1.358.2.1
|
||||
diff -u -r1.358.2.1 camel-imap-folder.c
|
||||
--- camel/providers/imap/camel-imap-folder.c 21 Apr 2006 09:21:20 -0000 1.358.2.1
|
||||
+++ camel/providers/imap/camel-imap-folder.c 19 May 2006 15:19:00 -0000
|
||||
@@ -37,11 +37,11 @@
|
||||
/*#include "libedataserver/e-path.h"*/
|
||||
#include "libedataserver/e-time-utils.h"
|
||||
#include "libedataserver/e-data-server-util.h"
|
||||
+#include "libedataserver/e-msgport.h"
|
||||
|
||||
#include "camel-imap-folder.h"
|
||||
#include "camel-imap-command.h"
|
||||
#include "camel-imap-message-cache.h"
|
||||
-#include "camel-imap-private.h"
|
||||
#include "camel-imap-search.h"
|
||||
#include "camel-imap-store.h"
|
||||
#include "camel-imap-summary.h"
|
||||
@@ -70,6 +70,7 @@
|
||||
#include "camel-i18n.h"
|
||||
#include "camel/camel-store-summary.h"
|
||||
|
||||
+
|
||||
#define d(x)
|
||||
|
||||
/* set to -1 for infinite size (suggested max command-line length is
|
||||
@@ -189,12 +190,6 @@
|
||||
folder->folder_flags |= (CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY |
|
||||
CAMEL_FOLDER_HAS_SEARCH_CAPABILITY);
|
||||
|
||||
- imap_folder->priv = g_malloc0(sizeof(*imap_folder->priv));
|
||||
-#ifdef ENABLE_THREADS
|
||||
- imap_folder->priv->search_lock = e_mutex_new(E_MUTEX_SIMPLE);
|
||||
- imap_folder->priv->cache_lock = e_mutex_new(E_MUTEX_REC);
|
||||
-#endif
|
||||
-
|
||||
imap_folder->need_rescan = TRUE;
|
||||
}
|
||||
|
||||
@@ -347,9 +342,7 @@
|
||||
else if (validity != imap_summary->validity) {
|
||||
imap_summary->validity = validity;
|
||||
camel_folder_summary_clear (folder->summary);
|
||||
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
|
||||
camel_imap_message_cache_clear (imap_folder->cache);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
|
||||
imap_folder->need_rescan = FALSE;
|
||||
camel_imap_folder_changed (folder, exists, NULL, ex);
|
||||
return;
|
||||
@@ -423,12 +416,6 @@
|
||||
camel_object_unref (CAMEL_OBJECT (imap_folder->search));
|
||||
if (imap_folder->cache)
|
||||
camel_object_unref (CAMEL_OBJECT (imap_folder->cache));
|
||||
-
|
||||
-#ifdef ENABLE_THREADS
|
||||
- e_mutex_destroy(imap_folder->priv->search_lock);
|
||||
- e_mutex_destroy(imap_folder->priv->cache_lock);
|
||||
-#endif
|
||||
- g_free(imap_folder->priv);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -475,26 +462,28 @@
|
||||
CamelImapStore *imap_store = (CamelImapStore *)folder->parent_store;
|
||||
char *folder_dir, *summary_path, *state_file;
|
||||
char *folders;
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (imap_store, connect_lock);
|
||||
+
|
||||
folders = g_strconcat (imap_store->storage_path, "/folders", NULL);
|
||||
folder_dir = imap_path_to_physical (folders, new);
|
||||
g_free (folders);
|
||||
summary_path = g_strdup_printf("%s/summary", folder_dir);
|
||||
-
|
||||
- CAMEL_IMAP_FOLDER_LOCK (folder, cache_lock);
|
||||
+
|
||||
camel_imap_message_cache_set_path(imap_folder->cache, folder_dir);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (folder, cache_lock);
|
||||
-
|
||||
+
|
||||
camel_folder_summary_set_filename(folder->summary, summary_path);
|
||||
-
|
||||
+
|
||||
state_file = g_strdup_printf ("%s/cmeta", folder_dir);
|
||||
camel_object_set(folder, NULL, CAMEL_OBJECT_STATE_FILE, state_file, NULL);
|
||||
g_free(state_file);
|
||||
-
|
||||
+
|
||||
g_free(summary_path);
|
||||
g_free(folder_dir);
|
||||
-
|
||||
+
|
||||
((CamelFolderClass *)disco_folder_class)->rename(folder, new);
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (imap_store, connect_lock);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1202,21 +1191,23 @@
|
||||
char *uid;
|
||||
|
||||
uid = get_temp_uid ();
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (imap_store, connect_lock);
|
||||
+
|
||||
camel_imap_summary_add_offline (folder->summary, uid, message, info);
|
||||
- CAMEL_IMAP_FOLDER_LOCK (folder, cache_lock);
|
||||
camel_imap_message_cache_insert_wrapper (cache, uid, "",
|
||||
CAMEL_DATA_WRAPPER (message), ex);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (folder, cache_lock);
|
||||
-
|
||||
+
|
||||
changes = camel_folder_change_info_new ();
|
||||
camel_folder_change_info_add_uid (changes, uid);
|
||||
- camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed",
|
||||
- changes);
|
||||
+ camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
|
||||
camel_folder_change_info_free (changes);
|
||||
|
||||
camel_disco_diary_log (CAMEL_DISCO_STORE (imap_store)->diary,
|
||||
CAMEL_DISCO_DIARY_FOLDER_APPEND, folder, uid);
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (imap_store, connect_lock);
|
||||
+
|
||||
if (appended_uid)
|
||||
*appended_uid = uid;
|
||||
else
|
||||
@@ -1327,21 +1318,22 @@
|
||||
CamelImapResponse *response;
|
||||
char *uid;
|
||||
int count;
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
+
|
||||
count = camel_folder_summary_count (folder->summary);
|
||||
- response = do_append (folder, message, info, &uid, ex);
|
||||
- if (!response)
|
||||
+ if (!(response = do_append (folder, message, info, &uid, ex))) {
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
return;
|
||||
+ }
|
||||
|
||||
if (uid) {
|
||||
/* Cache first, since freeing response may trigger a
|
||||
* summary update that will want this information.
|
||||
*/
|
||||
- CAMEL_IMAP_FOLDER_LOCK (folder, cache_lock);
|
||||
camel_imap_message_cache_insert_wrapper (
|
||||
CAMEL_IMAP_FOLDER (folder)->cache, uid,
|
||||
"", CAMEL_DATA_WRAPPER (message), ex);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (folder, cache_lock);
|
||||
if (appended_uid)
|
||||
*appended_uid = uid;
|
||||
else
|
||||
@@ -1352,10 +1344,10 @@
|
||||
camel_imap_response_free (store, response);
|
||||
|
||||
/* Make sure a "folder_changed" is emitted. */
|
||||
- CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
if (store->current_folder != folder ||
|
||||
camel_folder_summary_count (folder->summary) == count)
|
||||
imap_refresh_info (folder, ex);
|
||||
+
|
||||
CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
}
|
||||
|
||||
@@ -1368,19 +1360,20 @@
|
||||
CamelImapResponse *response;
|
||||
char *uid;
|
||||
|
||||
- response = do_append (folder, message, info, &uid, ex);
|
||||
- if (!response)
|
||||
+ CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
+
|
||||
+ if (!(response = do_append (folder, message, info, &uid, ex))) {
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
return;
|
||||
+ }
|
||||
|
||||
if (uid) {
|
||||
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
|
||||
const char *olduid = camel_message_info_uid (info);
|
||||
|
||||
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
|
||||
camel_imap_message_cache_copy (imap_folder->cache, olduid,
|
||||
imap_folder->cache, uid, ex);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
|
||||
-
|
||||
+
|
||||
if (appended_uid)
|
||||
*appended_uid = uid;
|
||||
else
|
||||
@@ -1389,6 +1382,8 @@
|
||||
*appended_uid = NULL;
|
||||
|
||||
camel_imap_response_free (store, response);
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
}
|
||||
|
||||
|
||||
@@ -1405,17 +1400,9 @@
|
||||
CamelMessageInfo *mi;
|
||||
char *uid, *destuid;
|
||||
int i;
|
||||
-
|
||||
- /* We grab the store's command lock first, and then grab the
|
||||
- * source and destination cache_locks. This way we can't
|
||||
- * deadlock in the case where we're simultaneously also trying
|
||||
- * to copy messages in the other direction from another thread.
|
||||
- */
|
||||
+
|
||||
CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
- CAMEL_IMAP_FOLDER_LOCK (source, cache_lock);
|
||||
- CAMEL_IMAP_FOLDER_LOCK (dest, cache_lock);
|
||||
- CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
-
|
||||
+
|
||||
if (transferred_uids) {
|
||||
*transferred_uids = g_ptr_array_new ();
|
||||
g_ptr_array_set_size (*transferred_uids, uids->len);
|
||||
@@ -1451,16 +1438,15 @@
|
||||
if (delete_originals)
|
||||
camel_folder_delete_message (source, uid);
|
||||
}
|
||||
-
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (dest, cache_lock);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (source, cache_lock);
|
||||
-
|
||||
+
|
||||
camel_object_trigger_event (CAMEL_OBJECT (dest), "folder_changed", changes);
|
||||
camel_folder_change_info_free (changes);
|
||||
|
||||
camel_disco_diary_log (CAMEL_DISCO_STORE (store)->diary,
|
||||
CAMEL_DISCO_DIARY_FOLDER_TRANSFER,
|
||||
source, dest, uids, delete_originals);
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1490,22 +1476,14 @@
|
||||
|
||||
src = imap_uid_set_to_array (source->summary, srcset);
|
||||
dest = imap_uid_set_to_array (destination->summary, destset);
|
||||
-
|
||||
+
|
||||
if (src && dest && src->len == dest->len) {
|
||||
- /* We don't have to worry about deadlocking on the
|
||||
- * cache locks here, because we've got the store's
|
||||
- * command lock too, so no one else could be here.
|
||||
- */
|
||||
- CAMEL_IMAP_FOLDER_LOCK (source, cache_lock);
|
||||
- CAMEL_IMAP_FOLDER_LOCK (destination, cache_lock);
|
||||
for (i = 0; i < src->len; i++) {
|
||||
camel_imap_message_cache_copy (scache, src->pdata[i],
|
||||
dcache, dest->pdata[i],
|
||||
NULL);
|
||||
}
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (source, cache_lock);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (destination, cache_lock);
|
||||
-
|
||||
+
|
||||
imap_uid_array_free (src);
|
||||
imap_uid_array_free (dest);
|
||||
return;
|
||||
@@ -1567,7 +1545,9 @@
|
||||
qsort (uids->pdata, uids->len, sizeof (void *), uid_compar);
|
||||
|
||||
/* Now copy the messages */
|
||||
+ CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
do_copy(source, uids, dest, delete_originals, ex);
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
if (camel_exception_is_set (ex))
|
||||
return;
|
||||
|
||||
@@ -1587,12 +1567,15 @@
|
||||
gboolean delete_originals, CamelException *ex)
|
||||
{
|
||||
CamelDiscoDiary *diary = CAMEL_DISCO_STORE (source->parent_store)->diary;
|
||||
+ CamelStore *store = source->parent_store;
|
||||
GPtrArray *realuids;
|
||||
int first, i;
|
||||
const char *uid;
|
||||
CamelMimeMessage *message;
|
||||
CamelMessageInfo *info;
|
||||
|
||||
+ CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
+
|
||||
qsort (uids->pdata, uids->len, sizeof (void *), uid_compar);
|
||||
|
||||
/* This is trickier than append_resyncing, because some of
|
||||
@@ -1649,10 +1632,12 @@
|
||||
}
|
||||
|
||||
g_ptr_array_free (realuids, FALSE);
|
||||
-
|
||||
+
|
||||
/* FIXME */
|
||||
if (transferred_uids)
|
||||
*transferred_uids = NULL;
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
}
|
||||
|
||||
static GPtrArray *
|
||||
@@ -1660,36 +1645,36 @@
|
||||
{
|
||||
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
|
||||
GPtrArray *matches;
|
||||
-
|
||||
+
|
||||
/* we could get around this by creating a new search object each time,
|
||||
but i doubt its worth it since any long operation would lock the
|
||||
command channel too */
|
||||
- CAMEL_IMAP_FOLDER_LOCK(folder, search_lock);
|
||||
-
|
||||
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
camel_folder_search_set_folder (imap_folder->search, folder);
|
||||
matches = camel_folder_search_search(imap_folder->search, expression, NULL, ex);
|
||||
-
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK(folder, search_lock);
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
return matches;
|
||||
}
|
||||
|
||||
static GPtrArray *
|
||||
-imap_search_by_uids(CamelFolder *folder, const char *expression, GPtrArray *uids, CamelException *ex)
|
||||
+imap_search_by_uids (CamelFolder *folder, const char *expression, GPtrArray *uids, CamelException *ex)
|
||||
{
|
||||
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER(folder);
|
||||
+ CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
|
||||
GPtrArray *matches;
|
||||
-
|
||||
+
|
||||
if (uids->len == 0)
|
||||
- return g_ptr_array_new();
|
||||
-
|
||||
- CAMEL_IMAP_FOLDER_LOCK(folder, search_lock);
|
||||
-
|
||||
+ return g_ptr_array_new ();
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
camel_folder_search_set_folder(imap_folder->search, folder);
|
||||
matches = camel_folder_search_search(imap_folder->search, expression, uids, ex);
|
||||
-
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK(folder, search_lock);
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
return matches;
|
||||
}
|
||||
|
||||
@@ -1697,14 +1682,14 @@
|
||||
imap_search_free (CamelFolder *folder, GPtrArray *uids)
|
||||
{
|
||||
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
|
||||
-
|
||||
+
|
||||
g_return_if_fail (imap_folder->search);
|
||||
-
|
||||
- CAMEL_IMAP_FOLDER_LOCK(folder, search_lock);
|
||||
-
|
||||
+
|
||||
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
|
||||
+
|
||||
camel_folder_search_free_result (imap_folder->search, uids);
|
||||
-
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK(folder, search_lock);
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
|
||||
}
|
||||
|
||||
static CamelMimeMessage *get_message (CamelImapFolder *imap_folder,
|
||||
@@ -2056,7 +2041,7 @@
|
||||
CamelMimeMessage *msg = NULL;
|
||||
CamelStream *stream = NULL;
|
||||
int retry;
|
||||
-
|
||||
+
|
||||
mi = (CamelImapMessageInfo *)camel_folder_summary_uid (folder->summary, uid);
|
||||
if (mi == NULL) {
|
||||
camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
|
||||
@@ -2066,7 +2051,7 @@
|
||||
|
||||
/* If its cached in full, just get it as is, this is only a shortcut,
|
||||
since we get stuff from the cache anyway. It affects a busted connection though. */
|
||||
- if ( (stream = camel_imap_folder_fetch_data(imap_folder, uid, "", TRUE, NULL))
|
||||
+ if ((stream = camel_imap_folder_fetch_data(imap_folder, uid, "", TRUE, NULL))
|
||||
&& (msg = get_message_simple(imap_folder, uid, stream, ex)))
|
||||
goto done;
|
||||
|
||||
@@ -2095,7 +2080,7 @@
|
||||
char *body, *found_uid;
|
||||
int i;
|
||||
|
||||
- CAMEL_SERVICE_LOCK(store, connect_lock);
|
||||
+ CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
if (!camel_imap_store_connected(store, ex)) {
|
||||
CAMEL_SERVICE_UNLOCK(store, connect_lock);
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
|
||||
@@ -2104,8 +2089,7 @@
|
||||
}
|
||||
|
||||
response = camel_imap_command (store, folder, ex, "UID FETCH %s BODY", uid);
|
||||
- CAMEL_SERVICE_UNLOCK(store, connect_lock);
|
||||
-
|
||||
+
|
||||
if (response) {
|
||||
for (i = 0, body = NULL; i < response->untagged->len; i++) {
|
||||
fetch_data = parse_fetch_response (imap_folder, response->untagged->pdata[i]);
|
||||
@@ -2125,7 +2109,7 @@
|
||||
imap_parse_body ((const char **) &body, folder, mi->info.content);
|
||||
camel_folder_summary_touch (folder->summary);
|
||||
}
|
||||
-
|
||||
+
|
||||
if (fetch_data)
|
||||
g_datalist_clear (&fetch_data);
|
||||
|
||||
@@ -2133,6 +2117,8 @@
|
||||
} else {
|
||||
camel_exception_clear(ex);
|
||||
}
|
||||
+
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
}
|
||||
|
||||
if (camel_debug_start("imap:folder")) {
|
||||
@@ -2637,9 +2623,7 @@
|
||||
}
|
||||
|
||||
camel_folder_change_info_remove_uid (changes, camel_message_info_uid (info));
|
||||
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
|
||||
camel_imap_message_cache_remove (imap_folder->cache, camel_message_info_uid (info));
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
|
||||
camel_folder_summary_remove (folder->summary, info);
|
||||
camel_message_info_free(info);
|
||||
}
|
||||
@@ -2686,36 +2670,23 @@
|
||||
char *found_uid;
|
||||
int i;
|
||||
|
||||
- /* EXPUNGE responses have to modify the cache, which means
|
||||
- * they have to grab the cache_lock while holding the
|
||||
- * connect_lock.
|
||||
-
|
||||
- * Because getting the service lock may cause MUCH unecessary
|
||||
- * delay when we already have the data locally, we do the
|
||||
- * locking separately. This could cause a race
|
||||
- * getting the same data from the cache, but that is only
|
||||
- * an inefficiency, and bad luck.
|
||||
- */
|
||||
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
|
||||
+ CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
stream = camel_imap_message_cache_get (imap_folder->cache, uid, section_text, ex);
|
||||
if (!stream && (!strcmp (section_text, "HEADER") || !strcmp (section_text, "0"))) {
|
||||
camel_exception_clear (ex);
|
||||
stream = camel_imap_message_cache_get (imap_folder->cache, uid, "", ex);
|
||||
}
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
|
||||
|
||||
- if (stream || cache_only)
|
||||
+ if (stream || cache_only) {
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
return stream;
|
||||
-
|
||||
+ }
|
||||
+
|
||||
camel_exception_clear(ex);
|
||||
-
|
||||
- CAMEL_SERVICE_LOCK (store, connect_lock);
|
||||
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
|
||||
-
|
||||
+
|
||||
if (!camel_imap_store_connected(store, ex)) {
|
||||
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
|
||||
_("This message is not currently available"));
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
|
||||
CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
return NULL;
|
||||
}
|
||||
@@ -2730,11 +2701,9 @@
|
||||
"UID FETCH %s BODY.PEEK[%s]",
|
||||
uid, section_text);
|
||||
}
|
||||
- /* We won't need the connect_lock again after this. */
|
||||
- CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
|
||||
if (!response) {
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -2748,8 +2717,9 @@
|
||||
g_datalist_clear (&fetch_data);
|
||||
stream = NULL;
|
||||
}
|
||||
+
|
||||
camel_imap_response_free (store, response);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
|
||||
+
|
||||
if (!stream) {
|
||||
camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
|
||||
_("Could not find message body in FETCH response."));
|
||||
@@ -2758,6 +2728,8 @@
|
||||
g_datalist_clear (&fetch_data);
|
||||
}
|
||||
|
||||
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
|
||||
+
|
||||
return stream;
|
||||
}
|
||||
|
||||
@@ -2769,6 +2741,8 @@
|
||||
gboolean cache_header = TRUE, header = FALSE;
|
||||
size_t body_len = 0;
|
||||
|
||||
+ CAMEL_SERVICE_ASSERT_LOCKED (((CamelFolder *) imap_folder)->parent_store, connect_lock);
|
||||
+
|
||||
if (*response != '(') {
|
||||
long seq;
|
||||
|
||||
@@ -2887,11 +2861,9 @@
|
||||
if (header && !cache_header) {
|
||||
stream = camel_stream_mem_new_with_buffer (body, body_len);
|
||||
} else {
|
||||
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
|
||||
stream = camel_imap_message_cache_insert (imap_folder->cache,
|
||||
uid, part_spec,
|
||||
body, body_len, NULL);
|
||||
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
|
||||
if (stream == NULL)
|
||||
stream = camel_stream_mem_new_with_buffer (body, body_len);
|
||||
}
|
||||
Index: camel/providers/imap/camel-imap-folder.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.h,v
|
||||
retrieving revision 1.43
|
||||
diff -u -r1.43 camel-imap-folder.h
|
||||
--- camel/providers/imap/camel-imap-folder.h 31 Aug 2005 04:26:02 -0000 1.43
|
||||
+++ camel/providers/imap/camel-imap-folder.h 19 May 2006 15:19:00 -0000
|
||||
@@ -44,9 +44,7 @@
|
||||
|
||||
struct _CamelImapFolder {
|
||||
CamelDiscoFolder parent_object;
|
||||
-
|
||||
- struct _CamelImapFolderPrivate *priv;
|
||||
-
|
||||
+
|
||||
CamelFolderSearch *search;
|
||||
CamelImapMessageCache *cache;
|
||||
|
||||
Index: camel/providers/imap/camel-imap-private.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-private.h,v
|
||||
retrieving revision 1.12
|
||||
diff -u -r1.12 camel-imap-private.h
|
||||
--- camel/providers/imap/camel-imap-private.h 31 Aug 2005 04:26:02 -0000 1.12
|
||||
+++ camel/providers/imap/camel-imap-private.h 19 May 2006 15:19:00 -0000
|
||||
@@ -28,46 +28,6 @@
|
||||
#pragma }
|
||||
#endif /* __cplusplus */
|
||||
|
||||
-/* need a way to configure and save this data, if this header is to
|
||||
- be installed. For now, dont install it */
|
||||
-
|
||||
-#ifdef HAVE_CONFIG_H
|
||||
-#include <config.h>
|
||||
-#endif
|
||||
-
|
||||
-#ifdef ENABLE_THREADS
|
||||
-#include "libedataserver/e-msgport.h"
|
||||
-#endif
|
||||
-
|
||||
-struct _CamelImapFolderPrivate {
|
||||
-#ifdef ENABLE_THREADS
|
||||
- EMutex *search_lock; /* for locking the search object */
|
||||
- EMutex *cache_lock; /* for locking the cache object */
|
||||
-#endif
|
||||
-};
|
||||
-
|
||||
-#ifdef ENABLE_THREADS
|
||||
-#define CAMEL_IMAP_FOLDER_LOCK(f, l) (e_mutex_lock(((CamelImapFolder *)f)->priv->l))
|
||||
-#define CAMEL_IMAP_FOLDER_UNLOCK(f, l) (e_mutex_unlock(((CamelImapFolder *)f)->priv->l))
|
||||
-#else
|
||||
-#define CAMEL_IMAP_FOLDER_LOCK(f, l)
|
||||
-#define CAMEL_IMAP_FOLDER_UNLOCK(f, l)
|
||||
-#endif
|
||||
-
|
||||
-struct _CamelImapWrapperPrivate {
|
||||
-#ifdef ENABLE_THREADS
|
||||
- GMutex *lock;
|
||||
-#endif
|
||||
-};
|
||||
-
|
||||
-#ifdef ENABLE_THREADS
|
||||
-#define CAMEL_IMAP_WRAPPER_LOCK(f, l) (g_mutex_lock(((CamelImapWrapper *)f)->priv->l))
|
||||
-#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l) (g_mutex_unlock(((CamelImapWrapper *)f)->priv->l))
|
||||
-#else
|
||||
-#define CAMEL_IMAP_WRAPPER_LOCK(f, l)
|
||||
-#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l)
|
||||
-#endif
|
||||
-
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
Index: camel/providers/imap/camel-imap-search.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-search.c,v
|
||||
retrieving revision 1.21
|
||||
diff -u -r1.21 camel-imap-search.c
|
||||
--- camel/providers/imap/camel-imap-search.c 15 Sep 2005 17:54:00 -0000 1.21
|
||||
+++ camel/providers/imap/camel-imap-search.c 19 May 2006 15:19:00 -0000
|
||||
@@ -34,7 +34,6 @@
|
||||
#include "camel-imap-folder.h"
|
||||
#include "camel-imap-store.h"
|
||||
#include "camel-imap-search.h"
|
||||
-#include "camel-imap-private.h"
|
||||
#include "camel-imap-utils.h"
|
||||
#include "camel-imap-summary.h"
|
||||
|
||||
Index: camel/providers/imap/camel-imap-store.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-store.c,v
|
||||
retrieving revision 1.340.2.4
|
||||
diff -u -r1.340.2.4 camel-imap-store.c
|
||||
--- camel/providers/imap/camel-imap-store.c 1 May 2006 21:15:19 -0000 1.340.2.4
|
||||
+++ camel/providers/imap/camel-imap-store.c 19 May 2006 15:19:00 -0000
|
||||
@@ -58,7 +58,6 @@
|
||||
#include "camel-imap-command.h"
|
||||
#include "camel-imap-folder.h"
|
||||
#include "camel-imap-message-cache.h"
|
||||
-#include "camel-imap-private.h"
|
||||
#include "camel-imap-store-summary.h"
|
||||
#include "camel-imap-store.h"
|
||||
#include "camel-imap-summary.h"
|
||||
Index: camel/providers/imap/camel-imap-wrapper.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-wrapper.c,v
|
||||
retrieving revision 1.14
|
||||
diff -u -r1.14 camel-imap-wrapper.c
|
||||
--- camel/providers/imap/camel-imap-wrapper.c 15 Sep 2005 18:08:50 -0000 1.14
|
||||
+++ camel/providers/imap/camel-imap-wrapper.c 19 May 2006 15:19:00 -0000
|
||||
@@ -30,7 +30,6 @@
|
||||
|
||||
#include "camel-imap-folder.h"
|
||||
#include "camel-imap-wrapper.h"
|
||||
-#include "camel-imap-private.h"
|
||||
#include "camel-exception.h"
|
||||
#include "camel-stream-filter.h"
|
||||
#include "camel-mime-filter-basic.h"
|
||||
@@ -38,6 +37,17 @@
|
||||
#include "camel-mime-filter-charset.h"
|
||||
#include "camel-mime-part.h"
|
||||
|
||||
+#include "libedataserver/e-msgport.h"
|
||||
+
|
||||
+
|
||||
+struct _CamelImapWrapperPrivate {
|
||||
+ GMutex *lock;
|
||||
+};
|
||||
+
|
||||
+#define CAMEL_IMAP_WRAPPER_LOCK(f, l) (g_mutex_lock(((CamelImapWrapper *)f)->priv->l))
|
||||
+#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l) (g_mutex_unlock(((CamelImapWrapper *)f)->priv->l))
|
||||
+
|
||||
+
|
||||
static CamelDataWrapperClass *parent_class = NULL;
|
||||
|
||||
/* Returns the class for a CamelDataWrapper */
|
||||
@@ -68,10 +78,9 @@
|
||||
g_free (imap_wrapper->uid);
|
||||
if (imap_wrapper->part)
|
||||
g_free (imap_wrapper->part_spec);
|
||||
-
|
||||
-#ifdef ENABLE_THREADS
|
||||
+
|
||||
g_mutex_free (imap_wrapper->priv->lock);
|
||||
-#endif
|
||||
+
|
||||
g_free (imap_wrapper->priv);
|
||||
}
|
||||
|
||||
@@ -81,9 +90,7 @@
|
||||
CamelImapWrapper *imap_wrapper = CAMEL_IMAP_WRAPPER (object);
|
||||
|
||||
imap_wrapper->priv = g_new0 (struct _CamelImapWrapperPrivate, 1);
|
||||
-#ifdef ENABLE_THREADS
|
||||
imap_wrapper->priv->lock = g_mutex_new ();
|
||||
-#endif
|
||||
}
|
||||
|
||||
CamelType
|
16
imap-perf.patch
Normal file
16
imap-perf.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: camel/providers/imap/camel-imap-folder.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.c,v
|
||||
retrieving revision 1.358
|
||||
diff -u -p -r1.358 camel-imap-folder.c
|
||||
--- camel/providers/imap/camel-imap-folder.c 10 Jan 2006 07:56:47 -0000 1.358
|
||||
+++ camel/providers/imap/camel-imap-folder.c 21 Apr 2006 09:14:56 -0000
|
||||
@@ -2348,7 +2348,7 @@ imap_update_summary (CamelFolder *folder
|
||||
|
||||
CAMEL_SERVICE_ASSERT_LOCKED (store, connect_lock);
|
||||
if (store->server_level >= IMAP_LEVEL_IMAP4REV1)
|
||||
- header_spec = "HEADER";
|
||||
+ header_spec = "HEADER.FIELDS (" CAMEL_MESSAGE_INFO_HEADERS MAILING_LIST_HEADERS ")";
|
||||
else
|
||||
header_spec = "0";
|
||||
|
30
imap4-removal.diff
Normal file
30
imap4-removal.diff
Normal file
@ -0,0 +1,30 @@
|
||||
Index: configure.in
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/configure.in,v
|
||||
retrieving revision 1.160
|
||||
diff -u -p -r1.160 configure.in
|
||||
--- configure.in 20 Mar 2006 13:53:00 -0000 1.160
|
||||
+++ configure.in 24 Apr 2006 13:18:39 -0000
|
||||
@@ -1331,7 +1331,6 @@ camel/providers/groupwise/Makefile
|
||||
camel/providers/hula/Makefile
|
||||
camel/providers/imap/Makefile
|
||||
camel/providers/imapp/Makefile
|
||||
-camel/providers/imap4/Makefile
|
||||
camel/providers/local/Makefile
|
||||
camel/providers/nntp/Makefile
|
||||
camel/providers/pop3/Makefile
|
||||
Index: camel/providers/Makefile.am
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/camel/providers/Makefile.am,v
|
||||
retrieving revision 1.38
|
||||
diff -u -p -r1.38 Makefile.am
|
||||
--- camel/providers/Makefile.am 14 Nov 2005 19:15:31 -0000 1.38
|
||||
+++ camel/providers/Makefile.am 24 Apr 2006 13:18:39 -0000
|
||||
@@ -13,6 +13,6 @@ else
|
||||
SENDMAIL_DIR=sendmail
|
||||
endif
|
||||
|
||||
-SUBDIRS = pop3 $(SENDMAIL_DIR) smtp imap imap4 $(NNTP_DIR) local $(IMAPP_DIR) groupwise hula
|
||||
+SUBDIRS = pop3 $(SENDMAIL_DIR) smtp imap $(NNTP_DIR) local $(IMAPP_DIR) groupwise hula
|
||||
|
||||
|
10
implicit-declaration.diff
Normal file
10
implicit-declaration.diff
Normal file
@ -0,0 +1,10 @@
|
||||
--- docs/reference/addressbook/libebook/libebook.types
|
||||
+++ docs/reference/addressbook/libebook/libebook.types
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <libebook/e-book-listener.h>
|
||||
#include <libebook/e-book-view-listener.h>
|
||||
#include <libebook/e-contact.h>
|
||||
+#include <libebook/e-destination.h>
|
||||
#include <libebook/e-vcard.h>
|
||||
e_book_listener_get_type
|
||||
e_book_view_listener_get_type
|
11
libgnomeui-dep.patch
Normal file
11
libgnomeui-dep.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- evolution-data-server-1.8.0/configure.in 2006/09/30 05:44:59 1.3
|
||||
+++ evolution-data-server-1.8.0/configure.in 2006/09/30 05:46:47
|
||||
@@ -1227,7 +1227,7 @@
|
||||
AC_SUBST(IDL_INCLUDES)
|
||||
|
||||
AC_MSG_CHECKING(for libgnomeui server directory)
|
||||
-GNOMEUI_SERVERDIR="`$PKG_CONFIG --variable=libgnomeui_serverdir libgnomeui-2.0`"
|
||||
+GNOMEUI_SERVERDIR="/opt/gnome/lib/libgnomeui"
|
||||
AC_MSG_RESULT($GNOMEUI_SERVERDIR)
|
||||
AC_DEFINE_UNQUOTED(GNOMEUI_SERVERDIR, "$GNOMEUI_SERVERDIR", [Path where we can find gnome_segv2])
|
||||
|
16
nameselectorlist-keychange.diff
Normal file
16
nameselectorlist-keychange.diff
Normal file
@ -0,0 +1,16 @@
|
||||
Index: libedataserverui/e-name-selector-list.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/e-name-selector-list.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -p -r1.1 e-name-selector-list.c
|
||||
--- libedataserverui/e-name-selector-list.c 16 Jan 2006 13:32:30 -0000 1.1
|
||||
+++ libedataserverui/e-name-selector-list.c 24 Apr 2006 08:31:57 -0000
|
||||
@@ -216,7 +216,7 @@ enl_entry_key_press_event (ENameSelector
|
||||
GdkEventKey *event,
|
||||
gpointer dummy)
|
||||
{
|
||||
- if ( (event->state & GDK_CONTROL_MASK) && (event->keyval == GDK_Right)) {
|
||||
+ if ( (event->state & GDK_CONTROL_MASK) && (event->keyval == GDK_Down)) {
|
||||
enl_popup_position (list);
|
||||
gtk_widget_show_all (GTK_WIDGET (list->popup));
|
||||
enl_popup_grab (list);
|
21
nss-nspr.patch
Normal file
21
nss-nspr.patch
Normal file
@ -0,0 +1,21 @@
|
||||
--- configure.in
|
||||
+++ configure.in
|
||||
@@ -288,15 +288,15 @@
|
||||
fi
|
||||
|
||||
if test "x${check_manually}" = "xno"; then
|
||||
- PKG_CHECK_MODULES(NSS, mozilla-nss, have_nss="yes", have_nss="no")
|
||||
+ PKG_CHECK_MODULES(NSS, nss, have_nss="yes", have_nss="no")
|
||||
if test "x${have_nss}" = "xyes"; then
|
||||
msg_ssl="yes (Mozilla NSS)"
|
||||
if test "x$enable_smime" = "xyes"; then
|
||||
AC_DEFINE(ENABLE_SMIME,1,[Define if SMIME should be enabled])
|
||||
msg_smime="yes (Mozilla NSS)"
|
||||
fi
|
||||
- mozilla_nspr="mozilla-nspr"
|
||||
- mozilla_nss="mozilla-nss"
|
||||
+ mozilla_nspr="nspr"
|
||||
+ mozilla_nss="nss"
|
||||
AC_DEFINE(HAVE_NSS,1,[Define if you have NSS])
|
||||
AC_DEFINE(HAVE_SSL,1,[Define if you have a supported SSL library])
|
||||
MANUAL_NSPR_CFLAGS=""
|
384
patch-for-random-eds-addr-crashes.patch
Normal file
384
patch-for-random-eds-addr-crashes.patch
Normal file
@ -0,0 +1,384 @@
|
||||
--- addressbook/backends/groupwise/e-book-backend-groupwise.c.orig 2006-01-10 08:54:45.000000000 +0100
|
||||
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 2006-03-23 16:10:25.226981271 +0100
|
||||
@@ -2330,6 +2330,8 @@ static EDataBookView *
|
||||
find_book_view (EBookBackendGroupwise *ebgw)
|
||||
{
|
||||
EList *views = e_book_backend_get_book_views (E_BOOK_BACKEND (ebgw));
|
||||
+ if (!views)
|
||||
+ return NULL;
|
||||
EIterator *iter = e_list_get_iterator (views);
|
||||
EDataBookView *rv = NULL;
|
||||
|
||||
@@ -2348,28 +2350,28 @@ find_book_view (EBookBackendGroupwise *e
|
||||
|
||||
static void
|
||||
add_sequence_to_cache (EBookBackendCache *cache,
|
||||
- guint first_sequence,
|
||||
- guint last_sequence,
|
||||
- guint last_po_rebuild_time)
|
||||
+ gdouble first_sequence,
|
||||
+ gdouble last_sequence,
|
||||
+ gdouble last_po_rebuild_time)
|
||||
{
|
||||
gchar *tmp;
|
||||
|
||||
/* This is the system address book. Let try add the sequence to maintain deltas */
|
||||
- tmp = g_strdup_printf("%d", first_sequence);
|
||||
+ tmp = g_strdup_printf("%lf", first_sequence);
|
||||
if (!e_file_cache_get_object (E_FILE_CACHE(cache), "firstSequence"))
|
||||
e_file_cache_add_object (E_FILE_CACHE(cache), "firstSequence", tmp);
|
||||
else
|
||||
e_file_cache_replace_object (E_FILE_CACHE(cache), "firstSequence", tmp);
|
||||
g_free (tmp);
|
||||
|
||||
- tmp = g_strdup_printf("%d", last_sequence);
|
||||
+ tmp = g_strdup_printf("%lf", last_sequence);
|
||||
if (!e_file_cache_get_object (E_FILE_CACHE(cache), "lastSequence"))
|
||||
e_file_cache_add_object (E_FILE_CACHE(cache), "lastSequence", tmp);
|
||||
else
|
||||
e_file_cache_replace_object (E_FILE_CACHE(cache), "lastSequence", tmp);
|
||||
g_free (tmp);
|
||||
|
||||
- tmp = g_strdup_printf("%d", last_po_rebuild_time);
|
||||
+ tmp = g_strdup_printf("%lf", last_po_rebuild_time);
|
||||
if (!e_file_cache_get_object (E_FILE_CACHE(cache), "lastTimePORebuild"))
|
||||
e_file_cache_add_object (E_FILE_CACHE(cache), "lastTimePORebuild", tmp);
|
||||
else
|
||||
@@ -2439,6 +2441,10 @@ build_cache (EBookBackendGroupwise *ebgw
|
||||
GTimeVal tstart, tend;
|
||||
unsigned long diff;
|
||||
|
||||
+ if(!ebgw)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ printf("build cache\n");
|
||||
if (enable_debug) {
|
||||
g_get_current_time(&start);
|
||||
printf("Building the cache for %s \n", ebgw->priv->book_name);
|
||||
@@ -2456,10 +2462,11 @@ build_cache (EBookBackendGroupwise *ebgw
|
||||
if (book_view) {
|
||||
closure = get_closure (book_view);
|
||||
bonobo_object_ref (book_view);
|
||||
-
|
||||
- g_mutex_lock (closure->mutex);
|
||||
- g_cond_signal (closure->cond);
|
||||
- g_mutex_unlock (closure->mutex);
|
||||
+ if (closure) {
|
||||
+ g_mutex_lock (closure->mutex);
|
||||
+ g_cond_signal (closure->cond);
|
||||
+ g_mutex_unlock (closure->mutex);
|
||||
+ }
|
||||
}
|
||||
|
||||
e_file_cache_freeze_changes (E_FILE_CACHE (priv->cache));
|
||||
@@ -2590,6 +2597,10 @@ update_cache (EBookBackendGroupwise *ebg
|
||||
GTimeVal start, end;
|
||||
unsigned long diff;
|
||||
|
||||
+ if (!ebgw)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ printf("Inside update cache\n");
|
||||
if (enable_debug) {
|
||||
g_get_current_time(&start);
|
||||
printf("updating cache for %s\n", ebgw->priv->book_name);
|
||||
@@ -2599,10 +2610,11 @@ update_cache (EBookBackendGroupwise *ebg
|
||||
if (book_view) {
|
||||
closure = get_closure (book_view);
|
||||
bonobo_object_ref (book_view);
|
||||
-
|
||||
- g_mutex_lock (closure->mutex);
|
||||
- g_cond_signal (closure->cond);
|
||||
- g_mutex_unlock (closure->mutex);
|
||||
+ if (closure) {
|
||||
+ g_mutex_lock (closure->mutex);
|
||||
+ g_cond_signal (closure->cond);
|
||||
+ g_mutex_unlock (closure->mutex);
|
||||
+ }
|
||||
}
|
||||
|
||||
cache_file_name = e_file_cache_get_filename (E_FILE_CACHE(ebgw->priv->cache));
|
||||
@@ -2680,7 +2692,6 @@ update_cache (EBookBackendGroupwise *ebg
|
||||
printf("updating the cache for %s complated in %ld.%03ld seconds for %d contacts\n",
|
||||
ebgw->priv->book_name, diff / 1000, diff % 1000, contact_num);
|
||||
}
|
||||
-
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -2688,8 +2699,8 @@ static gboolean
|
||||
update_address_book_deltas (EBookBackendGroupwise *ebgw)
|
||||
{
|
||||
int status, contact_num = 0;
|
||||
- guint server_first_sequence = -1, server_last_sequence = -1, server_last_po_rebuild_time = -1;
|
||||
- guint cache_last_sequence = -1, cache_last_po_rebuild_time = -1;
|
||||
+ gdouble server_first_sequence = -1, server_last_sequence = -1, server_last_po_rebuild_time = -1;
|
||||
+ gdouble cache_last_sequence = -1, cache_last_po_rebuild_time = -1;
|
||||
const char *cache_obj;
|
||||
char *tmp, *count, *sequence, *status_msg;
|
||||
GList *add_list = NULL, *delete_list = NULL;
|
||||
@@ -2697,6 +2708,9 @@ update_address_book_deltas (EBookBackend
|
||||
EDataBookView *book_view;
|
||||
GroupwiseBackendSearchClosure *closure;
|
||||
|
||||
+ if (!ebgw)
|
||||
+ return FALSE;
|
||||
+
|
||||
EBookBackendGroupwisePrivate *priv = ebgw->priv;
|
||||
EBookBackendCache *cache = priv->cache;
|
||||
|
||||
@@ -2727,11 +2741,11 @@ update_address_book_deltas (EBookBackend
|
||||
/* Read the last sequence and last poa rebuild time from cache */
|
||||
cache_obj = e_file_cache_get_object (E_FILE_CACHE (cache), "lastSequence");
|
||||
if (cache_obj)
|
||||
- cache_last_sequence = atoi (cache_obj);
|
||||
+ cache_last_sequence = strtod (cache_obj, NULL);
|
||||
|
||||
cache_obj = e_file_cache_get_object (E_FILE_CACHE (cache), "lastTimePORebuild");
|
||||
if (cache_obj)
|
||||
- cache_last_po_rebuild_time = atoi (cache_obj);
|
||||
+ cache_last_po_rebuild_time = strtod (cache_obj, NULL);
|
||||
|
||||
/* check whether the all the sequences are available and also whether the PO is rebuilt */
|
||||
if (server_first_sequence > cache_last_sequence || cache_last_sequence == -1 ||
|
||||
@@ -2758,14 +2772,15 @@ update_address_book_deltas (EBookBackend
|
||||
if (book_view) {
|
||||
closure = get_closure (book_view);
|
||||
bonobo_object_ref (book_view);
|
||||
-
|
||||
- g_mutex_lock (closure->mutex);
|
||||
- g_cond_signal (closure->cond);
|
||||
- g_mutex_unlock (closure->mutex);
|
||||
+ if (closure){
|
||||
+ g_mutex_lock (closure->mutex);
|
||||
+ g_cond_signal (closure->cond);
|
||||
+ g_mutex_unlock (closure->mutex);
|
||||
+ }
|
||||
}
|
||||
|
||||
/* update the cache */
|
||||
- sequence = g_strdup_printf ("%d", cache_last_sequence +1);
|
||||
+ sequence = g_strdup_printf ("%lf", cache_last_sequence +1);
|
||||
count = g_strdup_printf ("%d", CURSOR_ITEM_LIMIT);
|
||||
|
||||
/* load summary file */
|
||||
@@ -2782,6 +2797,7 @@ update_address_book_deltas (EBookBackend
|
||||
e_file_cache_freeze_changes (E_FILE_CACHE (cache));
|
||||
|
||||
while (cache_last_sequence < server_last_sequence) {
|
||||
+ printf("Calling get_items_delta\n");
|
||||
e_gw_connection_get_items_delta (priv->cnc,
|
||||
ebgw->priv->container_id,
|
||||
"name email sync", count,
|
||||
@@ -2793,6 +2809,8 @@ update_address_book_deltas (EBookBackend
|
||||
printf("sequence differs but no changes found !!!\n");
|
||||
break;
|
||||
}
|
||||
+ printf("add_list size:%d\n", g_list_length(add_list));
|
||||
+ printf("delete_list size:%d\n", g_list_length(delete_list));
|
||||
|
||||
for (; add_list != NULL; add_list = g_list_next(add_list)) {
|
||||
const char *id;
|
||||
@@ -2861,15 +2879,15 @@ update_address_book_deltas (EBookBackend
|
||||
|
||||
/* cache is updated, now adding the sequence information to the cache */
|
||||
|
||||
- tmp = g_strdup_printf("%d", server_first_sequence);
|
||||
+ tmp = g_strdup_printf("%lf", server_first_sequence);
|
||||
e_file_cache_replace_object (E_FILE_CACHE(cache), "firstSequence", tmp);
|
||||
g_free (tmp);
|
||||
|
||||
- tmp = g_strdup_printf("%d", server_last_sequence);
|
||||
+ tmp = g_strdup_printf("%lf", server_last_sequence);
|
||||
e_file_cache_replace_object (E_FILE_CACHE(cache), "lastSequence", tmp);
|
||||
g_free (tmp);
|
||||
|
||||
- tmp = g_strdup_printf("%d", server_last_po_rebuild_time);
|
||||
+ tmp = g_strdup_printf("%lf", server_last_po_rebuild_time);
|
||||
e_file_cache_replace_object (E_FILE_CACHE(cache), "lastTimePORebuild", tmp);
|
||||
g_free (tmp);
|
||||
|
||||
@@ -2940,7 +2958,7 @@ e_book_backend_groupwise_authenticate_us
|
||||
gboolean is_writable;
|
||||
const char *cache_refresh_interval_set;
|
||||
int cache_refresh_interval = CACHE_REFRESH_INTERVAL;
|
||||
-
|
||||
+
|
||||
printf ("authenticate user ............\n");
|
||||
ebgw = E_BOOK_BACKEND_GROUPWISE (backend);
|
||||
priv = ebgw->priv;
|
||||
@@ -2962,6 +2980,7 @@ e_book_backend_groupwise_authenticate_us
|
||||
case GNOME_Evolution_Addressbook_MODE_REMOTE:
|
||||
|
||||
if (priv->cnc) { /*we have already authenticated to server */
|
||||
+ printf("already authenticated\n");
|
||||
e_data_book_respond_authenticate_user (book, opid, GNOME_Evolution_Addressbook_Success);
|
||||
return;
|
||||
}
|
||||
@@ -2979,6 +2998,8 @@ e_book_backend_groupwise_authenticate_us
|
||||
|
||||
id = NULL;
|
||||
is_writable = FALSE;
|
||||
+ if(priv->book_name)
|
||||
+ printf("book_name:%s\n", priv->book_name);
|
||||
status = e_gw_connection_get_address_book_id (priv->cnc, priv->book_name, &id, &is_writable);
|
||||
if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
status = e_gw_connection_get_address_book_id (priv->cnc, priv->book_name, &id, &is_writable);
|
||||
@@ -3015,17 +3036,23 @@ e_book_backend_groupwise_authenticate_us
|
||||
SUMMARY_FLUSH_TIMEOUT);
|
||||
|
||||
if (e_book_backend_cache_is_populated (priv->cache)) {
|
||||
- if (priv->is_writable)
|
||||
+ printf("cache is populated\n");
|
||||
+ if (priv->is_writable){
|
||||
+ printf("is writable\n");
|
||||
+ printf("creating update_cache thread\n");
|
||||
g_thread_create ((GThreadFunc) update_cache, ebgw, FALSE, NULL);
|
||||
+ }
|
||||
else if (priv->marked_for_offline) {
|
||||
+ printf("marked for offline\n");
|
||||
GThread *t;
|
||||
+ printf("creating update_address_book_deltas thread\n");
|
||||
|
||||
t = g_thread_create ((GThreadFunc) update_address_book_deltas, ebgw, TRUE, NULL);
|
||||
|
||||
/* spawn a thread to update the system address book cache
|
||||
* at given intervals
|
||||
*/
|
||||
- cache_refresh_interval_set = g_getenv ("BOOK_CACHE_REFESH_INTERVAL");
|
||||
+ cache_refresh_interval_set = g_getenv ("BOOK_CACHE_REFRESH_INTERVAL");
|
||||
if (cache_refresh_interval_set) {
|
||||
cache_refresh_interval = g_ascii_strtod (cache_refresh_interval_set,
|
||||
NULL); /* use this */
|
||||
@@ -3043,12 +3070,16 @@ e_book_backend_groupwise_authenticate_us
|
||||
}
|
||||
else if (priv->is_writable) { /* for personal books we always cache */
|
||||
/* Personal address book and frequent contacts */
|
||||
+ printf("else if is _writable");
|
||||
+ printf("build_cahe thread");
|
||||
g_thread_create ((GThreadFunc) build_cache, ebgw, FALSE, NULL);
|
||||
}
|
||||
else if(priv->marked_for_offline) {
|
||||
+ printf("else if marked_for_offline\n");
|
||||
GThread *t;
|
||||
/* System address book */
|
||||
/* cache is not populated and book is not writable and marked for offline usage */
|
||||
+ printf("creating update_address_book_deltas thread\n");
|
||||
t = g_thread_create ((GThreadFunc) update_address_book_deltas, ebgw, TRUE, NULL);
|
||||
g_thread_join (t);
|
||||
/* set the cache refresh time */
|
||||
@@ -3429,6 +3460,7 @@ e_book_backend_groupwise_init (EBookBack
|
||||
priv->marked_for_offline = FALSE;
|
||||
priv->use_ssl = NULL;
|
||||
priv->cache=NULL;
|
||||
+ priv->cnc = NULL;
|
||||
priv->original_uri = NULL;
|
||||
priv->cache_timeout = 0;
|
||||
priv->reserved1 = NULL;
|
||||
--- servers/groupwise/e-gw-connection.c.orig 2006-03-23 16:08:44.842634384 +0100
|
||||
+++ servers/groupwise/e-gw-connection.c 2006-03-23 16:10:25.228981338 +0100
|
||||
@@ -685,8 +685,8 @@ e_gw_connection_get_container_id (EGwCon
|
||||
}
|
||||
|
||||
EGwConnectionStatus
|
||||
-e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, guint *first_sequence,
|
||||
- guint *last_sequence, guint *last_po_rebuild_time )
|
||||
+e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, gdouble *first_sequence,
|
||||
+ gdouble *last_sequence, gdouble *last_po_rebuild_time )
|
||||
{
|
||||
SoupSoapMessage *msg;
|
||||
SoupSoapResponse *response;
|
||||
@@ -734,21 +734,21 @@ e_gw_connection_get_items_delta_info (EG
|
||||
subparam = soup_soap_parameter_get_first_child_by_name (param, "firstSequence");
|
||||
|
||||
if (subparam)
|
||||
- *first_sequence = soup_soap_parameter_get_int_value(subparam);
|
||||
+ *first_sequence = strtod (soup_soap_parameter_get_string_value(subparam), NULL);
|
||||
else
|
||||
*first_sequence = -1;
|
||||
|
||||
subparam = soup_soap_parameter_get_first_child_by_name (param, "lastSequence");
|
||||
|
||||
if (subparam)
|
||||
- *last_sequence = soup_soap_parameter_get_int_value(subparam);
|
||||
+ *last_sequence = strtod (soup_soap_parameter_get_string_value(subparam), NULL);
|
||||
else
|
||||
*last_sequence = -1;
|
||||
|
||||
subparam = soup_soap_parameter_get_first_child_by_name (param, "lastTimePORebuild");
|
||||
|
||||
if (subparam)
|
||||
- *last_po_rebuild_time = soup_soap_parameter_get_int_value(subparam);
|
||||
+ *last_po_rebuild_time = strtod (soup_soap_parameter_get_string_value(subparam), NULL);
|
||||
else
|
||||
*last_po_rebuild_time = -1;
|
||||
|
||||
Index: servers/groupwise/e-gw-connection.h
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.h,v
|
||||
retrieving revision 1.68
|
||||
diff -u -p -r1.68 e-gw-connection.h
|
||||
--- servers/groupwise/e-gw-connection.h 31 Aug 2005 04:26:07 -0000 1.68
|
||||
+++ servers/groupwise/e-gw-connection.h 20 Mar 2006 14:11:38 -0000
|
||||
@@ -100,7 +100,7 @@ EGwConnectionStatus e_gw_connection_get_
|
||||
EGwConnectionStatus e_gw_connection_send_item (EGwConnection *cnc, EGwItem *item, GSList **id_list);
|
||||
EGwConnectionStatus e_gw_connection_remove_item (EGwConnection *cnc, const char *container, const char *id);
|
||||
EGwConnectionStatus e_gw_connection_remove_items (EGwConnection *cnc, const char *container, GList *item_ids);
|
||||
-EGwConnectionStatus e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, guint *first_sequence, guint *last_sequence, guint *last_po_rebuild_time);
|
||||
+EGwConnectionStatus e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, gdouble *first_sequence, gdouble *last_sequence, gdouble *last_po_rebuild_time);
|
||||
EGwConnectionStatus e_gw_connection_get_items_delta (EGwConnection *cnc, const char *container, const char *view, const char *count, const char * start_sequence, GList **add_list, GList **delete_list);
|
||||
|
||||
|
||||
|
||||
--- addressbook/libedata-book/e-data-book.c.orig 2005-05-14 08:36:47.000000000 +0200
|
||||
+++ addressbook/libedata-book/e-data-book.c 2006-03-23 16:10:48.391753634 +0100
|
||||
@@ -912,7 +912,7 @@ e_data_book_construct (EDataBook
|
||||
|
||||
g_object_ref (source);
|
||||
|
||||
- priv->backend = backend;
|
||||
+ priv->backend = g_object_ref(backend);
|
||||
priv->source = source;
|
||||
}
|
||||
|
||||
@@ -965,6 +965,7 @@ e_data_book_dispose (GObject *object)
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
g_object_unref (book->priv->source);
|
||||
+ g_object_unref (book->priv->backend);
|
||||
g_free (book->priv);
|
||||
book->priv = NULL;
|
||||
}
|
||||
--- libedataserver/e-list.c.orig 2005-11-17 12:38:47.000000000 +0100
|
||||
+++ libedataserver/e-list.c 2006-03-23 16:10:48.392753667 +0100
|
||||
@@ -74,10 +74,11 @@ e_list_duplicate (EList *old)
|
||||
EIterator *
|
||||
e_list_get_iterator (EList *list)
|
||||
{
|
||||
- EIterator *iterator;
|
||||
+ EIterator *iterator = NULL;
|
||||
g_return_val_if_fail (list != NULL, NULL);
|
||||
iterator = e_list_iterator_new(list);
|
||||
- list->iterators = g_list_append(list->iterators, iterator);
|
||||
+ if (iterator)
|
||||
+ list->iterators = g_list_append(list->iterators, iterator);
|
||||
return iterator;
|
||||
}
|
||||
|
||||
--- libedataserver/e-list-iterator.c.orig 2005-11-17 12:38:47.000000000 +0100
|
||||
+++ libedataserver/e-list-iterator.c 2006-03-23 16:10:48.392753667 +0100
|
||||
@@ -66,11 +66,13 @@ e_list_iterator_init (EListIterator *lis
|
||||
EIterator *
|
||||
e_list_iterator_new (EList *list)
|
||||
{
|
||||
- EListIterator *iterator;
|
||||
+ EListIterator *iterator = NULL;
|
||||
|
||||
g_return_val_if_fail (list != NULL, NULL);
|
||||
|
||||
iterator = g_object_new (E_TYPE_LIST_ITERATOR, NULL);
|
||||
+ if (!iterator)
|
||||
+ return NULL;
|
||||
iterator->list = list;
|
||||
g_object_ref(list);
|
||||
iterator->iterator = list->list;
|
Loading…
Reference in New Issue
Block a user