Index: net/http/http_network_transaction_unittest.cc |
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc |
index 0bb806c1526a4f7a670a71eee705ee2a35beba3c..c6c44f0aa3c0442866baf338fa09432cfb8105b0 100644 |
--- a/net/http/http_network_transaction_unittest.cc |
+++ b/net/http/http_network_transaction_unittest.cc |
@@ -708,6 +708,58 @@ TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeaders) { |
EXPECT_EQ(reads_size, out.total_received_bytes); |
} |
+// Response with no status line, and a weird port. Should fail by default. |
+TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPort) { |
+ MockRead data_reads[] = { |
+ MockRead("hello world"), MockRead(SYNCHRONOUS, OK), |
+ }; |
+ |
+ StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
+ |
+ std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
+ |
+ std::unique_ptr<HttpTransaction> trans( |
+ new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
+ |
+ HttpRequestInfo request; |
+ request.method = "GET"; |
+ request.url = GURL("http://www.example.com:2000/"); |
+ TestCompletionCallback callback; |
+ int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
+ EXPECT_THAT(callback.GetResult(rv), IsError(ERR_INVALID_HTTP_RESPONSE)); |
+} |
+ |
+// Response with no status line, and a weird port. Option to allow weird ports |
+// enabled. |
+TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPortAllowed) { |
+ MockRead data_reads[] = { |
+ MockRead("hello world"), MockRead(SYNCHRONOUS, OK), |
+ }; |
+ |
+ StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
+ session_deps_.http_09_on_non_default_ports_enabled = true; |
+ std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
+ |
+ std::unique_ptr<HttpTransaction> trans( |
+ new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
+ |
+ HttpRequestInfo request; |
+ request.method = "GET"; |
+ request.url = GURL("http://www.example.com:2000/"); |
+ TestCompletionCallback callback; |
+ int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
+ EXPECT_THAT(callback.GetResult(rv), IsOk()); |
+ |
+ const HttpResponseInfo* info = trans->GetResponseInfo(); |
+ ASSERT_TRUE(info->headers); |
+ EXPECT_EQ("HTTP/0.9 200 OK", info->headers->GetStatusLine()); |
+ |
+ // Don't bother to read the body - that's verified elsewhere, important thing |
+ // is that the option to allow HTTP/0.9 on non-default ports is respected. |
+} |
+ |
// Allow up to 4 bytes of junk to precede status line. |
TEST_F(HttpNetworkTransactionTest, StatusLineJunk3Bytes) { |
MockRead data_reads[] = { |
@@ -14296,7 +14348,7 @@ class FakeWebSocketBasicHandshakeStream : public WebSocketHandshakeStreamBase { |
FakeWebSocketBasicHandshakeStream( |
std::unique_ptr<ClientSocketHandle> connection, |
bool using_proxy) |
- : state_(std::move(connection), using_proxy) {} |
+ : state_(std::move(connection), using_proxy, false) {} |
// Fake implementation of HttpStreamBase methods. |
// This ends up being quite "real" because this object has to really send data |