sort out the conn reading to make sure it always gets all the bytes