On Wed, Sep 24, 2003 at 08:01:11PM +0100, Patrick Welche wrote: > I don't understand. The only alarm() business I can see in imap/fud.c > is around recvfrom which at least according to its man page says > > [EINTR] The receive was interrupted by delivery of a signal > before any data were available. > > What "system call"s are there? I was looking for syscall()...
Sorry, I may have got the nomenclature wrong since I am not very familiar with Unix C programming. However, the man page is wrong about EINTR at least as far as RedHat 7.x is concerned. In a murder environnement, when following a referral : 1. The alarm() is set 2. recvfrom() connect to referred by UDP 3. If the referred is not answering : 3.1 The SIG_ALRM handler is eventually executed 3.2 fud goes back to waiting after recvfrom and deadlock This is reproducible in my environment. Maybe I got something wrong in my crude syslog() debugging, but I am confident that this is what happen. The patch I posted earlier fix the problem for me. -- Etienne Goyer Linux Québec Technologies Inc. http://www.LinuxQuebec.com [EMAIL PROTECTED]