Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5237:78553445a036 HEAD
Don't die if "time moved backwards" sleep is interrupted.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 07 Mar 2007 15:40:07 +0200 |
parents | 6761b2a46ec3 |
children | 0f1208e2df7b |
files | src/lib/ioloop.c |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/ioloop.c Wed Mar 07 02:47:54 2007 +0200 +++ b/src/lib/ioloop.c Wed Mar 07 15:40:07 2007 +0200 @@ -238,8 +238,14 @@ "I'll sleep now until we're back in present.", (long)diff); /* Sleep extra second to make sure usecs also grows. */ - if (sleep(diff + 1) != 0) - i_fatal("Sleep interrupted, byebye."); + diff++; + + while (diff > 0 && sleep(diff) != 0) { + /* don't use sleep()'s return value, because + it could get us to a long loop in case + interrupts just keep coming */ + diff = ioloop_time - time(NULL) + 1; + } /* Try again. */ io_loop_handle_timeouts(ioloop);