| Index: net/quic/quic_chromium_client_session.cc
|
| diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc
|
| index 988a68382210bf0be1be7bab08ab3a722937cd95..63c6d1050cd7ec62b4498c3b64e3bc8a7c85a12e 100644
|
| --- a/net/quic/quic_chromium_client_session.cc
|
| +++ b/net/quic/quic_chromium_client_session.cc
|
| @@ -622,10 +622,37 @@ bool QuicChromiumClientSession::CanPool(const std::string& hostname,
|
| server_id_.host(), hostname);
|
| }
|
|
|
| -QuicSpdyStream* QuicChromiumClientSession::CreateIncomingDynamicStream(
|
| - QuicStreamId id) {
|
| - DLOG(ERROR) << "Server push not supported";
|
| - return nullptr;
|
| +QuicChromiumClientStream*
|
| +QuicChromiumClientSession::CreateIncomingDynamicStream(QuicStreamId id) {
|
| + if (!connection()->connected()) {
|
| + LOG(DFATAL) << "ShouldCreateIncomingDynamicStream called when disconnected";
|
| + return nullptr;
|
| + }
|
| + if (goaway_received()) {
|
| + DVLOG(1) << "Failed to create a new outgoing stream. "
|
| + << "Already received goaway.";
|
| + return nullptr;
|
| + }
|
| + if (going_away_) {
|
| + return nullptr;
|
| + }
|
| + if (id % 2 != 0) {
|
| + LOG(WARNING) << "Received invalid push stream id " << id;
|
| + connection()->SendConnectionCloseWithDetails(
|
| + QUIC_INVALID_STREAM_ID, "Server created odd numbered stream");
|
| + return nullptr;
|
| + }
|
| + return CreateIncomingReliableStreamImpl(id);
|
| +}
|
| +
|
| +QuicChromiumClientStream*
|
| +QuicChromiumClientSession::CreateIncomingReliableStreamImpl(QuicStreamId id) {
|
| + DCHECK(connection()->connected());
|
| + QuicChromiumClientStream* stream =
|
| + new QuicChromiumClientStream(id, this, net_log_);
|
| + stream->CloseWriteSide();
|
| + ++num_total_streams_;
|
| + return stream;
|
| }
|
|
|
| void QuicChromiumClientSession::CloseStream(QuicStreamId stream_id) {
|
|
|