Hello.
I sent 8004 bytes to server through TCP connection and successfully read it like this:

    int readBytes;
    const int BUFFER_SIZE = 128;
    char charBuf[BUFFER_SIZE];
    do
    {
        readBytes = socket.read_some(boost::asio::buffer(charBuf, BUFFER_SIZE));
    }
    while(readBytes >= BUFFER_SIZE);

But sometimes this code reads just 3752 (precisely) bytes and returns. After that it handles another async_read and reads 4525 bytes (which in sum gives 8004 bytes).
Do I use "read_some()" function in the right way?