This appears to be an edge condition; it does not occur with 2148 
characters, for example.  (Which explains why my buffer-overrun test 
utility didn't see any problem.)  When the input buffer fills up with 
junk and no CRLF in sight, Qpopper goes attempts to read and discard 
network input until either it stops or it sees a CRLF. 
Unfortunately, if the buffer is exactly full (an even multiple of 
2048), it does a read with length=0, which of course returns with a 0 
result.  The code then loops, asking for and receiving zero bytes. 
I'm working on a fix.


Reply via email to