be a little more forgiving of partial data

when receiving less than a message header's worth of data, wait patiently for
the rest of the header next time