| 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/quic/quic_session.h" | 5 #include "net/quic/quic_session.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 | 309 |
| 310 TEST_P(QuicSessionTest, StreamIdTooLarge) { | 310 TEST_P(QuicSessionTest, StreamIdTooLarge) { |
| 311 QuicStreamId stream_id = kClientDataStreamId1; | 311 QuicStreamId stream_id = kClientDataStreamId1; |
| 312 session_.GetIncomingDataStream(stream_id); | 312 session_.GetIncomingDataStream(stream_id); |
| 313 EXPECT_CALL(*connection_, SendConnectionClose(QUIC_INVALID_STREAM_ID)); | 313 EXPECT_CALL(*connection_, SendConnectionClose(QUIC_INVALID_STREAM_ID)); |
| 314 session_.GetIncomingDataStream(stream_id + kMaxStreamIdDelta + 2); | 314 session_.GetIncomingDataStream(stream_id + kMaxStreamIdDelta + 2); |
| 315 } | 315 } |
| 316 | 316 |
| 317 TEST_P(QuicSessionTest, DecompressionError) { | 317 TEST_P(QuicSessionTest, DecompressionError) { |
| 318 QuicHeadersStream* stream = QuicSessionPeer::GetHeadersStream(&session_); | 318 QuicHeadersStream* stream = QuicSessionPeer::GetHeadersStream(&session_); |
| 319 if (version() > QUIC_VERSION_23) { |
| 320 // This test does not apply to HPACK compression. |
| 321 return; |
| 322 } |
| 319 const unsigned char data[] = { | 323 const unsigned char data[] = { |
| 320 0x80, 0x03, 0x00, 0x01, // SPDY/3 SYN_STREAM frame | 324 0x80, 0x03, 0x00, 0x01, // SPDY/3 SYN_STREAM frame |
| 321 0x00, 0x00, 0x00, 0x25, // flags/length | 325 0x00, 0x00, 0x00, 0x25, // flags/length |
| 322 0x00, 0x00, 0x00, 0x05, // stream id | 326 0x00, 0x00, 0x00, 0x05, // stream id |
| 323 0x00, 0x00, 0x00, 0x00, // associated stream id | 327 0x00, 0x00, 0x00, 0x00, // associated stream id |
| 324 0x00, 0x00, | 328 0x00, 0x00, |
| 325 'a', 'b', 'c', 'd' // invalid compressed data | 329 'a', 'b', 'c', 'd' // invalid compressed data |
| 326 }; | 330 }; |
| 327 EXPECT_CALL(*connection_, SendConnectionCloseWithDetails( | 331 EXPECT_CALL(*connection_, SendConnectionCloseWithDetails( |
| 328 QUIC_INVALID_HEADERS_STREAM_DATA, | 332 QUIC_INVALID_HEADERS_STREAM_DATA, |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 EXPECT_FALSE(session_.IsStreamFlowControlBlocked()); | 720 EXPECT_FALSE(session_.IsStreamFlowControlBlocked()); |
| 717 QuicStreamId stream_id = 5; | 721 QuicStreamId stream_id = 5; |
| 718 // Write until the header stream is flow control blocked. | 722 // Write until the header stream is flow control blocked. |
| 719 SpdyHeaderBlock headers; | 723 SpdyHeaderBlock headers; |
| 720 while (!headers_stream->flow_controller()->IsBlocked() && stream_id < 2000) { | 724 while (!headers_stream->flow_controller()->IsBlocked() && stream_id < 2000) { |
| 721 EXPECT_FALSE(session_.IsConnectionFlowControlBlocked()); | 725 EXPECT_FALSE(session_.IsConnectionFlowControlBlocked()); |
| 722 EXPECT_FALSE(session_.IsStreamFlowControlBlocked()); | 726 EXPECT_FALSE(session_.IsStreamFlowControlBlocked()); |
| 723 headers["header"] = base::Uint64ToString(base::RandUint64()) + | 727 headers["header"] = base::Uint64ToString(base::RandUint64()) + |
| 724 base::Uint64ToString(base::RandUint64()) + | 728 base::Uint64ToString(base::RandUint64()) + |
| 725 base::Uint64ToString(base::RandUint64()); | 729 base::Uint64ToString(base::RandUint64()); |
| 726 headers_stream->WriteHeaders(stream_id, headers, true, nullptr); | 730 headers_stream->WriteHeaders(stream_id, headers, true, 0, nullptr); |
| 727 stream_id += 2; | 731 stream_id += 2; |
| 728 } | 732 } |
| 729 // Write once more to ensure that the headers stream has buffered data. The | 733 // Write once more to ensure that the headers stream has buffered data. The |
| 730 // random headers may have exactly filled the flow control window. | 734 // random headers may have exactly filled the flow control window. |
| 731 headers_stream->WriteHeaders(stream_id, headers, true, nullptr); | 735 headers_stream->WriteHeaders(stream_id, headers, true, 0, nullptr); |
| 732 EXPECT_TRUE(headers_stream->HasBufferedData()); | 736 EXPECT_TRUE(headers_stream->HasBufferedData()); |
| 733 | 737 |
| 734 EXPECT_TRUE(headers_stream->flow_controller()->IsBlocked()); | 738 EXPECT_TRUE(headers_stream->flow_controller()->IsBlocked()); |
| 735 EXPECT_FALSE(crypto_stream->flow_controller()->IsBlocked()); | 739 EXPECT_FALSE(crypto_stream->flow_controller()->IsBlocked()); |
| 736 EXPECT_FALSE(session_.IsConnectionFlowControlBlocked()); | 740 EXPECT_FALSE(session_.IsConnectionFlowControlBlocked()); |
| 737 EXPECT_TRUE(session_.IsStreamFlowControlBlocked()); | 741 EXPECT_TRUE(session_.IsStreamFlowControlBlocked()); |
| 738 EXPECT_FALSE(session_.HasDataToWrite()); | 742 EXPECT_FALSE(session_.HasDataToWrite()); |
| 739 | 743 |
| 740 // Now complete the crypto handshake, resulting in an increased flow control | 744 // Now complete the crypto handshake, resulting in an increased flow control |
| 741 // send window. | 745 // send window. |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 } | 967 } |
| 964 | 968 |
| 965 // Called after any new data is received by the session, and triggers the call | 969 // Called after any new data is received by the session, and triggers the call |
| 966 // to close the connection. | 970 // to close the connection. |
| 967 session_.PostProcessAfterData(); | 971 session_.PostProcessAfterData(); |
| 968 } | 972 } |
| 969 | 973 |
| 970 } // namespace | 974 } // namespace |
| 971 } // namespace test | 975 } // namespace test |
| 972 } // namespace net | 976 } // namespace net |
| OLD | NEW |