| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/chromium/bidirectional_stream_quic_impl.h" | 5 #include "net/quic/chromium/bidirectional_stream_quic_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 send_request_headers_automatically_ = send_request_headers_automatically; | 66 send_request_headers_automatically_ = send_request_headers_automatically; |
| 67 if (!session_) { | 67 if (!session_) { |
| 68 NotifyError(was_handshake_confirmed_ ? ERR_QUIC_PROTOCOL_ERROR | 68 NotifyError(was_handshake_confirmed_ ? ERR_QUIC_PROTOCOL_ERROR |
| 69 : ERR_QUIC_HANDSHAKE_FAILED); | 69 : ERR_QUIC_HANDSHAKE_FAILED); |
| 70 return; | 70 return; |
| 71 } | 71 } |
| 72 | 72 |
| 73 delegate_ = delegate; | 73 delegate_ = delegate; |
| 74 request_info_ = request_info; | 74 request_info_ = request_info; |
| 75 | 75 |
| 76 int rv = stream_request_.StartRequest( | 76 stream_request_ = session_->CreateStreamRequest(); |
| 77 session_, &stream_, | 77 int rv = stream_request_->StartRequest(base::Bind( |
| 78 base::Bind(&BidirectionalStreamQuicImpl::OnStreamReady, | 78 &BidirectionalStreamQuicImpl::OnStreamReady, weak_factory_.GetWeakPtr())); |
| 79 weak_factory_.GetWeakPtr())); | |
| 80 if (rv == OK) { | 79 if (rv == OK) { |
| 81 OnStreamReady(rv); | 80 OnStreamReady(rv); |
| 82 } else if (!was_handshake_confirmed_) { | 81 } else if (!was_handshake_confirmed_) { |
| 83 NotifyError(ERR_QUIC_HANDSHAKE_FAILED); | 82 NotifyError(ERR_QUIC_HANDSHAKE_FAILED); |
| 84 } | 83 } |
| 85 } | 84 } |
| 86 | 85 |
| 87 void BidirectionalStreamQuicImpl::SendRequestHeaders() { | 86 void BidirectionalStreamQuicImpl::SendRequestHeaders() { |
| 88 DCHECK(!has_sent_headers_); | 87 DCHECK(!has_sent_headers_); |
| 89 if (!stream_) { | 88 if (!stream_) { |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 bool /*port_migration_detected*/) { | 298 bool /*port_migration_detected*/) { |
| 300 DCHECK_NE(OK, error); | 299 DCHECK_NE(OK, error); |
| 301 session_.reset(); | 300 session_.reset(); |
| 302 NotifyError(error); | 301 NotifyError(error); |
| 303 } | 302 } |
| 304 | 303 |
| 305 void BidirectionalStreamQuicImpl::OnStreamReady(int rv) { | 304 void BidirectionalStreamQuicImpl::OnStreamReady(int rv) { |
| 306 DCHECK_NE(ERR_IO_PENDING, rv); | 305 DCHECK_NE(ERR_IO_PENDING, rv); |
| 307 DCHECK(rv == OK || !stream_); | 306 DCHECK(rv == OK || !stream_); |
| 308 if (rv == OK) { | 307 if (rv == OK) { |
| 308 stream_ = stream_request_->ReleaseStream(); |
| 309 stream_request_.reset(); |
| 309 stream_->SetDelegate(this); | 310 stream_->SetDelegate(this); |
| 310 if (!was_handshake_confirmed_ && request_info_->method == "POST") { | 311 if (!was_handshake_confirmed_ && request_info_->method == "POST") { |
| 311 waiting_for_confirmation_ = true; | 312 waiting_for_confirmation_ = true; |
| 312 return; | 313 return; |
| 313 } | 314 } |
| 314 NotifyStreamReady(); | 315 NotifyStreamReady(); |
| 315 } else { | 316 } else { |
| 316 NotifyError(rv); | 317 NotifyError(rv); |
| 317 } | 318 } |
| 318 } | 319 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 if (!stream_) | 356 if (!stream_) |
| 356 return; | 357 return; |
| 357 closed_stream_received_bytes_ = stream_->stream_bytes_read(); | 358 closed_stream_received_bytes_ = stream_->stream_bytes_read(); |
| 358 closed_stream_sent_bytes_ = stream_->stream_bytes_written(); | 359 closed_stream_sent_bytes_ = stream_->stream_bytes_written(); |
| 359 closed_is_first_stream_ = stream_->IsFirstStream(); | 360 closed_is_first_stream_ = stream_->IsFirstStream(); |
| 360 stream_->SetDelegate(nullptr); | 361 stream_->SetDelegate(nullptr); |
| 361 stream_ = nullptr; | 362 stream_ = nullptr; |
| 362 } | 363 } |
| 363 | 364 |
| 364 } // namespace net | 365 } // namespace net |
| OLD | NEW |