The buffer size named buffer size_ is stored on a uint32_t.
When the size of transmis data is above there is an overflow and throw a bad_alloc error.
This come from the fact that the allocated size is a power of 2 and is multiplied by 2. At a time it reach 2^32 and ask for allocating a buffer with size 0.
Then the allocation return NULL (normal) and the exception is throw.
Thanks to take into account the issue.