From 88bb994db3ce9133196adcdf2e0bf0e0faa07e00 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Tue, 26 Oct 1999 17:26:58 +0000 Subject: Workaround. svn path=/trunk/; revision=2638 --- NEWS | 4 ++++ imap.c | 23 ++++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index c041549a..3a6bd86e 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,10 @@ (The `lines' figures total .c, .h, .l, and .y files under version control.) +* Grant Edwards's patch to correct NTLM behavior. +* In IMAP, set Seen flag explicity when keep is on; works around flaky + servers that don't set Seen on a body fetch. + fetchmail-5.1.2 (Thu Oct 7 09:46:07 EDT 1999), 17906 lines: * Joe Loughry sent a patch to handle multihomed machines. * Changed mimedecode default to `off'; it seems that doing RFC2047 decoding diff --git a/imap.c b/imap.c index 128d1e0f..3039039f 100644 --- a/imap.c +++ b/imap.c @@ -982,13 +982,7 @@ int imap_getauth(int sock, struct query *ctl, char *greeting) { if (outlevel >= O_DEBUG) report (stdout, _("NTLM authentication is supported\n")); - if ((ok = do_imap_ntlm (sock, ctl))) - { - if (outlevel >= O_MONITOR) - report (stdout, "IMAP> *\n"); - SockWrite (sock, "*\r\n", 3); - } - return ok; + return do_imap_ntlm (sock, ctl); } #endif /* NTLM_ENABLE */ @@ -1257,6 +1251,21 @@ static int imap_trail(int sock, struct query *ctl, int number) /* UW IMAP returns "OK FETCH", Cyrus returns "OK Completed" */ if (strstr(buf, "OK")) break; + + /* + * We've had a report of one server (not yet identified) that + * fails to set SEEN on a body fetch. This becomes an issue when + * keep is on, because seen messages aren't deleted and get + * refetched on each poll. As a workaround, if keep is on + * we set the Seen flag explicitly. + */ + if (ctl->keep) + if ((ok = gen_transact(sock, + imap_version == IMAP4 + ? "STORE %d +FLAGS.SILENT (\\Seen)" + : "STORE %d +FLAGS (\\Seen)", + number))) + return(ok); } return(PS_SUCCESS); -- cgit v1.2.3