OLD | NEW |
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/spdy/spdy_session.h" | 5 #include "net/spdy/spdy_session.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 2303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2314 headers, response_time, recv_first_byte_time, stream)); | 2314 headers, response_time, recv_first_byte_time, stream)); |
2315 } else { | 2315 } else { |
2316 int rv = stream->OnAdditionalResponseHeadersReceived(headers); | 2316 int rv = stream->OnAdditionalResponseHeadersReceived(headers); |
2317 if (rv < 0) { | 2317 if (rv < 0) { |
2318 DCHECK_NE(rv, ERR_IO_PENDING); | 2318 DCHECK_NE(rv, ERR_IO_PENDING); |
2319 DCHECK(active_streams_.find(stream_id) == active_streams_.end()); | 2319 DCHECK(active_streams_.find(stream_id) == active_streams_.end()); |
2320 } | 2320 } |
2321 } | 2321 } |
2322 } | 2322 } |
2323 | 2323 |
| 2324 bool SpdySession::OnUnknownFrame(SpdyStreamId stream_id, int frame_type) { |
| 2325 // Validate stream id. |
| 2326 // Was the frame sent on a stream id that has not been used in this session? |
| 2327 if (stream_id % 2 == 1 && stream_id > stream_hi_water_mark_) |
| 2328 return false; |
| 2329 // TODO(bnc): Track highest id for server initiated streams. |
| 2330 return true; |
| 2331 } |
| 2332 |
2324 void SpdySession::OnRstStream(SpdyStreamId stream_id, | 2333 void SpdySession::OnRstStream(SpdyStreamId stream_id, |
2325 SpdyRstStreamStatus status) { | 2334 SpdyRstStreamStatus status) { |
2326 CHECK(in_io_loop_); | 2335 CHECK(in_io_loop_); |
2327 | 2336 |
2328 std::string description; | 2337 std::string description; |
2329 net_log().AddEvent( | 2338 net_log().AddEvent( |
2330 NetLog::TYPE_SPDY_SESSION_RST_STREAM, | 2339 NetLog::TYPE_SPDY_SESSION_RST_STREAM, |
2331 base::Bind(&NetLogSpdyRstCallback, | 2340 base::Bind(&NetLogSpdyRstCallback, |
2332 stream_id, status, &description)); | 2341 stream_id, status, &description)); |
2333 | 2342 |
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3164 if (!queue->empty()) { | 3173 if (!queue->empty()) { |
3165 SpdyStreamId stream_id = queue->front(); | 3174 SpdyStreamId stream_id = queue->front(); |
3166 queue->pop_front(); | 3175 queue->pop_front(); |
3167 return stream_id; | 3176 return stream_id; |
3168 } | 3177 } |
3169 } | 3178 } |
3170 return 0; | 3179 return 0; |
3171 } | 3180 } |
3172 | 3181 |
3173 } // namespace net | 3182 } // namespace net |
OLD | NEW |