Send QUIC GOAWAY after given time even if connection not idle.
Note that in HTTP/2, timeout is checked each time a request is terminated.
However, I chose to use a timer for QUIC instead. This will allow GOAWAY frame
to be sent even if the only active request is hanging for a long time.
Protected by FLAGS_quic_reloadable_flag_quic_max_age_send_goaway.
PiperOrigin-RevId: 341853883
Change-Id: I0644e7e17637fdf9c6694073d5d388632c90337a
diff --git a/quic/core/quic_error_codes.cc b/quic/core/quic_error_codes.cc
index a57ded8..9abde9f 100644
--- a/quic/core/quic_error_codes.cc
+++ b/quic/core/quic_error_codes.cc
@@ -255,6 +255,7 @@
RETURN_STRING_LITERAL(QUIC_MISSING_WRITE_KEYS);
RETURN_STRING_LITERAL(QUIC_KEY_UPDATE_ERROR);
RETURN_STRING_LITERAL(QUIC_AEAD_LIMIT_REACHED);
+ RETURN_STRING_LITERAL(QUIC_MAX_AGE_TIMEOUT);
RETURN_STRING_LITERAL(QUIC_LAST_ERROR);
// Intentionally have no default case, so we'll break the build
@@ -713,6 +714,8 @@
return {true, static_cast<uint64_t>(KEY_UPDATE_ERROR)};
case QUIC_AEAD_LIMIT_REACHED:
return {true, static_cast<uint64_t>(AEAD_LIMIT_REACHED)};
+ case QUIC_MAX_AGE_TIMEOUT:
+ return {false, static_cast<uint64_t>(QuicHttp3ErrorCode::INTERNAL_ERROR)};
case QUIC_LAST_ERROR:
return {false, static_cast<uint64_t>(QUIC_LAST_ERROR)};
}