| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |