| Index: Source/platform/network/SocketStreamHandle.cpp
|
| diff --git a/Source/platform/network/SocketStreamHandle.cpp b/Source/platform/network/SocketStreamHandle.cpp
|
| index 88636faa9666a8195a40bb66be0d242926b0bbb0..3173a5c6188e5ebb55d9710c6e9040494f26653e 100644
|
| --- a/Source/platform/network/SocketStreamHandle.cpp
|
| +++ b/Source/platform/network/SocketStreamHandle.cpp
|
| @@ -188,14 +188,16 @@ bool SocketStreamHandle::send(const char* data, int length)
|
| {
|
| if (m_state == Connecting || m_state == Closing)
|
| return false;
|
| + // FIXME: This breaks the WebSocket API. The spec says:
|
| + // "This does not include framing overhead incurred by the protocol..."
|
| + if (m_client)
|
| + m_client->didIncreaseBufferedAmount(this, length);
|
| if (!m_buffer.isEmpty()) {
|
| if (m_buffer.size() + length > bufferSize) {
|
| // FIXME: report error to indicate that buffer has no more space.
|
| return false;
|
| }
|
| m_buffer.append(data, length);
|
| - if (m_client)
|
| - m_client->didUpdateBufferedAmount(this, bufferedAmount());
|
| return true;
|
| }
|
| int bytesWritten = 0;
|
| @@ -203,14 +205,14 @@ bool SocketStreamHandle::send(const char* data, int length)
|
| bytesWritten = sendInternal(data, length);
|
| if (bytesWritten < 0)
|
| return false;
|
| + if (m_client)
|
| + m_client->didDecreaseBufferedAmount(this, bytesWritten);
|
| if (m_buffer.size() + length - bytesWritten > bufferSize) {
|
| // FIXME: report error to indicate that buffer has no more space.
|
| return false;
|
| }
|
| if (bytesWritten < length) {
|
| m_buffer.append(data + bytesWritten, length - bytesWritten);
|
| - if (m_client)
|
| - m_client->didUpdateBufferedAmount(this, bufferedAmount());
|
| }
|
| return true;
|
| }
|
| @@ -259,9 +261,9 @@ bool SocketStreamHandle::sendPendingData()
|
| return false;
|
| ASSERT(m_buffer.size() - bytesWritten <= bufferSize);
|
| m_buffer.consume(bytesWritten);
|
| + if (m_client)
|
| + m_client->didDecreaseBufferedAmount(this, bytesWritten);
|
| } while (!pending && !m_buffer.isEmpty());
|
| - if (m_client)
|
| - m_client->didUpdateBufferedAmount(this, bufferedAmount());
|
| return true;
|
| }
|
|
|
|
|