Alessandro Vesely wrote:
> I don't understand those repeated read() calls returning 0. It should 
> mean end of file, thus there should be no point in insisting. For 
> EINTR, read should return a negative number, and strace should report 
> that.

I think you're right.  You can see Debian's patch here:
http://patch-tracking.debian.net/patch/series/view/gdbm/1.8.3-3/05_handle-short-read

They've introduced a while loop that will continue if bytes were read, 
or if errno == EINTR.  However, they check errno even if the return 
value of read() doesn't indicate that they should.  Since read() won't 
reset errno on EOF, this creates an infinite loop if errno was already 
EINTR.

I'm still not enlightened as to the cause of the problem, but it seems 
clear that gdbm on Debian is broken.  An interested party should file a 
new bug report and ask them to fix this properly or take it out, and to 
push the changes to the gdbm maintainer for review.  Like their SSL 
blunder, I believe that someone who knows what they're doing might be 
able to set them straight.

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
courier-users mailing list
[email protected]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

Reply via email to