src/net/third_party/quiche/src/quic/core/quic_stream_id_manager.cc
// The peer sends a streams blocked frame when it can not open any more
// streams because it has runs into the limit.
The peer sends a streams blocked frame when it can not open any more
streams because it has runs into the limit.
The peer sends a streams blocked frame when it can not open any more streams because it has runs into the limit .
bool QuicStreamIdManager::OnStreamsBlockedFrame(
    const QuicStreamsBlockedFrame& frame,
    std::string* error_details) {
  DCHECK_EQ(frame.unidirectional, unidirectional_);
  if (frame.stream_count > incoming_advertised_max_streams_) {
    *error_details = quiche::QuicheStrCat(
        "StreamsBlockedFrame's stream count ", frame.stream_count,
        " exceeds incoming max stream ", incoming_advertised_max_streams_);
    return false;
  }
  if (frame.stream_count < incoming_actual_max_streams_) {
    SendMaxStreamsFrame();
  }
  return true;
}
bool QuicStreamIdManager :: OnStreamsBlockedFrame ( const QuicStreamsBlockedFrame & frame , std :: string * error_details ) { DCHECK_EQ ( frame . unidirectional , unidirectional_ ) ; if ( frame . stream_count > incoming_advertised_max_streams_ ) { * error_details = quiche :: QuicheStrCat ( " " , frame . stream_count , " " , incoming_advertised_max_streams_ ) ; return false ; } if ( frame . stream_count < incoming_actual_max_streams_ ) { SendMaxStreamsFrame ( ) ; } return true ; }
The peer sends a streams blocked frame when it can not open any more
streams because it has runs into the limit.
The peer sends a streams blocked frame when it can not open any more streams because it has runs into the limit .
// Ensure that the frame has the correct directionality. // Peer thinks it can send more streams that we've told it. // This is a protocol error. // Peer thinks it's blocked on a stream count that is less than our current // max. Inform the peer of the correct stream count. Sending a MAX_STREAMS // frame in this case is not controlled by the window.