mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-08-06 22:22:38 +03:00
QUIC/HTTP3: reset idle timeout on ping
Summary: Adds a transport callback for ping received. Uses the callback in the HTTP3 session to reset the timeout Reviewed By: mjoras Differential Revision: D33101180 fbshipit-source-id: d6fcecd22cbd5c311674dd9421c0c54eb04728a0
This commit is contained in:
committed by
Facebook GitHub Bot
parent
5f98c25b79
commit
15390c732a
@@ -131,6 +131,7 @@ class TestPingCallback : public QuicSocket::PingCallback {
|
||||
public:
|
||||
void pingAcknowledged() noexcept override {}
|
||||
void pingTimeout() noexcept override {}
|
||||
void onPing() noexcept override {}
|
||||
};
|
||||
|
||||
class TestByteEventCallback : public QuicSocket::ByteEventCallback {
|
||||
@@ -310,18 +311,16 @@ class TestQuicTransport
|
||||
ackTimeout_.timeoutExpired();
|
||||
}
|
||||
|
||||
void invokeSendPing(
|
||||
quic::QuicSocket::PingCallback* cb,
|
||||
std::chrono::milliseconds interval) {
|
||||
sendPing(cb, interval);
|
||||
void invokeSendPing(std::chrono::milliseconds interval) {
|
||||
sendPing(interval);
|
||||
}
|
||||
|
||||
void invokeCancelPingTimeout() {
|
||||
pingTimeout_.cancelTimeout();
|
||||
}
|
||||
|
||||
void invokeHandlePingCallback() {
|
||||
handlePingCallback();
|
||||
void invokeHandlePingCallbacks() {
|
||||
handlePingCallbacks();
|
||||
}
|
||||
|
||||
void invokeHandleKnobCallbacks() {
|
||||
@@ -3457,11 +3456,12 @@ TEST_F(QuicTransportImplTest, SuccessfulPing) {
|
||||
auto conn = transport->transportConn;
|
||||
std::chrono::milliseconds interval(10);
|
||||
TestPingCallback pingCallback;
|
||||
transport->invokeSendPing(&pingCallback, interval);
|
||||
transport->setPingCallback(&pingCallback);
|
||||
transport->invokeSendPing(interval);
|
||||
EXPECT_EQ(transport->isPingTimeoutScheduled(), true);
|
||||
EXPECT_EQ(conn->pendingEvents.cancelPingTimeout, false);
|
||||
conn->pendingEvents.cancelPingTimeout = true;
|
||||
transport->invokeHandlePingCallback();
|
||||
transport->invokeHandlePingCallbacks();
|
||||
evb->loopOnce();
|
||||
EXPECT_EQ(transport->isPingTimeoutScheduled(), false);
|
||||
EXPECT_EQ(conn->pendingEvents.cancelPingTimeout, false);
|
||||
@@ -3471,12 +3471,13 @@ TEST_F(QuicTransportImplTest, FailedPing) {
|
||||
auto conn = transport->transportConn;
|
||||
std::chrono::milliseconds interval(10);
|
||||
TestPingCallback pingCallback;
|
||||
transport->invokeSendPing(&pingCallback, interval);
|
||||
transport->setPingCallback(&pingCallback);
|
||||
transport->invokeSendPing(interval);
|
||||
EXPECT_EQ(transport->isPingTimeoutScheduled(), true);
|
||||
EXPECT_EQ(conn->pendingEvents.cancelPingTimeout, false);
|
||||
conn->pendingEvents.cancelPingTimeout = true;
|
||||
transport->invokeCancelPingTimeout();
|
||||
transport->invokeHandlePingCallback();
|
||||
transport->invokeHandlePingCallbacks();
|
||||
EXPECT_EQ(conn->pendingEvents.cancelPingTimeout, false);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user