I haven't gone back to check the code, but it feels like every size that's given can be used to verify how to proceed.
In the case I was having, 200k made no sense because there wasn't 200k worth of data to write, but the system still flushed the message out to disk, presumably due to using an earlier size. My main point is that all the sizes should add up, and that it costs nothing to check. For a large scale system, it never hurts to check, if it's free. And if something like that fails, you can always throw an error, and drop the connection -- better than taking on corrupt packets, and redistributing them. Ok, enough opining for the moment :) b