Index: net/spdy/spdy_session.cc |
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc |
index 02336399f4e2eb577f2bca8b35a9c283d0252af6..51c5714cf51910430afed74e03e40e19707077f7 100644 |
--- a/net/spdy/spdy_session.cc |
+++ b/net/spdy/spdy_session.cc |
@@ -1398,9 +1398,9 @@ int SpdySession::DoReadLoop(ReadState expected_read_state, int result) { |
if (result == ERR_IO_PENDING) |
break; |
- if (bytes_read_without_yielding > kYieldAfterBytesRead || |
- time_func_() > yield_after_time) { |
- read_state_ = READ_STATE_DO_READ; |
+ if (read_state_ == READ_STATE_DO_READ && |
+ (bytes_read_without_yielding > kYieldAfterBytesRead || |
+ time_func_() > yield_after_time)) { |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, |
base::Bind(&SpdySession::PumpReadLoop, weak_factory_.GetWeakPtr(), |