Looks like this change:
https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/imap/
proxy.c.diff?r1=1.3;r2=1.4
is in error. The old code was wrong, but this change is also wrong.
:wes
On 09 Jun 2008, at 08:52, Brasseur Valery wrote:
I am using cyrus 2.3.11 in a murder setup... from time to time have
got an hang from the pop3 proxyd ...
I nail it donw to the following portion of code :
in imap/proxy.c near line 266 :
<quote>
if (pout) {
const char *err;
char buf[4096];
int c;
do {
c = prot_read(pin, buf, sizeof(buf));
if (c == 0 || c < 0) break;
prot_write(pout, buf, c);
} while (c == sizeof(buf));
if ((err = prot_error(pin)) != NULL) { </quote>
from time to time, the prot_read return exactly 4096 bytes, but
it's the end of the message...
so backend seat and wait for next command, and proxy seat and wait
for the next buffer ...
forever !
for me it's seems that the condition " c == sizeof(buf)" is not
enough in that case.