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; |
} |