OLD | NEW |
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/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 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 // TODO(ahendrickson): This is recorded after the entire SYN_STREAM control | 404 // TODO(ahendrickson): This is recorded after the entire SYN_STREAM control |
405 // frame has been received and processed. Move to framer? | 405 // frame has been received and processed. Move to framer? |
406 response_info_->response_time = response_time; | 406 response_info_->response_time = response_time; |
407 | 407 |
408 if (!callback_.is_null()) | 408 if (!callback_.is_null()) |
409 DoCallback(status); | 409 DoCallback(status); |
410 | 410 |
411 return status; | 411 return status; |
412 } | 412 } |
413 | 413 |
414 void SpdyHttpStream::OnDataReceived(const char* data, int length) { | 414 int SpdyHttpStream::OnDataReceived(const char* data, int length) { |
415 // SpdyStream won't call us with data if the header block didn't contain a | 415 // SpdyStream won't call us with data if the header block didn't contain a |
416 // valid set of headers. So we don't expect to not have headers received | 416 // valid set of headers. So we don't expect to not have headers received |
417 // here. | 417 // here. |
418 DCHECK(response_headers_received_); | 418 if (!response_headers_received_) |
| 419 return ERR_INCOMPLETE_SPDY_HEADERS; |
419 | 420 |
420 // Note that data may be received for a SpdyStream prior to the user calling | 421 // Note that data may be received for a SpdyStream prior to the user calling |
421 // ReadResponseBody(), therefore user_buffer_ may be NULL. This may often | 422 // ReadResponseBody(), therefore user_buffer_ may be NULL. This may often |
422 // happen for server initiated streams. | 423 // happen for server initiated streams. |
423 DCHECK(!stream_->closed() || stream_->pushed()); | 424 DCHECK(!stream_->closed() || stream_->pushed()); |
424 if (length > 0) { | 425 if (length > 0) { |
425 // Save the received data. | 426 // Save the received data. |
426 IOBufferWithSize* io_buffer = new IOBufferWithSize(length); | 427 IOBufferWithSize* io_buffer = new IOBufferWithSize(length); |
427 memcpy(io_buffer->data(), data, length); | 428 memcpy(io_buffer->data(), data, length); |
428 response_body_.push_back(make_scoped_refptr(io_buffer)); | 429 response_body_.push_back(make_scoped_refptr(io_buffer)); |
429 | 430 |
430 if (user_buffer_) { | 431 if (user_buffer_) { |
431 // Handing small chunks of data to the caller creates measurable overhead. | 432 // Handing small chunks of data to the caller creates measurable overhead. |
432 // We buffer data in short time-spans and send a single read notification. | 433 // We buffer data in short time-spans and send a single read notification. |
433 ScheduleBufferedReadCallback(); | 434 ScheduleBufferedReadCallback(); |
434 } | 435 } |
435 } | 436 } |
| 437 return OK; |
436 } | 438 } |
437 | 439 |
438 void SpdyHttpStream::OnDataSent(int length) { | 440 void SpdyHttpStream::OnDataSent(int length) { |
439 // For HTTP streams, no data is sent from the client while in the OPEN state, | 441 // For HTTP streams, no data is sent from the client while in the OPEN state, |
440 // so it is never called. | 442 // so it is never called. |
441 NOTREACHED(); | 443 NOTREACHED(); |
442 } | 444 } |
443 | 445 |
444 void SpdyHttpStream::OnClose(int status) { | 446 void SpdyHttpStream::OnClose(int status) { |
445 bool invoked_callback = false; | 447 bool invoked_callback = false; |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 bool SpdyHttpStream::IsSpdyHttpStream() const { | 552 bool SpdyHttpStream::IsSpdyHttpStream() const { |
551 return true; | 553 return true; |
552 } | 554 } |
553 | 555 |
554 void SpdyHttpStream::Drain(HttpNetworkSession* session) { | 556 void SpdyHttpStream::Drain(HttpNetworkSession* session) { |
555 Close(false); | 557 Close(false); |
556 delete this; | 558 delete this; |
557 } | 559 } |
558 | 560 |
559 } // namespace net | 561 } // namespace net |
OLD | NEW |