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 <cmath> | 5 #include <cmath> |
6 #include <memory> | 6 #include <memory> |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 6314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6325 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 6325 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
6326 | 6326 |
6327 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, | 6327 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
6328 NetLogWithSource(), nullptr); | 6328 NetLogWithSource(), nullptr); |
6329 helper.RunToCompletion(&data); | 6329 helper.RunToCompletion(&data); |
6330 TransactionHelperResult out = helper.output(); | 6330 TransactionHelperResult out = helper.output(); |
6331 | 6331 |
6332 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); | 6332 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); |
6333 } | 6333 } |
6334 | 6334 |
| 6335 // Regression test for https://crbug.com/603182. |
| 6336 // No response headers received before RST_STREAM: error. |
| 6337 TEST_F(SpdyNetworkTransactionTest, RstStreamNoError) { |
| 6338 SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0)); |
| 6339 MockWrite writes[] = {CreateMockWrite(req, 0, ASYNC)}; |
| 6340 |
| 6341 SpdySerializedFrame rst( |
| 6342 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_NO_ERROR)); |
| 6343 MockRead reads[] = {CreateMockRead(rst, 1), MockRead(ASYNC, 0, 2)}; |
| 6344 |
| 6345 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 6346 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), |
| 6347 DEFAULT_PRIORITY, NetLogWithSource(), |
| 6348 nullptr); |
| 6349 helper.RunToCompletion(&data); |
| 6350 TransactionHelperResult out = helper.output(); |
| 6351 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); |
| 6352 } |
| 6353 |
| 6354 // Regression test for https://crbug.com/603182. |
| 6355 // Response headers and data, then RST_STREAM received, |
| 6356 // before request body is sent: success. |
| 6357 TEST_F(SpdyNetworkTransactionTest, RstStreamNoErrorAfterResponse) { |
| 6358 SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0)); |
| 6359 MockWrite writes[] = {CreateMockWrite(req, 0, ASYNC)}; |
| 6360 |
| 6361 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0)); |
| 6362 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); |
| 6363 SpdySerializedFrame rst( |
| 6364 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_NO_ERROR)); |
| 6365 MockRead reads[] = {CreateMockRead(resp, 1), CreateMockRead(body, 2), |
| 6366 CreateMockRead(rst, 3), MockRead(ASYNC, 0, 4)}; |
| 6367 |
| 6368 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 6369 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), |
| 6370 DEFAULT_PRIORITY, NetLogWithSource(), |
| 6371 nullptr); |
| 6372 helper.RunToCompletion(&data); |
| 6373 TransactionHelperResult out = helper.output(); |
| 6374 EXPECT_THAT(out.rv, IsOk()); |
| 6375 EXPECT_EQ("HTTP/1.1 200", out.status_line); |
| 6376 EXPECT_EQ("hello!", out.response_data); |
| 6377 } |
| 6378 |
6335 class SpdyNetworkTransactionTLSUsageCheckTest | 6379 class SpdyNetworkTransactionTLSUsageCheckTest |
6336 : public SpdyNetworkTransactionTest { | 6380 : public SpdyNetworkTransactionTest { |
6337 protected: | 6381 protected: |
6338 void RunTLSUsageCheckTest( | 6382 void RunTLSUsageCheckTest( |
6339 std::unique_ptr<SSLSocketDataProvider> ssl_provider) { | 6383 std::unique_ptr<SSLSocketDataProvider> ssl_provider) { |
6340 SpdySerializedFrame goaway( | 6384 SpdySerializedFrame goaway( |
6341 spdy_util_.ConstructSpdyGoAway(0, GOAWAY_INADEQUATE_SECURITY, "")); | 6385 spdy_util_.ConstructSpdyGoAway(0, GOAWAY_INADEQUATE_SECURITY, "")); |
6342 MockWrite writes[] = {CreateMockWrite(goaway)}; | 6386 MockWrite writes[] = {CreateMockWrite(goaway)}; |
6343 | 6387 |
6344 StaticSocketDataProvider data(NULL, 0, writes, arraysize(writes)); | 6388 StaticSocketDataProvider data(NULL, 0, writes, arraysize(writes)); |
(...skipping 20 matching lines...) Expand all Loading... |
6365 TEST_F(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { | 6409 TEST_F(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { |
6366 std::unique_ptr<SSLSocketDataProvider> ssl_provider( | 6410 std::unique_ptr<SSLSocketDataProvider> ssl_provider( |
6367 new SSLSocketDataProvider(ASYNC, OK)); | 6411 new SSLSocketDataProvider(ASYNC, OK)); |
6368 // Set to TLS_RSA_WITH_NULL_MD5 | 6412 // Set to TLS_RSA_WITH_NULL_MD5 |
6369 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); | 6413 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); |
6370 | 6414 |
6371 RunTLSUsageCheckTest(std::move(ssl_provider)); | 6415 RunTLSUsageCheckTest(std::move(ssl_provider)); |
6372 } | 6416 } |
6373 | 6417 |
6374 } // namespace net | 6418 } // namespace net |
OLD | NEW |