aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>1999-09-23 12:42:38 +0000
committerEric S. Raymond <esr@thyrsus.com>1999-09-23 12:42:38 +0000
commit7db729877dd255029ce846414ddab872ac8dc146 (patch)
tree2b25a47b5823658788bf2990688802eb5f9d9053
parent33d9765dd84fd3846b833202aa495c7725e88662 (diff)
downloadfetchmail-7db729877dd255029ce846414ddab872ac8dc146.tar.gz
fetchmail-7db729877dd255029ce846414ddab872ac8dc146.tar.bz2
fetchmail-7db729877dd255029ce846414ddab872ac8dc146.zip
Workaround for GroupWise.
svn path=/trunk/; revision=2586
-rw-r--r--NEWS2
-rw-r--r--driver.c9
-rw-r--r--fetchmail-FAQ.html19
-rwxr-xr-xfetchmailconf14
-rw-r--r--imap.c8
5 files changed, 35 insertions, 17 deletions
diff --git a/NEWS b/NEWS
index 4b45d719..97606944 100644
--- a/NEWS
+++ b/NEWS
@@ -11,7 +11,7 @@
fetchmail-5.1.1 ():
* Consistently show dummy arguments on manual page.
* Fix lexer to permit `antispam -1'.
-* Added fetchmailconf and FAQ warnings about Novell GroupWise.
+* Added workaround, fetchmailconf warning, and FAQ about Novell GroupWise.
* John Cigas's delay patch to avoid a timing problem with plugins.
There are 266 people on fetchmail-friends and 444 on fetchmail-announce.
diff --git a/driver.c b/driver.c
index bbcaa768..4c9a05fc 100644
--- a/driver.c
+++ b/driver.c
@@ -1962,6 +1962,15 @@ const int maxfetch; /* maximum number of messages to fetch */
{
if ((ok=(protocol->fetch_body)(mailserver_socket,ctl,num,&len)))
goto cleanUp;
+ /*
+ * Work around a bug in Novell's
+ * broken GroupWise IMAP server;
+ * its body FETCH response is missing
+ * the required length for the data
+ * string. This violates RFC2060.
+ */
+ if (len == -1)
+ len = msgsizes[num-1] - msglen;
if (outlevel > O_SILENT && !wholesize)
report_complete(stdout,
_(" (%d body octets) "), len);
diff --git a/fetchmail-FAQ.html b/fetchmail-FAQ.html
index afb0b8e8..3bd99670 100644
--- a/fetchmail-FAQ.html
+++ b/fetchmail-FAQ.html
@@ -10,7 +10,7 @@
<table width="100%" cellpadding=0><tr>
<td width="30%">Back to <a href="index.html">Fetchmail Home Page</a>
<td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a>
-<td width="30%" align=right>$Date: 1999/09/23 02:00:29 $
+<td width="30%" align=right>$Date: 1999/09/23 12:42:37 $
</table>
<HR>
<H1>Frequently Asked Questions About Fetchmail</H1>
@@ -1448,14 +1448,15 @@ flag to ensure that it's recovered on the next cycle.<p>
<hr>
<h2><a name="S10">S10. How can I use fetchmail with Novell GroupWise?</a></h2>
-You can't. The Novell GroupWise IMAP server would be better named
-GroupFoolish; it is (according to the designer of IMAP) unusably
-broken. The specific problem is that it doesn't include a required
-content length in its BODY[TEXT] response, so fetchmail can't know how
-much content to fetch. <p>
+The Novell GroupWise IMAP server would be better named GroupFoolish;
+it is (according to the designer of IMAP) unusably broken. Among
+other things, it doesn't include a required content length in its
+BODY[TEXT] response.<p>
-If GroupWise is capable of supporting POP3, and that implementation
-isn't also broken, some lucky winner should tell me.<p>
+Fetchmail works around this problem, but we strongly recommend voting
+with your dollars for a server that isn't brain-dead. If you stick
+with code as shoddy as GroupWise seems to be, you will probably pay
+for it with other problems.<p>
<hr>
<h2><a name="K1">K1. How can I use fetchmail with SOCKS?</a></h2>
@@ -2492,7 +2493,7 @@ inactivity timeout.<p>
<table width="100%" cellpadding=0><tr>
<td width="30%">Back to <a href="index.html">Fetchmail Home Page</a>
<td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a>
-<td width="30%" align=right>$Date: 1999/09/23 02:00:29 $
+<td width="30%" align=right>$Date: 1999/09/23 12:42:37 $
</table>
<P><ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
diff --git a/fetchmailconf b/fetchmailconf
index d64910e9..a02b5337 100755
--- a/fetchmailconf
+++ b/fetchmailconf
@@ -1127,11 +1127,15 @@ this server.
"""
if string.find(greetline, "GroupWise") > 0:
warnings = warnings + """
-You appear to be using the Novell GroupWise IMAP server. This server would
-be better named GroupFoolish; according to the designer of IMAP it is unusably
-broken. The specific problem is that it doesn't include a required content
-length in its BODY[TEXT] response, so fetchmail can't know how much content
-to fetch.
+The Novell GroupWise IMAP server would be better named GroupFoolish;
+it is (according to the designer of IMAP) unusably broken. Among
+other things, it doesn't include a required content length in its
+BODY[TEXT] response.<p>
+
+Fetchmail works around this problem, but we strongly recommend voting
+with your dollars for a server that isn't brain-dead. If you stick
+with code as shoddy as GroupWise seems to be, you will probably pay
+for it with other problems.<p>
"""
diff --git a/imap.c b/imap.c
index ff2d052a..2405bb61 100644
--- a/imap.c
+++ b/imap.c
@@ -1221,11 +1221,15 @@ static int imap_fetch_body(int sock, struct query *ctl, int number, int *lenp)
if (num != number)
return(PS_ERROR);
- /* try to extract a length */
+ /*
+ * Try to extract a length from the FETCH response. RFC2060 requires
+ * it to be present, but at least one IMAP server (Novell GroupWise)
+ * botches this.
+ */
if ((cp = strchr(buf, '{')))
*lenp = atoi(cp + 1);
else
- *lenp = 0;
+ *lenp = -1; /* missing length part in FETCH reponse */
return(PS_SUCCESS);
}