From 5c42b7406d84d51c5a15b1cf5b25f63c7837af64 Mon Sep 17 00:00:00 2001 From: Matthias Andree Date: Sat, 7 Jan 2006 21:56:35 +0000 Subject: [PATCH] Revise Maillennium workaround so that it is reported only once per server, in daemon mode. svn path=/branches/BRANCH_6-3/; revision=4613 --- fetchmail.h | 8 ++++++++ pop3.c | 23 ++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/fetchmail.h b/fetchmail.h index a638df9e..dfafd2b5 100644 --- a/fetchmail.h +++ b/fetchmail.h @@ -277,8 +277,16 @@ struct hostdata /* shared among all user connections to given server */ size_t trueaddr_len; /* size of trueaddr data */ struct hostdata *lead_server; /* ptr to lead query for this server */ int esmtp_options; + int workarounds; /* track which workarounds the user was warned about */ }; +/* + * bit flags to set in workarounds after the corresponding warning, + * which we assume to be server-specific, has been printed, + * so we don't spam our users in daemon mode. + */ +#define WKA_TOP (1L << 0) /* Maillennium TOP -> RETR override warning */ + struct query { /* mailserver connection controls */ diff --git a/pop3.c b/pop3.c index df85e3e6..facd09fc 100644 --- a/pop3.c +++ b/pop3.c @@ -611,10 +611,27 @@ static int pop3_getauth(int sock, struct query *ctl, char *greeting) #endif set_peek_capable(ctl); - /* comcast's Maillennium POP3/PROXY is full of bugs and truncates - * TOP replies after c. 80 kByte, so disable TOP. */ + /* + * The "Maillennium POP3/PROXY server" deliberately truncates + * TOP replies after c. 64 or 80 kByte (we have varying reports), so + * disable TOP. Comcast once spewed marketing babble to the extent + * of protecting Outlook -- pretty overzealous to break a protocol + * for that that Microsoft could have read, too. Comcast aren't + * alone in using this software though. + * + * (Thanks to Ed Wilts for reminding me of that.) + * + * The warning is printed once per server, until fetchmail exits. + * It will be suppressed when --fetchall or other circumstances make + * us use RETR anyhow. + * + * Matthias Andree + */ if (peek_capable && strstr(greeting, "Maillennium POP3/PROXY server")) { - report(stdout, GT_("Warning: Maillennium POP3/PROXY server found, using RETR command.\n")); + if (ctl->server.workarounds & WKA_TOP == 0) { + report(stdout, GT_("Warning: Maillennium POP3/PROXY server found, using RETR command.\n")); + ctl->server.workarounds |= WKA_TOP; + } peek_capable = 0; } -- 2.43.2