summaryrefslogtreecommitdiffstats
path: root/net/websockets/websocket_job.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/websockets/websocket_job.cc')
-rw-r--r--net/websockets/websocket_job.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/net/websockets/websocket_job.cc b/net/websockets/websocket_job.cc
index 0998c98..040fc4d 100644
--- a/net/websockets/websocket_job.cc
+++ b/net/websockets/websocket_job.cc
@@ -106,6 +106,7 @@ bool WebSocketJob::SendData(const char* data, int len) {
int err = 0;
if (!send_frame_handler_->GetCurrentBuffer() &&
(err = send_frame_handler_->UpdateCurrentBuffer(false)) > 0) {
+ DCHECK(!current_buffer_);
current_buffer_ = new DrainableIOBuffer(
send_frame_handler_->GetCurrentBuffer(),
send_frame_handler_->GetCurrentBufferSize());
@@ -172,17 +173,23 @@ int WebSocketJob::OnStartOpenConnection(
void WebSocketJob::OnConnected(
SocketStream* socket, int max_pending_send_allowed) {
+ DCHECK_EQ(CONNECTING, state_);
if (delegate_)
delegate_->OnConnected(socket, max_pending_send_allowed);
}
void WebSocketJob::OnSentData(SocketStream* socket, int amount_sent) {
+ DCHECK_NE(INITIALIZED, state_);
+ if (state_ == CLOSED)
+ return;
if (state_ == CONNECTING) {
OnSentHandshakeRequest(socket, amount_sent);
return;
}
if (delegate_) {
+ DCHECK(state_ == OPEN || state_ == CLOSING);
DCHECK_GT(amount_sent, 0);
+ DCHECK(current_buffer_);
current_buffer_->DidConsume(amount_sent);
if (current_buffer_->BytesRemaining() > 0)
return;
@@ -201,10 +208,14 @@ void WebSocketJob::OnSentData(SocketStream* socket, int amount_sent) {
void WebSocketJob::OnReceivedData(
SocketStream* socket, const char* data, int len) {
+ DCHECK_NE(INITIALIZED, state_);
+ if (state_ == CLOSED)
+ return;
if (state_ == CONNECTING) {
OnReceivedHandshakeResponse(socket, data, len);
return;
}
+ DCHECK(state_ == OPEN || state_ == CLOSING);
std::string received_data;
receive_frame_handler_->AppendData(data, len);
// Don't buffer receiving data for now.