OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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_config.h" | 5 #include "net/quic/quic_config.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "net/quic/crypto/crypto_handshake_message.h" | 10 #include "net/quic/crypto/crypto_handshake_message.h" |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 : max_time_before_crypto_handshake_(QuicTime::Delta::Zero()), | 428 : max_time_before_crypto_handshake_(QuicTime::Delta::Zero()), |
429 max_idle_time_before_crypto_handshake_(QuicTime::Delta::Zero()), | 429 max_idle_time_before_crypto_handshake_(QuicTime::Delta::Zero()), |
430 max_undecryptable_packets_(0), | 430 max_undecryptable_packets_(0), |
431 congestion_feedback_(kCGST, PRESENCE_REQUIRED), | 431 congestion_feedback_(kCGST, PRESENCE_REQUIRED), |
432 connection_options_(kCOPT, PRESENCE_OPTIONAL), | 432 connection_options_(kCOPT, PRESENCE_OPTIONAL), |
433 idle_connection_state_lifetime_seconds_(kICSL, PRESENCE_REQUIRED), | 433 idle_connection_state_lifetime_seconds_(kICSL, PRESENCE_REQUIRED), |
434 silent_close_(kSCLS, PRESENCE_OPTIONAL), | 434 silent_close_(kSCLS, PRESENCE_OPTIONAL), |
435 max_streams_per_connection_(kMSPC, PRESENCE_REQUIRED), | 435 max_streams_per_connection_(kMSPC, PRESENCE_REQUIRED), |
436 bytes_for_connection_id_(kTCID, PRESENCE_OPTIONAL), | 436 bytes_for_connection_id_(kTCID, PRESENCE_OPTIONAL), |
437 initial_round_trip_time_us_(kIRTT, PRESENCE_OPTIONAL), | 437 initial_round_trip_time_us_(kIRTT, PRESENCE_OPTIONAL), |
438 // TODO(rjshade): Remove this when retiring QUIC_VERSION_19. | |
439 initial_flow_control_window_bytes_(kIFCW, PRESENCE_OPTIONAL), | |
440 // TODO(rjshade): Make this PRESENCE_REQUIRED when retiring | |
441 // QUIC_VERSION_19. | |
442 initial_stream_flow_control_window_bytes_(kSFCW, PRESENCE_OPTIONAL), | 438 initial_stream_flow_control_window_bytes_(kSFCW, PRESENCE_OPTIONAL), |
443 // TODO(rjshade): Make this PRESENCE_REQUIRED when retiring | |
444 // QUIC_VERSION_19. | |
445 initial_session_flow_control_window_bytes_(kCFCW, PRESENCE_OPTIONAL), | 439 initial_session_flow_control_window_bytes_(kCFCW, PRESENCE_OPTIONAL), |
446 socket_receive_buffer_(kSRBF, PRESENCE_OPTIONAL) { | 440 socket_receive_buffer_(kSRBF, PRESENCE_OPTIONAL) { |
447 SetDefaults(); | 441 SetDefaults(); |
448 } | 442 } |
449 | 443 |
450 QuicConfig::~QuicConfig() {} | 444 QuicConfig::~QuicConfig() {} |
451 | 445 |
452 void QuicConfig::SetCongestionFeedback( | 446 void QuicConfig::SetCongestionFeedback( |
453 const QuicTagVector& congestion_feedback, | 447 const QuicTagVector& congestion_feedback, |
454 QuicTag default_congestion_feedback) { | 448 QuicTag default_congestion_feedback) { |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
539 } | 533 } |
540 | 534 |
541 bool QuicConfig::HasInitialRoundTripTimeUsToSend() const { | 535 bool QuicConfig::HasInitialRoundTripTimeUsToSend() const { |
542 return initial_round_trip_time_us_.HasSendValue(); | 536 return initial_round_trip_time_us_.HasSendValue(); |
543 } | 537 } |
544 | 538 |
545 uint32 QuicConfig::GetInitialRoundTripTimeUsToSend() const { | 539 uint32 QuicConfig::GetInitialRoundTripTimeUsToSend() const { |
546 return initial_round_trip_time_us_.GetSendValue(); | 540 return initial_round_trip_time_us_.GetSendValue(); |
547 } | 541 } |
548 | 542 |
549 void QuicConfig::SetInitialFlowControlWindowToSend(uint32 window_bytes) { | |
550 if (window_bytes < kMinimumFlowControlSendWindow) { | |
551 LOG(DFATAL) << "Initial flow control receive window (" << window_bytes | |
552 << ") cannot be set lower than default (" | |
553 << kMinimumFlowControlSendWindow << ")."; | |
554 window_bytes = kMinimumFlowControlSendWindow; | |
555 } | |
556 initial_flow_control_window_bytes_.SetSendValue(window_bytes); | |
557 } | |
558 | |
559 uint32 QuicConfig::GetInitialFlowControlWindowToSend() const { | |
560 return initial_flow_control_window_bytes_.GetSendValue(); | |
561 } | |
562 | |
563 bool QuicConfig::HasReceivedInitialFlowControlWindowBytes() const { | |
564 return initial_flow_control_window_bytes_.HasReceivedValue(); | |
565 } | |
566 | |
567 uint32 QuicConfig::ReceivedInitialFlowControlWindowBytes() const { | |
568 return initial_flow_control_window_bytes_.GetReceivedValue(); | |
569 } | |
570 | |
571 void QuicConfig::SetInitialStreamFlowControlWindowToSend(uint32 window_bytes) { | 543 void QuicConfig::SetInitialStreamFlowControlWindowToSend(uint32 window_bytes) { |
572 if (window_bytes < kMinimumFlowControlSendWindow) { | 544 if (window_bytes < kMinimumFlowControlSendWindow) { |
573 LOG(DFATAL) << "Initial stream flow control receive window (" | 545 LOG(DFATAL) << "Initial stream flow control receive window (" |
574 << window_bytes << ") cannot be set lower than default (" | 546 << window_bytes << ") cannot be set lower than default (" |
575 << kMinimumFlowControlSendWindow << ")."; | 547 << kMinimumFlowControlSendWindow << ")."; |
576 window_bytes = kMinimumFlowControlSendWindow; | 548 window_bytes = kMinimumFlowControlSendWindow; |
577 } | 549 } |
578 initial_stream_flow_control_window_bytes_.SetSendValue(window_bytes); | 550 initial_stream_flow_control_window_bytes_.SetSendValue(window_bytes); |
579 } | 551 } |
580 | 552 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
649 silent_close_.set(0, 0); | 621 silent_close_.set(0, 0); |
650 } | 622 } |
651 SetMaxStreamsPerConnection(kDefaultMaxStreamsPerConnection, | 623 SetMaxStreamsPerConnection(kDefaultMaxStreamsPerConnection, |
652 kDefaultMaxStreamsPerConnection); | 624 kDefaultMaxStreamsPerConnection); |
653 max_time_before_crypto_handshake_ = | 625 max_time_before_crypto_handshake_ = |
654 QuicTime::Delta::FromSeconds(kMaxTimeForCryptoHandshakeSecs); | 626 QuicTime::Delta::FromSeconds(kMaxTimeForCryptoHandshakeSecs); |
655 max_idle_time_before_crypto_handshake_ = | 627 max_idle_time_before_crypto_handshake_ = |
656 QuicTime::Delta::FromSeconds(kInitialIdleTimeoutSecs); | 628 QuicTime::Delta::FromSeconds(kInitialIdleTimeoutSecs); |
657 max_undecryptable_packets_ = kDefaultMaxUndecryptablePackets; | 629 max_undecryptable_packets_ = kDefaultMaxUndecryptablePackets; |
658 | 630 |
659 SetInitialFlowControlWindowToSend(kMinimumFlowControlSendWindow); | |
660 SetInitialStreamFlowControlWindowToSend(kMinimumFlowControlSendWindow); | 631 SetInitialStreamFlowControlWindowToSend(kMinimumFlowControlSendWindow); |
661 SetInitialSessionFlowControlWindowToSend(kMinimumFlowControlSendWindow); | 632 SetInitialSessionFlowControlWindowToSend(kMinimumFlowControlSendWindow); |
662 } | 633 } |
663 | 634 |
664 void QuicConfig::ToHandshakeMessage(CryptoHandshakeMessage* out) const { | 635 void QuicConfig::ToHandshakeMessage(CryptoHandshakeMessage* out) const { |
665 congestion_feedback_.ToHandshakeMessage(out); | 636 congestion_feedback_.ToHandshakeMessage(out); |
666 idle_connection_state_lifetime_seconds_.ToHandshakeMessage(out); | 637 idle_connection_state_lifetime_seconds_.ToHandshakeMessage(out); |
667 silent_close_.ToHandshakeMessage(out); | 638 silent_close_.ToHandshakeMessage(out); |
668 max_streams_per_connection_.ToHandshakeMessage(out); | 639 max_streams_per_connection_.ToHandshakeMessage(out); |
669 bytes_for_connection_id_.ToHandshakeMessage(out); | 640 bytes_for_connection_id_.ToHandshakeMessage(out); |
670 initial_round_trip_time_us_.ToHandshakeMessage(out); | 641 initial_round_trip_time_us_.ToHandshakeMessage(out); |
671 initial_flow_control_window_bytes_.ToHandshakeMessage(out); | |
672 initial_stream_flow_control_window_bytes_.ToHandshakeMessage(out); | 642 initial_stream_flow_control_window_bytes_.ToHandshakeMessage(out); |
673 initial_session_flow_control_window_bytes_.ToHandshakeMessage(out); | 643 initial_session_flow_control_window_bytes_.ToHandshakeMessage(out); |
674 socket_receive_buffer_.ToHandshakeMessage(out); | 644 socket_receive_buffer_.ToHandshakeMessage(out); |
675 connection_options_.ToHandshakeMessage(out); | 645 connection_options_.ToHandshakeMessage(out); |
676 } | 646 } |
677 | 647 |
678 QuicErrorCode QuicConfig::ProcessPeerHello( | 648 QuicErrorCode QuicConfig::ProcessPeerHello( |
679 const CryptoHandshakeMessage& peer_hello, | 649 const CryptoHandshakeMessage& peer_hello, |
680 HelloType hello_type, | 650 HelloType hello_type, |
681 string* error_details) { | 651 string* error_details) { |
(...skipping 18 matching lines...) Expand all Loading... |
700 } | 670 } |
701 if (error == QUIC_NO_ERROR) { | 671 if (error == QUIC_NO_ERROR) { |
702 error = bytes_for_connection_id_.ProcessPeerHello( | 672 error = bytes_for_connection_id_.ProcessPeerHello( |
703 peer_hello, hello_type, error_details); | 673 peer_hello, hello_type, error_details); |
704 } | 674 } |
705 if (error == QUIC_NO_ERROR) { | 675 if (error == QUIC_NO_ERROR) { |
706 error = initial_round_trip_time_us_.ProcessPeerHello( | 676 error = initial_round_trip_time_us_.ProcessPeerHello( |
707 peer_hello, hello_type, error_details); | 677 peer_hello, hello_type, error_details); |
708 } | 678 } |
709 if (error == QUIC_NO_ERROR) { | 679 if (error == QUIC_NO_ERROR) { |
710 error = initial_flow_control_window_bytes_.ProcessPeerHello( | |
711 peer_hello, hello_type, error_details); | |
712 } | |
713 if (error == QUIC_NO_ERROR) { | |
714 error = initial_stream_flow_control_window_bytes_.ProcessPeerHello( | 680 error = initial_stream_flow_control_window_bytes_.ProcessPeerHello( |
715 peer_hello, hello_type, error_details); | 681 peer_hello, hello_type, error_details); |
716 } | 682 } |
717 if (error == QUIC_NO_ERROR) { | 683 if (error == QUIC_NO_ERROR) { |
718 error = initial_session_flow_control_window_bytes_.ProcessPeerHello( | 684 error = initial_session_flow_control_window_bytes_.ProcessPeerHello( |
719 peer_hello, hello_type, error_details); | 685 peer_hello, hello_type, error_details); |
720 } | 686 } |
721 if (error == QUIC_NO_ERROR) { | 687 if (error == QUIC_NO_ERROR) { |
722 error = socket_receive_buffer_.ProcessPeerHello( | 688 error = socket_receive_buffer_.ProcessPeerHello( |
723 peer_hello, hello_type, error_details); | 689 peer_hello, hello_type, error_details); |
724 } | 690 } |
725 if (error == QUIC_NO_ERROR) { | 691 if (error == QUIC_NO_ERROR) { |
726 error = connection_options_.ProcessPeerHello( | 692 error = connection_options_.ProcessPeerHello( |
727 peer_hello, hello_type, error_details); | 693 peer_hello, hello_type, error_details); |
728 } | 694 } |
729 return error; | 695 return error; |
730 } | 696 } |
731 | 697 |
732 } // namespace net | 698 } // namespace net |
OLD | NEW |