Implement fragmentation logic in send() method of bufferedConnection:send(). Now, payloads are accumulated up to a threshold amount of bytes, and then flushed. If a payload would make the total accumulated larger, it gets carved to complete threshold and flushed. Any remainder get successively flushed in threshold-sized chunks, until the remainder is less than threshold, which then gets again buffered.