From ee09cac7cfea08f60ab92873970f16165d473cac Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 1 Aug 1999 07:28:35 +0000 Subject: Use LOCKBUSY better. svn path=/trunk/; revision=2530 --- NEWS | 1 + pop3.c | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index dbdf1a68..cddc8cc8 100644 --- a/NEWS +++ b/NEWS @@ -234,6 +234,7 @@ fetchmail-4.6.7 (Sat Nov 21 13:59:47 EST 1998): * Postmaster option fix from Bill Metzenthen . * Socks library support from Guiseppe Guerini. * Notification mail is now sent to the user on 20 consecutive timeouts. +* Try to cope with the InterMail server's "wait a few minutes" error. There are 247 people on fetchmail-friends and 308 on fetchmail-announce. diff --git a/pop3.c b/pop3.c index 6a33c2f2..d85d314d 100644 --- a/pop3.c +++ b/pop3.c @@ -79,15 +79,27 @@ int pop3_ok (int sock, char *argbuf) ok = PS_PROTOCOL; /* * We're checking for "lock busy", "unable to lock", - * "already locked" etc. here. This indicates that we - * have to wait for the server to clean up before we - * can poll again. + * "already locked", "wait a few minutes" etc. here. + * This indicates that we have to wait for the server to + * unwedge itself before we can poll again. * * PS_LOCKBUSY check empirically verified with two recent - * versions the Berkeley popper; QPOP (version 2.2) and + * versions of the Berkeley popper; QPOP (version 2.2) and * QUALCOMM Pop server derived from UCB (version 2.1.4-R3) + * These are caught by the case-indifferent "lock" check. + * The "wait" catches "mail storage services unavailable, + * wait a few minutes and try again" on the InterMail server. + * + * If these aren't picked up on correctly, fetchmail will + * think there is an authentication failure and wedge the + * connection in order to prevent futile polls. + * + * Gad, what a kluge. */ - else if (strstr(bufp,"lock")||strstr(bufp,"Lock")||strstr(bufp,"LOCK")) + else if (strstr(bufp,"lock") + || strstr(bufp,"Lock") + || strstr(bufp,"LOCK") + || strstr(bufp,"wait")) ok = PS_LOCKBUSY; else ok = PS_AUTHFAIL; -- cgit v1.2.3