mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-08-08 09:42:06 +03:00
Check read callback for nullptr.
Summary: It's legit to set this to nullptr before the callback is removed. Reviewed By: yangchi, lnicco Differential Revision: D26582589 fbshipit-source-id: 0119e06e6e5347a9080dc5a814551e7b44d64c74
This commit is contained in:
committed by
Facebook GitHub Bot
parent
3ee0eb319f
commit
1b86b23d65
@@ -2699,7 +2699,8 @@ void QuicTransportBase::resetNonControlStreams(
|
||||
}
|
||||
if (isReceivingStream(conn_->nodeType, id) || isBidirectionalStream(id)) {
|
||||
auto readCallbackIt = readCallbacks_.find(id);
|
||||
if (readCallbackIt != readCallbacks_.end()) {
|
||||
if (readCallbackIt != readCallbacks_.end() &&
|
||||
readCallbackIt->second.readCb) {
|
||||
readCallbackIt->second.readCb->readError(id, {error, errorMsg});
|
||||
}
|
||||
if (conn_->partialReliabilityEnabled) {
|
||||
|
@@ -2273,6 +2273,16 @@ TEST_F(QuicTransportImplTest, ResetAllNonControlStreams) {
|
||||
transport->notifyPendingWriteOnStream(stream3, &wcb3);
|
||||
EXPECT_CALL(wcb3, onStreamWriteError(stream3, _)).Times(1);
|
||||
|
||||
auto stream4 = transport->createBidirectionalStream().value();
|
||||
NiceMock<MockWriteCallback> wcb4;
|
||||
NiceMock<MockReadCallback> rcb4;
|
||||
EXPECT_CALL(wcb4, onStreamWriteError(stream4, _))
|
||||
.WillOnce(Invoke(
|
||||
[&](auto, auto) { transport->setReadCallback(stream4, nullptr); }));
|
||||
EXPECT_CALL(rcb4, readError(_, _)).Times(0);
|
||||
transport->notifyPendingWriteOnStream(stream4, &wcb4);
|
||||
transport->setReadCallback(stream4, &rcb4);
|
||||
|
||||
transport->resetNonControlStreams(
|
||||
GenericApplicationErrorCode::UNKNOWN, "bye bye");
|
||||
evb->loopOnce();
|
||||
|
Reference in New Issue
Block a user