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:
committed by
Facebook GitHub Bot
parent
28b13b22d8
commit
2a8fba588f
@@ -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) {
|
||||
|
Reference in New Issue
Block a user