| Index: net/websockets/websocket_job.cc
|
| diff --git a/net/websockets/websocket_job.cc b/net/websockets/websocket_job.cc
|
| index 63e65a4e9c94327ae21780d037ee149376cf6d41..f569eea71c180fe0030468cafa3020751f542807 100644
|
| --- a/net/websockets/websocket_job.cc
|
| +++ b/net/websockets/websocket_job.cc
|
| @@ -304,9 +304,10 @@ void WebSocketJob::OnSentSpdyHeaders() {
|
| DCHECK_NE(INITIALIZED, state_);
|
| if (state_ != CONNECTING)
|
| return;
|
| - if (delegate_)
|
| - delegate_->OnSentData(socket_.get(), handshake_request_->original_length());
|
| + size_t original_length = handshake_request_->original_length();
|
| handshake_request_.reset();
|
| + if (delegate_)
|
| + delegate_->OnSentData(socket_.get(), original_length);
|
| }
|
|
|
| void WebSocketJob::OnSpdyResponseHeadersUpdated(
|
| @@ -423,11 +424,12 @@ void WebSocketJob::OnSentHandshakeRequest(
|
| if (handshake_request_sent_ >= handshake_request_->raw_length()) {
|
| // handshake request has been sent.
|
| // notify original size of handshake request to delegate.
|
| - if (delegate_)
|
| - delegate_->OnSentData(
|
| - socket,
|
| - handshake_request_->original_length());
|
| + // Reset the handshake_request_ first in case this object is deleted by the
|
| + // delegate.
|
| + size_t original_length = handshake_request_->original_length();
|
| handshake_request_.reset();
|
| + if (delegate_)
|
| + delegate_->OnSentData(socket, original_length);
|
| }
|
| }
|
|
|
|
|