bug in the proxy module ...

Ken Murchison murch at andrew.cmu.edu
Tue Jun 10 10:07:39 EDT 2008


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


More information about the Cyrus-devel mailing list