|
|
QUIC: retransmit packets with the correct encryption.
This change does four things:
* Splits the concept of a completed handshake in two: when encryption is
established and when the server has confirmed the handshake. In order to do
0-RTT, we have to start sending after the first of those events.
* Retransmits packets using the same encryption level as they were sent with.
Without this, the loss of a client hello message is fatal to the connection
because it will be retransmitted under encryption and the server will never
be able to process it.
* Makes decryption failures an ignored error. This is needed because, if a
client hello message is lost, the subsequent packets will be encrypted and
the
server won't have the decrypter to process them.
* Changes how decrypters are handled by the framer. A server now replaces its
decrypter completely - thus removing the NullDecrypter. The client now has
latching alternative decrypters which replace the primary decrypter when
used. This doesn't completely close the hole: the connection still needs to
worry about plaintext packets injected into the client.
This change does not implement the correct fallback for the server rejecting a
full client hello. It also doesn't implement a limit for the number of packets
that we'll send without the server confirming the handshake. I'm hoping that
rch can do that much more easily than I can!
Merge internal change: 44690884
R=rch@chromium.org
BUG=
Total comments: 5
Total comments: 6
Total comments: 8
Total comments: 2
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+769 lines, -326 lines) |
Patch |
 |
M |
net/quic/quic_client_session.h
|
View
|
1
2
|
1 chunk |
+4 lines, -1 line |
0 comments
|
Download
|
 |
M |
net/quic/quic_client_session.cc
|
View
|
1
2
3
4
|
5 chunks |
+19 lines, -5 lines |
2 comments
|
Download
|
 |
M |
net/quic/quic_client_session_test.cc
|
View
|
1
2
3
|
3 chunks |
+9 lines, -12 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_connection.h
|
View
|
|
4 chunks |
+47 lines, -35 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_connection.cc
|
View
|
|
12 chunks |
+51 lines, -19 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_connection_helper_test.cc
|
View
|
|
4 chunks |
+7 lines, -8 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_connection_test.cc
|
View
|
1
2
|
25 chunks |
+211 lines, -30 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_crypto_client_stream.h
|
View
|
|
1 chunk |
+0 lines, -6 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_crypto_client_stream.cc
|
View
|
1
|
5 chunks |
+26 lines, -18 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_crypto_client_stream_test.cc
|
View
|
|
2 chunks |
+4 lines, -2 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_crypto_server_stream.cc
|
View
|
|
2 chunks |
+12 lines, -7 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_crypto_server_stream_test.cc
|
View
|
1
|
2 chunks |
+4 lines, -2 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_crypto_stream.h
|
View
|
|
1 chunk |
+4 lines, -3 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_crypto_stream.cc
|
View
|
|
3 chunks |
+4 lines, -8 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_crypto_stream_test.cc
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
net/quic/quic_framer.h
|
View
|
|
3 chunks |
+34 lines, -14 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_framer.cc
|
View
|
|
5 chunks |
+67 lines, -21 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_framer_test.cc
|
View
|
|
7 chunks |
+13 lines, -7 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_http_stream_test.cc
|
View
|
|
3 chunks |
+4 lines, -7 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_network_transaction_unittest.cc
|
View
|
1
2
3
4
5
6
|
3 chunks |
+70 lines, -14 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_packet_creator_test.cc
|
View
|
|
2 chunks |
+4 lines, -11 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_packet_generator_test.cc
|
View
|
|
1 chunk |
+1 line, -5 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_protocol.h
|
View
|
1
|
2 chunks |
+18 lines, -0 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_protocol.cc
|
View
|
|
2 chunks |
+7 lines, -1 line |
0 comments
|
Download
|
 |
M |
net/quic/quic_session.h
|
View
|
|
2 chunks |
+34 lines, -7 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_session.cc
|
View
|
|
1 chunk |
+7 lines, -4 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_session_test.cc
|
View
|
|
2 chunks |
+6 lines, -4 lines |
0 comments
|
Download
|
 |
M |
net/quic/quic_stream_factory_test.cc
|
View
|
|
2 chunks |
+6 lines, -14 lines |
0 comments
|
Download
|
 |
M |
net/quic/test_tools/crypto_test_utils.cc
|
View
|
|
2 chunks |
+24 lines, -17 lines |
0 comments
|
Download
|
 |
M |
net/quic/test_tools/mock_crypto_client_stream.h
|
View
|
1
2
3
4
5
6
|
2 chunks |
+20 lines, -4 lines |
0 comments
|
Download
|
 |
M |
net/quic/test_tools/mock_crypto_client_stream.cc
|
View
|
1
2
3
4
5
6
|
2 chunks |
+15 lines, -3 lines |
0 comments
|
Download
|
 |
M |
net/quic/test_tools/mock_crypto_client_stream_factory.h
|
View
|
1
2
3
4
5
6
|
2 chunks |
+11 lines, -0 lines |
0 comments
|
Download
|
 |
M |
net/quic/test_tools/mock_crypto_client_stream_factory.cc
|
View
|
1
2
3
4
5
6
|
2 chunks |
+5 lines, -2 lines |
0 comments
|
Download
|
 |
M |
net/quic/test_tools/quic_test_utils.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
net/quic/test_tools/quic_test_utils.cc
|
View
|
|
2 chunks |
+2 lines, -5 lines |
0 comments
|
Download
|
 |
M |
net/quic/test_tools/simple_quic_framer.cc
|
View
|
|
2 chunks |
+3 lines, -6 lines |
0 comments
|
Download
|
 |
M |
net/tools/quic/quic_client.h
|
View
|
|
1 chunk |
+4 lines, -4 lines |
0 comments
|
Download
|
 |
M |
net/tools/quic/quic_client.cc
|
View
|
|
2 chunks |
+3 lines, -3 lines |
0 comments
|
Download
|
 |
M |
net/tools/quic/quic_client_session.cc
|
View
|
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
net/tools/quic/quic_epoll_connection_helper_test.cc
|
View
|
|
3 chunks |
+3 lines, -11 lines |
0 comments
|
Download
|
 |
M |
net/tools/quic/quic_time_wait_list_manager.cc
|
View
|
|
1 chunk |
+1 line, -3 lines |
0 comments
|
Download
|
Total messages: 17 (0 generated)
|