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

Side by Side Diff: net/spdy/spdy_http_stream.cc

Issue 6800009: Attn: Mike Belshe Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 9 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/spdy/spdy_http_stream.h" 5 #include "net/spdy/spdy_http_stream.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <list> 8 #include <list>
9 #include <string> 9 #include <string>
10 10
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 // TODO(ahendrickson): This is recorded after the entire SYN_STREAM control 333 // TODO(ahendrickson): This is recorded after the entire SYN_STREAM control
334 // frame has been received and processed. Move to framer? 334 // frame has been received and processed. Move to framer?
335 response_info_->response_time = response_time; 335 response_info_->response_time = response_time;
336 336
337 if (user_callback_) 337 if (user_callback_)
338 DoCallback(status); 338 DoCallback(status);
339 return status; 339 return status;
340 } 340 }
341 341
342 void SpdyHttpStream::OnDataReceived(const char* data, int length) { 342 void SpdyHttpStream::OnDataReceived(const char* data, int length) {
343 // JTL - delete this
344 if (using_sctp()) {
345 if (!using_sctp_control_stream() || stream()->syn_reply_received()) {
346 printf("SpdyHttpStream::OnDataReceived: entered on stream %d "
347 "(length = %d)\n",
348 stream()->stream_id(), length);
349 } else {
350 printf("SpdyHttpStream::OnDataReceived: entered on stream %d, with "
351 "syn_reply_received_ = false (length = %d)\n",
352 stream()->stream_id(), length);
353 }
354 }
343 // SpdyStream won't call us with data if the header block didn't contain a 355 // SpdyStream won't call us with data if the header block didn't contain a
344 // valid set of headers. So we don't expect to not have headers received 356 // valid set of headers. So we don't expect to not have headers received
345 // here. 357 // here.
346 DCHECK(response_headers_received_); 358 // Exception - when using SCTP with a single dictionary, all SPDY CONTROL
359 // frames are sent on SCTP stream 0, while all SPDY DATA frames are sent on
360 // SCTP stream n > 0. This means that data can arrive before a SYN_REPLY,
361 // due to reordering or loss. In this case we can't require
362 // response_headers_received to be true.
363 if ( !(using_sctp() && using_sctp_control_stream()))
364 DCHECK(response_headers_received_);
347 365
348 // Note that data may be received for a SpdyStream prior to the user calling 366 // Note that data may be received for a SpdyStream prior to the user calling
349 // ReadResponseBody(), therefore user_buffer_ may be NULL. This may often 367 // ReadResponseBody(), therefore user_buffer_ may be NULL. This may often
350 // happen for server initiated streams. 368 // happen for server initiated streams.
351 DCHECK(!stream_->closed() || stream_->pushed()); 369 DCHECK(!stream_->closed() || stream_->pushed());
352 if (length > 0) { 370 if (length > 0) {
353 // Save the received data. 371 // Save the received data.
354 IOBufferWithSize* io_buffer = new IOBufferWithSize(length); 372 IOBufferWithSize* io_buffer = new IOBufferWithSize(length);
355 memcpy(io_buffer->data(), data, length); 373 memcpy(io_buffer->data(), data, length);
356 response_body_.push_back(make_scoped_refptr(io_buffer)); 374 response_body_.push_back(make_scoped_refptr(io_buffer));
(...skipping 18 matching lines...) Expand all
375 // We need to complete any pending buffered read now. 393 // We need to complete any pending buffered read now.
376 invoked_callback = DoBufferedReadCallback(); 394 invoked_callback = DoBufferedReadCallback();
377 } 395 }
378 if (!invoked_callback && user_callback_) 396 if (!invoked_callback && user_callback_)
379 DoCallback(status); 397 DoCallback(status);
380 } 398 }
381 399
382 void SpdyHttpStream::ScheduleBufferedReadCallback() { 400 void SpdyHttpStream::ScheduleBufferedReadCallback() {
383 // If there is already a scheduled DoBufferedReadCallback, don't issue 401 // If there is already a scheduled DoBufferedReadCallback, don't issue
384 // another one. Mark that we have received more data and return. 402 // another one. Mark that we have received more data and return.
403 if (using_sctp() && using_sctp_control_stream() &&
404 !stream()->syn_reply_received()) {
405 printf("SpdyHttpStream::ScheduleBufferedReadCallback: SYN_REPLY is "
406 "*** pending *** on stream %d\n", stream()->stream_id()); // JTL
407 }
385 if (buffered_read_callback_pending_) { 408 if (buffered_read_callback_pending_) {
386 more_read_data_pending_ = true; 409 more_read_data_pending_ = true;
387 return; 410 return;
388 } 411 }
389 412
390 more_read_data_pending_ = false; 413 more_read_data_pending_ = false;
391 buffered_read_callback_pending_ = true; 414 buffered_read_callback_pending_ = true;
392 const int kBufferTimeMs = 1; 415 const int kBufferTimeMs = 1;
393 MessageLoop::current()->PostDelayedTask(FROM_HERE, read_callback_factory_. 416 MessageLoop::current()->PostDelayedTask(FROM_HERE, read_callback_factory_.
394 NewRunnableMethod(&SpdyHttpStream::DoBufferedReadCallback), 417 NewRunnableMethod(&SpdyHttpStream::DoBufferedReadCallback),
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 SSLCertRequestInfo* cert_request_info) { 484 SSLCertRequestInfo* cert_request_info) {
462 DCHECK(stream_); 485 DCHECK(stream_);
463 stream_->GetSSLCertRequestInfo(cert_request_info); 486 stream_->GetSSLCertRequestInfo(cert_request_info);
464 } 487 }
465 488
466 bool SpdyHttpStream::IsSpdyHttpStream() const { 489 bool SpdyHttpStream::IsSpdyHttpStream() const {
467 return true; 490 return true;
468 } 491 }
469 492
470 } // namespace net 493 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698