summaryrefslogtreecommitdiffstats
path: root/net/url_request
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-08 20:36:08 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-08 20:36:08 +0000
commita6d0582bdec48c1cc11db94caac84399c9a78470 (patch)
treef8213556fbc9e92b912669caa1dba543e771d24b /net/url_request
parentbfd5c1f571b8c8e195c3f6f6db33423e5eef057c (diff)
downloadchromium_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.cc42
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,