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

Side by Side Diff: net/spdy/spdy_session.cc

Issue 2820163004: Retry request upon GOAWAY frame with NO_ERROR. (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
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/spdy/spdy_session.h" 5 #include "net/spdy/spdy_session.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 2677 matching lines...) Expand 10 before | Expand all | Expand 10 after
2688 2688
2689 net_log_.AddEvent( 2689 net_log_.AddEvent(
2690 NetLogEventType::HTTP2_SESSION_RECV_GOAWAY, 2690 NetLogEventType::HTTP2_SESSION_RECV_GOAWAY,
2691 base::Bind(&NetLogSpdyRecvGoAwayCallback, last_accepted_stream_id, 2691 base::Bind(&NetLogSpdyRecvGoAwayCallback, last_accepted_stream_id,
2692 active_streams_.size(), unclaimed_pushed_streams_.size(), 2692 active_streams_.size(), unclaimed_pushed_streams_.size(),
2693 error_code, debug_data)); 2693 error_code, debug_data));
2694 MakeUnavailable(); 2694 MakeUnavailable();
2695 if (error_code == ERROR_CODE_HTTP_1_1_REQUIRED) { 2695 if (error_code == ERROR_CODE_HTTP_1_1_REQUIRED) {
2696 // TODO(bnc): Record histogram with number of open streams capped at 50. 2696 // TODO(bnc): Record histogram with number of open streams capped at 50.
2697 DoDrainSession(ERR_HTTP_1_1_REQUIRED, "HTTP_1_1_REQUIRED for stream."); 2697 DoDrainSession(ERR_HTTP_1_1_REQUIRED, "HTTP_1_1_REQUIRED for stream.");
2698 } else if (error_code == ERROR_CODE_NO_ERROR) {
Zhongyi Shi 2017/04/19 00:40:28 I am not familiar with SPDY code, but according to
Bence 2017/04/19 12:12:15 Excellent questions. In StartGoingAway() there is
Zhongyi Shi 2017/04/19 17:19:18 Ah, I see, thanks for the clarification and code w
2699 StartGoingAway(last_accepted_stream_id, ERR_SPDY_SERVER_REFUSED_STREAM);
2698 } else { 2700 } else {
2699 StartGoingAway(last_accepted_stream_id, ERR_ABORTED); 2701 StartGoingAway(last_accepted_stream_id, ERR_ABORTED);
2700 } 2702 }
2701 // This is to handle the case when we already don't have any active 2703 // This is to handle the case when we already don't have any active
2702 // streams (i.e., StartGoingAway() did nothing). Otherwise, we have 2704 // streams (i.e., StartGoingAway() did nothing). Otherwise, we have
2703 // active streams and so the last one being closed will finish the 2705 // active streams and so the last one being closed will finish the
2704 // going away process (see DeleteStream()). 2706 // going away process (see DeleteStream()).
2705 MaybeFinishGoingAway(); 2707 MaybeFinishGoingAway();
2706 } 2708 }
2707 2709
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
3191 if (!queue->empty()) { 3193 if (!queue->empty()) {
3192 SpdyStreamId stream_id = queue->front(); 3194 SpdyStreamId stream_id = queue->front();
3193 queue->pop_front(); 3195 queue->pop_front();
3194 return stream_id; 3196 return stream_id;
3195 } 3197 }
3196 } 3198 }
3197 return 0; 3199 return 0;
3198 } 3200 }
3199 3201
3200 } // namespace net 3202 } // namespace net
OLDNEW
« net/base/net_error_list.h ('K') | « net/spdy/spdy_network_transaction_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698