bug in the proxy module ...

Simon Matter simon.matter at invoca.ch
Fri Jun 13 06:58:17 EDT 2008


> Hi,
>
> 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.
>

Did anybody look at this in the mean time?

Simon



More information about the Info-cyrus mailing list