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

Unified Diff: net/spdy/spdy_session.h

Issue 367963003: Separate client and server pushed streams limits. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | net/spdy/spdy_session.cc » ('j') | net/spdy/spdy_session_unittest.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_session.h
diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h
index b74b1ee8b0a54bfd983a11c17de4c81923e37bd2..f392353b5e1b4b83bcb2c95068792098825bafc7 100644
--- a/net/spdy/spdy_session.h
+++ b/net/spdy/spdy_session.h
@@ -427,10 +427,15 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
// available for testing and diagnostics.
size_t num_active_streams() const { return active_streams_.size(); }
size_t num_unclaimed_pushed_streams() const {
- return unclaimed_pushed_streams_.size();
+ return unclaimed_pushed_streams_.size();
}
size_t num_created_streams() const { return created_streams_.size(); }
+ size_t num_pushed_streams() const { return num_pushed_streams_; }
+ size_t num_active_pushed_streams() const {
+ return num_active_pushed_streams_;
+ }
+
size_t pending_create_stream_queue_size(RequestPriority priority) const {
DCHECK_GE(priority, MINIMUM_PRIORITY);
DCHECK_LE(priority, MAXIMUM_PRIORITY);
@@ -526,6 +531,9 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
FRIEND_TEST_ALL_PREFIXES(SpdySessionTest, StreamIdSpaceExhausted);
FRIEND_TEST_ALL_PREFIXES(SpdySessionTest, UnstallRacesWithStreamCreation);
FRIEND_TEST_ALL_PREFIXES(SpdySessionTest, GoAwayOnSessionFlowControlError);
+ FRIEND_TEST_ALL_PREFIXES(SpdySessionTest,
+ RejectPushedStreamExceedingConcurrencyLimit);
+ FRIEND_TEST_ALL_PREFIXES(SpdySessionTest, IgnoreReservedRemoteStreamsCount);
typedef std::deque<base::WeakPtr<SpdyStreamRequest> >
PendingStreamRequestQueue;
@@ -919,6 +927,10 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
hung_interval_ = duration;
}
+ void set_max_concurrent_pushed_streams(size_t value) {
+ max_concurrent_pushed_streams_ = value;
+ }
+
int64 pings_in_flight() const { return pings_in_flight_; }
uint32 next_ping_id() const { return next_ping_id_; }
@@ -984,6 +996,16 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
// |created_streams_| owns all its SpdyStream objects.
CreatedStreamSet created_streams_;
+ // Number of pushed streams. All active streams are stored in
+ // |active_streams_|, but it's better to know the number of push streams
+ // without traversing the whole collection.
+ size_t num_pushed_streams_;
+
+ // Number of active pushed streams in |active_streams_|, i.e. not in reserved
+ // remote state. Streams in reserved state are not counted towards any
+ // concurrency limits.
+ size_t num_active_pushed_streams_;
+
// The write queue.
SpdyWriteQueue write_queue_;
@@ -1022,6 +1044,7 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
// Limits
size_t max_concurrent_streams_; // 0 if no limit
Johnny 2014/07/07 19:58:49 I'm just realizing, it looks like we're not enforc
size_t max_concurrent_streams_limit_;
+ size_t max_concurrent_pushed_streams_;
// Some statistics counters for the session.
int streams_initiated_count_;
« no previous file with comments | « no previous file | net/spdy/spdy_session.cc » ('j') | net/spdy/spdy_session_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698