Bugfixes for new reading/writing code.

Needed to take a little more care with ACK/NOACK, especially on
single-packet reads/writes.

--BRJ and CAR