Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(192)

Side by Side Diff: net/quic/quic_connection.cc

Issue 268343002: Allow 0-RTT handshakes for QUIC HTTPS requests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | net/quic/quic_fec_group.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "net/quic/quic_connection.h" 5 #include "net/quic/quic_connection.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 #include <sys/types.h> 8 #include <sys/types.h>
9 #include <algorithm> 9 #include <algorithm>
10 #include <iterator> 10 #include <iterator>
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 last_header_ = header; 497 last_header_ = header;
498 DCHECK(connected_); 498 DCHECK(connected_);
499 return true; 499 return true;
500 } 500 }
501 501
502 void QuicConnection::OnFecProtectedPayload(StringPiece payload) { 502 void QuicConnection::OnFecProtectedPayload(StringPiece payload) {
503 DCHECK_EQ(IN_FEC_GROUP, last_header_.is_in_fec_group); 503 DCHECK_EQ(IN_FEC_GROUP, last_header_.is_in_fec_group);
504 DCHECK_NE(0u, last_header_.fec_group); 504 DCHECK_NE(0u, last_header_.fec_group);
505 QuicFecGroup* group = GetFecGroup(); 505 QuicFecGroup* group = GetFecGroup();
506 if (group != NULL) { 506 if (group != NULL) {
507 group->Update(last_header_, payload); 507 group->Update(last_decrypted_packet_level_, last_header_, payload);
508 } 508 }
509 } 509 }
510 510
511 bool QuicConnection::OnStreamFrame(const QuicStreamFrame& frame) { 511 bool QuicConnection::OnStreamFrame(const QuicStreamFrame& frame) {
512 DCHECK(connected_); 512 DCHECK(connected_);
513 if (debug_visitor_) { 513 if (debug_visitor_) {
514 debug_visitor_->OnStreamFrame(frame); 514 debug_visitor_->OnStreamFrame(frame);
515 } 515 }
516 if (frame.stream_id != kCryptoStreamId && 516 if (frame.stream_id != kCryptoStreamId &&
517 last_decrypted_packet_level_ == ENCRYPTION_NONE) { 517 last_decrypted_packet_level_ == ENCRYPTION_NONE) {
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 } 707 }
708 708
709 return true; 709 return true;
710 } 710 }
711 711
712 void QuicConnection::OnFecData(const QuicFecData& fec) { 712 void QuicConnection::OnFecData(const QuicFecData& fec) {
713 DCHECK_EQ(IN_FEC_GROUP, last_header_.is_in_fec_group); 713 DCHECK_EQ(IN_FEC_GROUP, last_header_.is_in_fec_group);
714 DCHECK_NE(0u, last_header_.fec_group); 714 DCHECK_NE(0u, last_header_.fec_group);
715 QuicFecGroup* group = GetFecGroup(); 715 QuicFecGroup* group = GetFecGroup();
716 if (group != NULL) { 716 if (group != NULL) {
717 group->UpdateFec(last_header_.packet_sequence_number, fec); 717 group->UpdateFec(last_decrypted_packet_level_,
718 last_header_.packet_sequence_number, fec);
718 } 719 }
719 } 720 }
720 721
721 bool QuicConnection::OnRstStreamFrame(const QuicRstStreamFrame& frame) { 722 bool QuicConnection::OnRstStreamFrame(const QuicRstStreamFrame& frame) {
722 DCHECK(connected_); 723 DCHECK(connected_);
723 if (debug_visitor_) { 724 if (debug_visitor_) {
724 debug_visitor_->OnRstStreamFrame(frame); 725 debug_visitor_->OnRstStreamFrame(frame);
725 } 726 }
726 DVLOG(1) << ENDPOINT << "Stream reset with error " 727 DVLOG(1) << ENDPOINT << "Stream reset with error "
727 << QuicUtils::StreamErrorToString(frame.error_code); 728 << QuicUtils::StreamErrorToString(frame.error_code);
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after
1618 QuicEncrypter* encrypter) { 1619 QuicEncrypter* encrypter) {
1619 framer_.SetEncrypter(level, encrypter); 1620 framer_.SetEncrypter(level, encrypter);
1620 } 1621 }
1621 1622
1622 const QuicEncrypter* QuicConnection::encrypter(EncryptionLevel level) const { 1623 const QuicEncrypter* QuicConnection::encrypter(EncryptionLevel level) const {
1623 return framer_.encrypter(level); 1624 return framer_.encrypter(level);
1624 } 1625 }
1625 1626
1626 void QuicConnection::SetDefaultEncryptionLevel(EncryptionLevel level) { 1627 void QuicConnection::SetDefaultEncryptionLevel(EncryptionLevel level) {
1627 encryption_level_ = level; 1628 encryption_level_ = level;
1629 packet_creator_.set_encryption_level(level);
1628 } 1630 }
1629 1631
1630 void QuicConnection::SetDecrypter(QuicDecrypter* decrypter, 1632 void QuicConnection::SetDecrypter(QuicDecrypter* decrypter,
1631 EncryptionLevel level) { 1633 EncryptionLevel level) {
1632 framer_.SetDecrypter(decrypter, level); 1634 framer_.SetDecrypter(decrypter, level);
1633 } 1635 }
1634 1636
1635 void QuicConnection::SetAlternativeDecrypter(QuicDecrypter* decrypter, 1637 void QuicConnection::SetAlternativeDecrypter(QuicDecrypter* decrypter,
1636 EncryptionLevel level, 1638 EncryptionLevel level,
1637 bool latch_once_used) { 1639 bool latch_once_used) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1691 revived_header.public_header.connection_id_length = 1693 revived_header.public_header.connection_id_length =
1692 last_header_.public_header.connection_id_length; 1694 last_header_.public_header.connection_id_length;
1693 revived_header.public_header.version_flag = false; 1695 revived_header.public_header.version_flag = false;
1694 revived_header.public_header.reset_flag = false; 1696 revived_header.public_header.reset_flag = false;
1695 revived_header.public_header.sequence_number_length = 1697 revived_header.public_header.sequence_number_length =
1696 last_header_.public_header.sequence_number_length; 1698 last_header_.public_header.sequence_number_length;
1697 revived_header.fec_flag = false; 1699 revived_header.fec_flag = false;
1698 revived_header.is_in_fec_group = NOT_IN_FEC_GROUP; 1700 revived_header.is_in_fec_group = NOT_IN_FEC_GROUP;
1699 revived_header.fec_group = 0; 1701 revived_header.fec_group = 0;
1700 group_map_.erase(last_header_.fec_group); 1702 group_map_.erase(last_header_.fec_group);
1703 last_decrypted_packet_level_ = group->effective_encryption_level();
1704 DCHECK_LT(last_decrypted_packet_level_, NUM_ENCRYPTION_LEVELS);
1701 delete group; 1705 delete group;
1702 1706
1703 last_packet_revived_ = true; 1707 last_packet_revived_ = true;
1704 if (debug_visitor_) { 1708 if (debug_visitor_) {
1705 debug_visitor_->OnRevivedPacket(revived_header, 1709 debug_visitor_->OnRevivedPacket(revived_header,
1706 StringPiece(revived_payload, len)); 1710 StringPiece(revived_payload, len));
1707 } 1711 }
1708 1712
1709 ++stats_.packets_revived; 1713 ++stats_.packets_revived;
1710 framer_.ProcessRevivedPacket(&revived_header, 1714 framer_.ProcessRevivedPacket(&revived_header,
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1945 // If we changed the generator's batch state, restore original batch state. 1949 // If we changed the generator's batch state, restore original batch state.
1946 if (!already_in_batch_mode_) { 1950 if (!already_in_batch_mode_) {
1947 DVLOG(1) << "Leaving Batch Mode."; 1951 DVLOG(1) << "Leaving Batch Mode.";
1948 connection_->packet_generator_.FinishBatchOperations(); 1952 connection_->packet_generator_.FinishBatchOperations();
1949 } 1953 }
1950 DCHECK_EQ(already_in_batch_mode_, 1954 DCHECK_EQ(already_in_batch_mode_,
1951 connection_->packet_generator_.InBatchMode()); 1955 connection_->packet_generator_.InBatchMode());
1952 } 1956 }
1953 1957
1954 } // namespace net 1958 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/quic/quic_fec_group.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698