You should cache the read byte, as the packet might be splitted.