Don't mark tcp header as read too early.

The changed code would, in rare cases, cause a tcp header to be
considered by the OS as read, but by msgbox as not-yet-seen. This could
happen when the first recv call returned a 'would block' error value.
The resulting behavior in practice is that we end up expecting an
enormous message, and effectively all future input was just queued into
a buffer and never given to the user. Very sad.