From e58701df90b7b3b8a076300c1db2dca0e49da40b Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Mon, 26 Apr 1999 07:11:02 +0000 Subject: retry several times to avoid getting jammed by lockbusy. svn path=/trunk/; revision=2454 --- driver.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'driver.c') diff --git a/driver.c b/driver.c index 6bcaf90c..1172ca30 100644 --- a/driver.c +++ b/driver.c @@ -2186,6 +2186,7 @@ const struct method *proto; /* protocol method table */ else { int totalcount = 0; + int lockouts = 0; int expunge = NUM_VALUE_OUT(ctl->expunge); int fetchlimit = NUM_VALUE_OUT(ctl->fetchlimit); @@ -2194,14 +2195,17 @@ const struct method *proto; /* protocol method table */ totalcount += expunge; if (NUM_SPECIFIED(ctl->fetchlimit) && totalcount >= fetchlimit) break; + if (ok != PS_LOCKBUSY) + lockouts = 0; /* * Allow time for the server lock to release. if we don't * do this, we'll often hit a locked-mailbox condition and fail. */ - sleep(3); /* to be _really_ safe, probably need sleep(5)! */ + sleep(3); } while - (ok == PS_MAXFETCH); + (ok == PS_MAXFETCH + || (ok == PS_LOCKBUSY && lockouts++ < MAX_LOCKOUTS)); return(ok); } -- cgit v1.2.3