bug in the proxy module ...
Wesley Craig
wes at umich.edu
Mon Jun 9 15:29:15 EDT 2008
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.
More information about the Cyrus-devel
mailing list