diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-08 20:36:08 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-08 20:36:08 +0000 |
commit | a6d0582bdec48c1cc11db94caac84399c9a78470 (patch) | |
tree | f8213556fbc9e92b912669caa1dba543e771d24b /net/url_request | |
parent | bfd5c1f571b8c8e195c3f6f6db33423e5eef057c (diff) | |
download | chromium_src-a6d0582bdec48c1cc11db94caac84399c9a78470.zip chromium_src-a6d0582bdec48c1cc11db94caac84399c9a78470.tar.gz chromium_src-a6d0582bdec48c1cc11db94caac84399c9a78470.tar.bz2 |
net: add a test to ensure that our TLS handshake doesn't get too large.
(I would like the test to assert that we have some headroom too, but we don't
have any to assert!)
BUG=none
R=rsleevi@chromium.org, wtc@chromium.org
Review URL: https://codereview.chromium.org/19557004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@216444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/url_request')
-rw-r--r-- | net/url_request/url_request_unittest.cc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 64f5ac1..0ce397e 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -5405,6 +5405,48 @@ TEST_F(HTTPSRequestTest, SSLSessionCacheShardTest) { } } +// Check that our ClientHello doesn't get too large because that's known to +// cause issues. +TEST_F(HTTPSRequestTest, ClientHelloTest) { + SpawnedTestServer::SSLOptions ssl_options; + SpawnedTestServer test_server( + SpawnedTestServer::TYPE_HTTPS, + ssl_options, + base::FilePath(FILE_PATH_LITERAL("net/data/ssl"))); + ASSERT_TRUE(test_server.Start()); + + // NPN/ALPN strings need to be enabled in order for the size of the handshake + // to be accurate as ALPN includes these strings in the handshake. This will + // be reset by NetTestSuite. + HttpStreamFactory::EnableNpnSpdy4a2(); + + TestDelegate d; + URLRequest r( + test_server.GetURL("client-hello-length"), &d, &default_context_); + + r.Start(); + EXPECT_TRUE(r.is_pending()); + + base::MessageLoop::current()->Run(); + + // The response will be a single, base 10 number which is the number of bytes + // in the ClientHello, including the handshake message type byte and 3 byte + // length at the beginning. + + EXPECT_EQ(1, d.response_started_count()); + unsigned client_hello_length; + ASSERT_TRUE(base::StringToUint(d.data_received(), &client_hello_length)); + // We add the overhead of an SNI extension because the request is sent to + // 127.0.0.1 and so doesn't have one otherwise. + const unsigned sni_overhead = 2 /* extension type */ + + 2 /* extension length */ + + 4 /* lengths in the server_name extension */ + + strlen("www.wellsfargo.com"); + static const unsigned session_id_overhead = 32; + + EXPECT_GT(256u, client_hello_length + sni_overhead + session_id_overhead); +} + class TestSSLConfigService : public SSLConfigService { public: TestSSLConfigService(bool ev_enabled, |