Question for IO: citadel_ipc.c, line 2666:
if (errval == SSL_ERROR_ZERO_RETURN || errval == SSL_ERROR_SSL) { serv_read(ipc, &buf[len], bytes - len); return; } My client barfs on this quite frequently -- predominantly when it's been idle for a long time. I don't know what's causing one of those error codes to happen, but the result is that serv_read() recurses into itself until it blows the stack. What was the idea here? Is there a way to recover from this condition? For now I've just commented out that block, so the client will at least crash with a descriptive error instead of blowing the stack and exiting on signal 11. Any insight you might be able to provide would be helpful.