If we get here and the server is dead, min is 0 and outstanding is 1 it will go round in a loop forever with nothing to change any of their states. Quick fix? (gdb) p outstanding $1 = 1 xover_io (min=0, max=0, xhdr=0xffbed028 "message-id:", orig_min=5169, orig_max=5170) at xover.c:889 889 } (gdb) n 873 if (xover_server_state != dead && (!min || Smore (CurrentGroupScfg->fd))) (gdb) p xover_server_state $2 = dead (gdb) n 882 if (min) (gdb) p min $3 = 0 (gdb) n 887 if (outstanding>0) /* TODO: work out when we have to wait on a socket */ (gdb) li -- Faye Pearson, Software Development Manager, ClaraNET Ltd. Tel 020 7903 3000 You will never know hunger.