handle data split across receive_data calls