1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-08-08 09:42:06 +03:00

Propagate error in scheduleFramesForPacket and writeData

Summary: As in title, this is more of a theme on adding an Expected return.

Reviewed By: kvtsoy

Differential Revision: D72579218

fbshipit-source-id: 25735535368838f1a4315667cd7e9e9b5df1c485
This commit is contained in:
Matt Joras
2025-04-08 21:06:35 -07:00
committed by Facebook GitHub Bot
parent 28b13b22d8
commit 2a8fba588f
27 changed files with 513 additions and 360 deletions

View File

@@ -352,17 +352,20 @@ class TestQuicTransport
return folly::unit;
}
void writeData() override {
CHECK(!writeQuicDataToSocket(
*socket_,
*conn_,
*conn_->serverConnectionId,
*conn_->clientConnectionId,
*aead,
*headerCipher,
*conn_->version,
conn_->transportSettings.writeConnectionDataPacketsLimit)
.hasError());
[[nodiscard]] folly::Expected<folly::Unit, QuicError> writeData() override {
auto result = writeQuicDataToSocket(
*socket_,
*conn_,
conn_->serverConnectionId.value_or(ConnectionId::createRandom(0)),
conn_->clientConnectionId.value_or(ConnectionId::createRandom(0)),
*aead,
*headerCipher,
*conn_->version,
conn_->transportSettings.writeConnectionDataPacketsLimit);
if (result.hasError()) {
return folly::makeUnexpected(result.error());
}
return folly::unit;
}
// This is to expose the protected pacedWriteDataToSocket() function
@@ -548,7 +551,11 @@ class TestQuicTransport
}
void invokeWriteSocketData() {
writeSocketData();
CHECK(!writeSocketData().hasError());
}
[[nodiscard]] auto invokeWriteSocketDataReturn() {
return writeSocketData();
}
void invokeProcessCallbacksAfterNetworkData() {
@@ -3074,10 +3081,15 @@ TEST_P(QuicTransportImplTestClose, TestNotifyPendingWriteOnCloseWithError) {
TEST_P(QuicTransportImplTestBase, TestTransportCloseWithMaxPacketNumber) {
transport->setServerConnectionId();
transport->transportConn->pendingEvents.closeTransport = false;
EXPECT_NO_THROW(transport->invokeWriteSocketData());
ASSERT_FALSE(transport->invokeWriteSocketDataReturn().hasError());
transport->transportConn->pendingEvents.closeTransport = true;
EXPECT_THROW(transport->invokeWriteSocketData(), QuicTransportException);
auto result = transport->invokeWriteSocketDataReturn();
ASSERT_TRUE(result.hasError());
ASSERT_NE(result.error().code.asTransportErrorCode(), nullptr);
EXPECT_EQ(
*result.error().code.asTransportErrorCode(),
TransportErrorCode::PROTOCOL_VIOLATION);
}
TEST_P(QuicTransportImplTestBase, TestGracefulCloseWithActiveStream) {