--- a/src/network/access/qhttp2connection.cpp +++ b/src/network/access/qhttp2connection.cpp @@ -1775,7 +1775,7 @@ Q_ASSERT(inboundFrame.payloadSize() == 4); const auto error = qFromBigEndian(inboundFrame.dataBegin()); - if (QPointer stream = m_streams[streamID]) + if (QPointer stream = m_streams.value(streamID)) emit stream->rstFrameReceived(error); // Verify that whatever stream is being RST'd is not in the idle state: @@ -1792,7 +1792,7 @@ Q_ASSERT(inboundFrame.dataSize() == 4); - if (QPointer stream = m_streams[streamID]) + if (QPointer stream = m_streams.value(streamID)) stream->handleRST_STREAM(inboundFrame); } @@ -1880,7 +1880,7 @@ // I.e. If you are the server then the client must have initiated the stream you are sending // the promise on. And since this is about _sending_ we have to invert "Remote" to "Local" // because we are receiving. - if (it == m_streams.constEnd()) + if (it == m_streams.constEnd() || it->isNull()) return connectionError(ENHANCE_YOUR_CALM, "PUSH_PROMISE with invalid associated stream"); if ((m_connectionType == Type::Client && (streamID & 1) == 0) || (m_connectionType == Type::Server && (streamID & 1) == 1)) {