> IMHO you can avoid this special-casing > by introducing yet another outer loop just > for draining the extra data from buffer. > Admittedly that may also require an extra > transport op. I'm not sure that extra tranport op is needed, may be i'll try to put drain code inside copy loop, because only difference is that copy length is 0. > Why do you need this change? > (maybe its ok, just wondering) > No need to reset here, like a few lines > above in a seemingly similar condition? Yes, i think you are right.