if (nghttp2_session_want_read(d_session.get()) != 0) {
updateIO(IOState::NeedRead, handleReadableIOCallback);
}
+ else {
+ if (getConcurrentStreamsCount() == 0) {
+ d_connectionDied = true;
+ stopIO();
+ }
+ else {
+ updateIO(IOState::Done, handleReadableIOCallback);
+ }
+ }
+ }
+ else {
+ if (getConcurrentStreamsCount() == 0) {
+ d_connectionDied = true;
+ stopIO();
+ }
+ else {
+ updateIO(IOState::Done, handleReadableIOCallback);
+ }
}
}
catch (const std::exception& e) {
ttd = getClientWriteTTD(now);
d_ioState->update(newState, callback, shared, ttd);
}
+ else if (newState == IOState::Done) {
+ d_ioState->reset();
+ }
}
void IncomingHTTP2Connection::handleIOError()