aboutsummaryrefslogtreecommitdiffstats
path: root/pop3.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>1999-08-01 07:28:35 +0000
committerEric S. Raymond <esr@thyrsus.com>1999-08-01 07:28:35 +0000
commitee09cac7cfea08f60ab92873970f16165d473cac (patch)
tree228cef1c49307b0d530f421dcab6363222629620 /pop3.c
parent31a766b10679534993eada1bdeb9a6f7cb5585c0 (diff)
downloadfetchmail-ee09cac7cfea08f60ab92873970f16165d473cac.tar.gz
fetchmail-ee09cac7cfea08f60ab92873970f16165d473cac.tar.bz2
fetchmail-ee09cac7cfea08f60ab92873970f16165d473cac.zip
Use LOCKBUSY better.
svn path=/trunk/; revision=2530
Diffstat (limited to 'pop3.c')
-rw-r--r--pop3.c22
1 files changed, 17 insertions, 5 deletions
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;