Any suggestions?  I'm off thinking about other things at the moment.


Wesley Craig wrote:
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.



--
Kenneth Murchison
Systems Programmer
Project Cyrus Developer/Maintainer
Carnegie Mellon University

Reply via email to