diff options
author | marcus <marcus@FreeBSD.org> | 2005-02-11 15:34:14 +0800 |
---|---|---|
committer | marcus <marcus@FreeBSD.org> | 2005-02-11 15:34:14 +0800 |
commit | eee36c4ba639ccf8ab9ba440932c535ebedfd48d (patch) | |
tree | 79ade537266433ca2dcaa158531898c319fae7ef | |
parent | 8cbfcc867a5a53cd11d67cb727686d16dd978a4a (diff) | |
download | freebsd-ports-gnome-eee36c4ba639ccf8ab9ba440932c535ebedfd48d.tar.gz freebsd-ports-gnome-eee36c4ba639ccf8ab9ba440932c535ebedfd48d.tar.zst freebsd-ports-gnome-eee36c4ba639ccf8ab9ba440932c535ebedfd48d.zip |
Fix a connection hang when trying to access a Lotus Notes IMAP account.
PR: 77076
Obtained from: Ximian bugzilla (http://bugzilla.ximian.com/show_bug.cgi?id=70556)
-rw-r--r-- | mail/evolution/Makefile | 2 | ||||
-rw-r--r-- | mail/evolution/files/patch-lotus-imap | 92 |
2 files changed, 93 insertions, 1 deletions
diff --git a/mail/evolution/Makefile b/mail/evolution/Makefile index 780dedfa79ef..273fff970ebb 100644 --- a/mail/evolution/Makefile +++ b/mail/evolution/Makefile @@ -7,7 +7,7 @@ PORTNAME= evolution PORTVERSION= 2.0.3 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= mail gnome MASTER_SITES= ${MASTER_SITE_GNOME} MASTER_SITE_SUBDIR= sources/${PORTNAME}/2.0 diff --git a/mail/evolution/files/patch-lotus-imap b/mail/evolution/files/patch-lotus-imap new file mode 100644 index 000000000000..825329b53057 --- /dev/null +++ b/mail/evolution/files/patch-lotus-imap @@ -0,0 +1,92 @@ +Index: camel/ChangeLog +=================================================================== +RCS file: /cvs/gnome/evolution/camel/ChangeLog,v +retrieving revision 1.2251.2.28 +diff -u -p -r1.2251.2.28 ChangeLog +--- camel/ChangeLog 3 Dec 2004 03:03:02 -0000 1.2251.2.28 ++++ camel/ChangeLog 23 Dec 2004 07:23:55 -0000 +@@ -1,3 +1,12 @@ ++2004-12-23 Not Zed <NotZed@Ximian.com> ++ ++ ** See bug #70556. ++ ++ * providers/imap/camel-imap-command.c (imap_read_untagged): scan ++ the non-literal contnet for s-expression brackets, and if we seem ++ to be outside of one, don't try the 'blank line after literal' ++ hack. ++ + 2004-12-02 Not Zed <NotZed@Ximian.com> + + ** See bug #69533. +Index: camel/providers/imap/camel-imap-command.c +=================================================================== +RCS file: /cvs/gnome/evolution/camel/providers/imap/camel-imap-command.c,v +retrieving revision 1.60.26.2 +diff -u -p -r1.60.26.2 camel-imap-command.c +--- camel/providers/imap/camel-imap-command.c 3 Dec 2004 03:03:02 -0000 1.60.26.2 ++++ camel/providers/imap/camel-imap-command.c 23 Dec 2004 07:23:56 -0000 +@@ -43,7 +43,7 @@ + #include <camel/camel-private.h> + #include <camel/camel-utf8.h> + #include <camel/camel-session.h> +- ++#include <camel/camel-debug.h> + + extern int camel_verbose_debug; + +@@ -409,7 +409,7 @@ imap_read_response (CamelImapStore *stor + static char * + imap_read_untagged (CamelImapStore *store, char *line, CamelException *ex) + { +- int fulllen, ldigits, nread, i; ++ int fulllen, ldigits, nread, i, sexp = 0; + unsigned int length; + GPtrArray *data; + GString *str; +@@ -431,6 +431,18 @@ imap_read_untagged (CamelImapStore *stor + p = strrchr (str->str, '{'); + if (!p) + 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 ++ we do no other parsing at this level. ++ TODO: handle quoted strings? */ ++ for (s=str->str; s<p; s++) { ++ if (*s == '(') ++ sexp++; ++ else if (*s == ')') ++ sexp--; ++ } + + length = strtoul (p + 1, &end, 10); + if (*end != '}' || *(end + 1) || end == p + 1 || length >= UINT_MAX - 2) +@@ -460,6 +472,12 @@ imap_read_untagged (CamelImapStore *stor + goto lose; + } + str->str[length + 1] = '\0'; ++ ++ if (camel_debug("imap")) { ++ printf("Literal: -->"); ++ fwrite(str->str+1, 1, length, stdout); ++ printf("<--\n"); ++ } + + /* Fix up the literal, turning CRLFs into LF. Also, if + * we find any embedded NULs, strip them. This is +@@ -505,10 +523,11 @@ imap_read_untagged (CamelImapStore *stor + if (camel_imap_store_readline (store, &line, ex) < 0) + goto lose; + +- /* MAJOR HACK ALERT, gropuwise sometimes sends an extra blank line after literals, check that here */ +- if (line[0] == 0) ++ /* MAJOR HACK ALERT, gropuwise sometimes sends an extra blank line after literals, check that here ++ But only do it if we're inside an sexpression */ ++ if (line[0] == 0 && sexp > 0) + g_warning("Server sent empty line after a literal, assuming in error"); +- } while (line[0] == 0); ++ } while (line[0] == 0 && sexp > 0); + } + + /* Now reassemble the data. */ |