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

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

Issue 1467453007: Deprecate FLAGS_quic_read_packets_full_recvmmsg. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@107796215
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « net/quic/quic_session.h ('k') | net/tools/quic/quic_packet_reader.cc » ('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_session.h" 5 #include "net/quic/quic_session.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "net/quic/crypto/proof_verifier.h" 8 #include "net/quic/crypto/proof_verifier.h"
9 #include "net/quic/quic_connection.h" 9 #include "net/quic/quic_connection.h"
10 #include "net/quic/quic_flags.h" 10 #include "net/quic/quic_flags.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 max_open_streams_(config_.MaxStreamsPerConnection()), 106 max_open_streams_(config_.MaxStreamsPerConnection()),
107 next_outgoing_stream_id_(perspective() == Perspective::IS_SERVER ? 2 : 3), 107 next_outgoing_stream_id_(perspective() == Perspective::IS_SERVER ? 2 : 3),
108 largest_peer_created_stream_id_( 108 largest_peer_created_stream_id_(
109 perspective() == Perspective::IS_SERVER ? 1 : 0), 109 perspective() == Perspective::IS_SERVER ? 1 : 0),
110 error_(QUIC_NO_ERROR), 110 error_(QUIC_NO_ERROR),
111 flow_controller_(connection_.get(), 111 flow_controller_(connection_.get(),
112 0, 112 0,
113 perspective(), 113 perspective(),
114 kMinimumFlowControlSendWindow, 114 kMinimumFlowControlSendWindow,
115 config_.GetInitialSessionFlowControlWindowToSend(), 115 config_.GetInitialSessionFlowControlWindowToSend(),
116 false), 116 false) {}
117 has_pending_handshake_(false) {}
118 117
119 void QuicSession::Initialize() { 118 void QuicSession::Initialize() {
120 connection_->set_visitor(visitor_shim_.get()); 119 connection_->set_visitor(visitor_shim_.get());
121 connection_->SetFromConfig(config_); 120 connection_->SetFromConfig(config_);
122 121
123 DCHECK_EQ(kCryptoStreamId, GetCryptoStream()->id()); 122 DCHECK_EQ(kCryptoStreamId, GetCryptoStream()->id());
124 static_stream_map_[kCryptoStreamId] = GetCryptoStream(); 123 static_stream_map_[kCryptoStreamId] = GetCryptoStream();
125 } 124 }
126 125
127 QuicSession::~QuicSession() { 126 QuicSession::~QuicSession() {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 write_blocked_streams_.HasWriteBlockedDataStreams())) { 251 write_blocked_streams_.HasWriteBlockedDataStreams())) {
253 // Writing one stream removed another!? Something's broken. 252 // Writing one stream removed another!? Something's broken.
254 LOG(DFATAL) << "WriteBlockedStream is missing"; 253 LOG(DFATAL) << "WriteBlockedStream is missing";
255 connection_->CloseConnection(QUIC_INTERNAL_ERROR, false); 254 connection_->CloseConnection(QUIC_INTERNAL_ERROR, false);
256 return; 255 return;
257 } 256 }
258 if (!connection_->CanWriteStreamData()) { 257 if (!connection_->CanWriteStreamData()) {
259 return; 258 return;
260 } 259 }
261 QuicStreamId stream_id = write_blocked_streams_.PopFront(); 260 QuicStreamId stream_id = write_blocked_streams_.PopFront();
262 if (stream_id == kCryptoStreamId) {
263 has_pending_handshake_ = false; // We just popped it.
264 }
265 ReliableQuicStream* stream = GetStream(stream_id); 261 ReliableQuicStream* stream = GetStream(stream_id);
266 if (stream != nullptr && !stream->flow_controller()->IsBlocked()) { 262 if (stream != nullptr && !stream->flow_controller()->IsBlocked()) {
267 // If the stream can't write all bytes it'll re-add itself to the blocked 263 // If the stream can't write all bytes it'll re-add itself to the blocked
268 // list. 264 // list.
269 stream->OnCanWrite(); 265 stream->OnCanWrite();
270 } 266 }
271 } 267 }
272 } 268 }
273 269
274 bool QuicSession::WillingAndAbleToWrite() const { 270 bool QuicSession::WillingAndAbleToWrite() const {
275 // If the crypto or headers streams are blocked, we want to schedule a write - 271 // If the crypto or headers streams are blocked, we want to schedule a write -
276 // they don't get blocked by connection level flow control. Otherwise only 272 // they don't get blocked by connection level flow control. Otherwise only
277 // schedule a write if we are not flow control blocked at the connection 273 // schedule a write if we are not flow control blocked at the connection
278 // level. 274 // level.
279 return write_blocked_streams_.HasWriteBlockedCryptoOrHeadersStream() || 275 return write_blocked_streams_.HasWriteBlockedCryptoOrHeadersStream() ||
280 (!flow_controller_.IsBlocked() && 276 (!flow_controller_.IsBlocked() &&
281 write_blocked_streams_.HasWriteBlockedDataStreams()); 277 write_blocked_streams_.HasWriteBlockedDataStreams());
282 } 278 }
283 279
284 bool QuicSession::HasPendingHandshake() const { 280 bool QuicSession::HasPendingHandshake() const {
285 return has_pending_handshake_; 281 return write_blocked_streams_.crypto_stream_blocked();
286 } 282 }
287 283
288 bool QuicSession::HasOpenDynamicStreams() const { 284 bool QuicSession::HasOpenDynamicStreams() const {
289 return GetNumOpenStreams() > 0; 285 return GetNumOpenStreams() > 0;
290 } 286 }
291 287
292 QuicConsumedData QuicSession::WritevData( 288 QuicConsumedData QuicSession::WritevData(
293 QuicStreamId id, 289 QuicStreamId id,
294 QuicIOVector iov, 290 QuicIOVector iov,
295 QuicStreamOffset offset, 291 QuicStreamOffset offset,
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 if (stream != nullptr) { 737 if (stream != nullptr) {
742 LOG_IF(DFATAL, priority != stream->Priority()) 738 LOG_IF(DFATAL, priority != stream->Priority())
743 << ENDPOINT << "Stream " << id 739 << ENDPOINT << "Stream " << id
744 << "Priorities do not match. Got: " << static_cast<int>(priority) 740 << "Priorities do not match. Got: " << static_cast<int>(priority)
745 << " Expected: " << static_cast<int>(stream->Priority()); 741 << " Expected: " << static_cast<int>(stream->Priority());
746 } else { 742 } else {
747 LOG(DFATAL) << "Marking unknown stream " << id << " blocked."; 743 LOG(DFATAL) << "Marking unknown stream " << id << " blocked.";
748 } 744 }
749 #endif 745 #endif
750 746
751 if (id == kCryptoStreamId) {
752 DCHECK(!has_pending_handshake_);
753 has_pending_handshake_ = true;
754 // TODO(jar): Be sure to use the highest priority for the crypto stream,
755 // perhaps by adding a "special" priority for it that is higher than
756 // kHighestPriority.
757 priority = kHighestPriority;
758 }
759 write_blocked_streams_.AddStream(id, priority); 747 write_blocked_streams_.AddStream(id, priority);
760 } 748 }
761 749
762 bool QuicSession::HasDataToWrite() const { 750 bool QuicSession::HasDataToWrite() const {
763 return write_blocked_streams_.HasWriteBlockedCryptoOrHeadersStream() || 751 return write_blocked_streams_.HasWriteBlockedCryptoOrHeadersStream() ||
764 write_blocked_streams_.HasWriteBlockedDataStreams() || 752 write_blocked_streams_.HasWriteBlockedDataStreams() ||
765 connection_->HasQueuedData(); 753 connection_->HasQueuedData();
766 } 754 }
767 755
768 void QuicSession::PostProcessAfterData() { 756 void QuicSession::PostProcessAfterData() {
(...skipping 13 matching lines...) Expand all
782 } 770 }
783 for (auto const& kv : dynamic_stream_map_) { 771 for (auto const& kv : dynamic_stream_map_) {
784 if (kv.second->flow_controller()->IsBlocked()) { 772 if (kv.second->flow_controller()->IsBlocked()) {
785 return true; 773 return true;
786 } 774 }
787 } 775 }
788 return false; 776 return false;
789 } 777 }
790 778
791 } // namespace net 779 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_session.h ('k') | net/tools/quic/quic_packet_reader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698