Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Side by Side Diff: net/quic/chromium/quic_http_stream.cc

Issue 2267283003: CHECK that QuicHttpStream::callback_ is null in any methods which may (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/quic_http_stream.h" 5 #include "net/quic/chromium/quic_http_stream.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 // rendezvous has failed so proceed as with a non-push request. 128 // rendezvous has failed so proceed as with a non-push request.
129 next_state_ = STATE_REQUEST_STREAM; 129 next_state_ = STATE_REQUEST_STREAM;
130 OnIOComplete(OK); 130 OnIOComplete(OK);
131 } 131 }
132 } 132 }
133 133
134 int QuicHttpStream::InitializeStream(const HttpRequestInfo* request_info, 134 int QuicHttpStream::InitializeStream(const HttpRequestInfo* request_info,
135 RequestPriority priority, 135 RequestPriority priority,
136 const BoundNetLog& stream_net_log, 136 const BoundNetLog& stream_net_log,
137 const CompletionCallback& callback) { 137 const CompletionCallback& callback) {
138 CHECK(callback_.is_null());
138 DCHECK(!stream_); 139 DCHECK(!stream_);
139 if (!session_) 140 if (!session_)
140 return was_handshake_confirmed_ ? ERR_CONNECTION_CLOSED 141 return was_handshake_confirmed_ ? ERR_CONNECTION_CLOSED
141 : ERR_QUIC_HANDSHAKE_FAILED; 142 : ERR_QUIC_HANDSHAKE_FAILED;
142 143
143 stream_net_log.AddEvent( 144 stream_net_log.AddEvent(
144 NetLog::TYPE_HTTP_STREAM_REQUEST_BOUND_TO_QUIC_SESSION, 145 NetLog::TYPE_HTTP_STREAM_REQUEST_BOUND_TO_QUIC_SESSION,
145 session_->net_log().source().ToEventParametersCallback()); 146 session_->net_log().source().ToEventParametersCallback());
146 147
147 stream_net_log_ = stream_net_log; 148 stream_net_log_ = stream_net_log;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 break; 247 break;
247 } 248 }
248 return DoLoop(OK); 249 return DoLoop(OK);
249 } 250 }
250 251
251 int QuicHttpStream::SendRequest(const HttpRequestHeaders& request_headers, 252 int QuicHttpStream::SendRequest(const HttpRequestHeaders& request_headers,
252 HttpResponseInfo* response, 253 HttpResponseInfo* response,
253 const CompletionCallback& callback) { 254 const CompletionCallback& callback) {
254 CHECK(!request_body_stream_); 255 CHECK(!request_body_stream_);
255 CHECK(!response_info_); 256 CHECK(!response_info_);
257 CHECK(callback_.is_null());
256 CHECK(!callback.is_null()); 258 CHECK(!callback.is_null());
257 CHECK(response); 259 CHECK(response);
258 260
259 // TODO(rch): remove this once we figure out why channel ID is not being 261 // TODO(rch): remove this once we figure out why channel ID is not being
260 // sent when it should be. 262 // sent when it should be.
261 HostPortPair origin = HostPortPair::FromURL(request_info_->url); 263 HostPortPair origin = HostPortPair::FromURL(request_info_->url);
262 if (origin.Equals(HostPortPair("accounts.google.com", 443)) && 264 if (origin.Equals(HostPortPair("accounts.google.com", 443)) &&
263 request_headers.HasHeader(HttpRequestHeaders::kCookie)) { 265 request_headers.HasHeader(HttpRequestHeaders::kCookie)) {
264 UMA_HISTOGRAM_BOOLEAN("Net.QuicSession.CookieSentToAccountsOverChannelId", 266 UMA_HISTOGRAM_BOOLEAN("Net.QuicSession.CookieSentToAccountsOverChannelId",
265 ssl_info_.channel_id_sent); 267 ssl_info_.channel_id_sent);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 311
310 UploadProgress QuicHttpStream::GetUploadProgress() const { 312 UploadProgress QuicHttpStream::GetUploadProgress() const {
311 if (!request_body_stream_) 313 if (!request_body_stream_)
312 return UploadProgress(); 314 return UploadProgress();
313 315
314 return UploadProgress(request_body_stream_->position(), 316 return UploadProgress(request_body_stream_->position(),
315 request_body_stream_->size()); 317 request_body_stream_->size());
316 } 318 }
317 319
318 int QuicHttpStream::ReadResponseHeaders(const CompletionCallback& callback) { 320 int QuicHttpStream::ReadResponseHeaders(const CompletionCallback& callback) {
321 CHECK(callback_.is_null());
319 CHECK(!callback.is_null()); 322 CHECK(!callback.is_null());
320 323
321 if (stream_ == nullptr) 324 if (stream_ == nullptr)
322 return response_status_; 325 return response_status_;
323 326
324 // Check if we already have the response headers. If so, return synchronously. 327 // Check if we already have the response headers. If so, return synchronously.
325 if (response_headers_received_) 328 if (response_headers_received_)
326 return OK; 329 return OK;
327 330
328 // Still waiting for the response, return IO_PENDING. 331 // Still waiting for the response, return IO_PENDING.
329 CHECK(callback_.is_null()); 332 CHECK(callback_.is_null());
330 callback_ = callback; 333 callback_ = callback;
331 return ERR_IO_PENDING; 334 return ERR_IO_PENDING;
332 } 335 }
333 336
334 int QuicHttpStream::ReadResponseBody(IOBuffer* buf, 337 int QuicHttpStream::ReadResponseBody(IOBuffer* buf,
335 int buf_len, 338 int buf_len,
336 const CompletionCallback& callback) { 339 const CompletionCallback& callback) {
340 CHECK(callback_.is_null());
341 CHECK(!callback.is_null());
342 CHECK(!user_buffer_.get());
343 CHECK_EQ(0, user_buffer_len_);
344
337 if (!stream_) { 345 if (!stream_) {
338 // If the stream is already closed, there is no body to read. 346 // If the stream is already closed, there is no body to read.
339 return response_status_; 347 return response_status_;
340 } 348 }
341 349
342 int rv = ReadAvailableData(buf, buf_len); 350 int rv = ReadAvailableData(buf, buf_len);
343 if (rv != ERR_IO_PENDING) 351 if (rv != ERR_IO_PENDING)
344 return rv; 352 return rv;
345 353
346 CHECK(callback_.is_null());
347 CHECK(!user_buffer_.get());
348 CHECK_EQ(0, user_buffer_len_);
349
350 callback_ = callback; 354 callback_ = callback;
351 user_buffer_ = buf; 355 user_buffer_ = buf;
352 user_buffer_len_ = buf_len; 356 user_buffer_len_ = buf_len;
353 return ERR_IO_PENDING; 357 return ERR_IO_PENDING;
354 } 358 }
355 359
356 void QuicHttpStream::Close(bool not_reusable) { 360 void QuicHttpStream::Close(bool not_reusable) {
357 // Note: the not_reusable flag has no meaning for SPDY streams. 361 // Note: the not_reusable flag has no meaning for SPDY streams.
358 if (stream_) { 362 if (stream_) {
359 stream_->SetDelegate(nullptr); 363 stream_->SetDelegate(nullptr);
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 closed_stream_sent_bytes_ = stream_->stream_bytes_written(); 831 closed_stream_sent_bytes_ = stream_->stream_bytes_written();
828 stream_ = nullptr; 832 stream_ = nullptr;
829 833
830 // If |request_body_stream_| is non-NULL, Reset it, to abort any in progress 834 // If |request_body_stream_| is non-NULL, Reset it, to abort any in progress
831 // read. 835 // read.
832 if (request_body_stream_) 836 if (request_body_stream_)
833 request_body_stream_->Reset(); 837 request_body_stream_->Reset();
834 } 838 }
835 839
836 } // namespace net 840 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698