Do not use union in QuicErrorCodeToIetfMapping. Also do not end public member names with underscore. gfe-relnote: n/a, refactor only, no functional change. PiperOrigin-RevId: 305801835 Change-Id: I54133a221239075b203892db7f9686d442f5b7c5
diff --git a/quic/core/frames/quic_connection_close_frame.cc b/quic/core/frames/quic_connection_close_frame.cc index 6e5115b..e2555e3 100644 --- a/quic/core/frames/quic_connection_close_frame.cc +++ b/quic/core/frames/quic_connection_close_frame.cc
@@ -31,16 +31,15 @@ } QuicErrorCodeToIetfMapping mapping = QuicErrorCodeToTransportErrorCode(error_code); - if (mapping.is_transport_close_) { + wire_error_code = mapping.error_code; + if (mapping.is_transport_close) { // Maps to a transport close close_type = IETF_QUIC_TRANSPORT_CONNECTION_CLOSE; - wire_error_code = mapping.transport_error_code_; transport_close_frame_type = frame_type; return; } // Maps to an application close. close_type = IETF_QUIC_APPLICATION_CONNECTION_CLOSE; - wire_error_code = mapping.application_error_code_; transport_close_frame_type = 0; }
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index e887669..2f161b5 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -1683,19 +1683,16 @@ QuicErrorCodeToIetfMapping mapping = QuicErrorCodeToTransportErrorCode(expected_code); - if (mapping.is_transport_close_) { + if (mapping.is_transport_close) { // This Google QUIC Error Code maps to a transport close, EXPECT_EQ(IETF_QUIC_TRANSPORT_CONNECTION_CLOSE, connection_close_frames[0].close_type); - EXPECT_EQ(mapping.transport_error_code_, - connection_close_frames[0].wire_error_code); } else { // This maps to an application close. EXPECT_EQ(IETF_QUIC_APPLICATION_CONNECTION_CLOSE, connection_close_frames[0].close_type); - EXPECT_EQ(mapping.application_error_code_, - connection_close_frames[0].wire_error_code); } + EXPECT_EQ(mapping.error_code, connection_close_frames[0].wire_error_code); } void MtuDiscoveryTestInit() {
diff --git a/quic/core/quic_error_codes.cc b/quic/core/quic_error_codes.cc index b330725..cea484e 100644 --- a/quic/core/quic_error_codes.cc +++ b/quic/core/quic_error_codes.cc
@@ -257,333 +257,325 @@ QuicErrorCode error) { switch (error) { case QUIC_NO_ERROR: - return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}}; + return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}; case QUIC_INTERNAL_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_STREAM_DATA_AFTER_TERMINATION: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_INVALID_PACKET_HEADER: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_FRAME_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_MISSING_PAYLOAD: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_FEC_DATA: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_INVALID_STREAM_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_OVERLAPPING_STREAM_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_UNENCRYPTED_STREAM_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_ATTEMPT_TO_SEND_UNENCRYPTED_STREAM_DATA: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_MAYBE_CORRUPTED_MEMORY: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_UNENCRYPTED_FEC_DATA: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_INVALID_RST_STREAM_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_CONNECTION_CLOSE_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_GOAWAY_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_WINDOW_UPDATE_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_BLOCKED_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_STOP_WAITING_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_PATH_CLOSE_DATA: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_INVALID_ACK_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_MESSAGE_DATA: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_VERSION_NEGOTIATION_PACKET: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_PUBLIC_RST_PACKET: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_DECRYPTION_FAILURE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_ENCRYPTION_FAILURE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_PACKET_TOO_LARGE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_PEER_GOING_AWAY: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_INVALID_STREAM_ID: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_PRIORITY: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_TOO_MANY_OPEN_STREAMS: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_TOO_MANY_AVAILABLE_STREAMS: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_PUBLIC_RESET: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_INVALID_VERSION: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_HEADER_ID: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_INVALID_NEGOTIATED_VALUE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_DECOMPRESSION_FAILURE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_NETWORK_IDLE_TIMEOUT: - return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}}; + return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}; case QUIC_HANDSHAKE_TIMEOUT: - return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}}; + return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}; case QUIC_ERROR_MIGRATING_ADDRESS: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_ERROR_MIGRATING_PORT: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_PACKET_WRITE_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_PACKET_READ_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_EMPTY_STREAM_FRAME_NO_FIN: - return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}}; + return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)}; case QUIC_INVALID_HEADERS_STREAM_DATA: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HEADERS_STREAM_DATA_DECOMPRESS_FAILURE: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA: - return {true, {static_cast<uint64_t>(FLOW_CONTROL_ERROR)}}; + return {true, static_cast<uint64_t>(FLOW_CONTROL_ERROR)}; case QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_FLOW_CONTROL_INVALID_WINDOW: - return {true, {static_cast<uint64_t>(FLOW_CONTROL_ERROR)}}; + return {true, static_cast<uint64_t>(FLOW_CONTROL_ERROR)}; case QUIC_CONNECTION_IP_POOLED: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_TOO_MANY_OUTSTANDING_SENT_PACKETS: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_TOO_MANY_OUTSTANDING_RECEIVED_PACKETS: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CONNECTION_CANCELLED: - return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}}; + return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}; case QUIC_BAD_PACKET_LOSS_RATE: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_PUBLIC_RESETS_POST_HANDSHAKE: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_FAILED_TO_SERIALIZE_PACKET: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_TOO_MANY_RTOS: - return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}}; + return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}; case QUIC_HANDSHAKE_FAILED: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_TAGS_OUT_OF_ORDER: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_TOO_MANY_ENTRIES: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_INVALID_VALUE_LENGTH: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_MESSAGE_AFTER_HANDSHAKE_COMPLETE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_CRYPTO_MESSAGE_TYPE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_CHANNEL_ID_SIGNATURE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_MESSAGE_PARAMETER_NO_OVERLAP: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_MESSAGE_INDEX_NOT_FOUND: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_UNSUPPORTED_PROOF_DEMAND: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_INTERNAL_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CRYPTO_VERSION_NOT_SUPPORTED: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_NO_SUPPORT: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_TOO_MANY_REJECTS: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_PROOF_INVALID: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_DUPLICATE_TAG: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_ENCRYPTION_LEVEL_INCORRECT: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_SERVER_CONFIG_EXPIRED: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_SYMMETRIC_KEY_SETUP_FAILED: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_MESSAGE_WHILE_VALIDATING_CLIENT_HELLO: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_UPDATE_BEFORE_HANDSHAKE_COMPLETE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_CRYPTO_CHLO_TOO_LARGE: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_VERSION_NEGOTIATION_MISMATCH: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_BAD_MULTIPATH_FLAG: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_MULTIPATH_PATH_DOES_NOT_EXIST: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_MULTIPATH_PATH_NOT_ACTIVE: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_IP_ADDRESS_CHANGED: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CONNECTION_MIGRATION_NO_MIGRATABLE_STREAMS: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CONNECTION_MIGRATION_TOO_MANY_CHANGES: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CONNECTION_MIGRATION_NO_NEW_NETWORK: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CONNECTION_MIGRATION_NON_MIGRATABLE_STREAM: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CONNECTION_MIGRATION_DISABLED_BY_CONFIG: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CONNECTION_MIGRATION_INTERNAL_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_CONNECTION_MIGRATION_HANDSHAKE_UNCONFIRMED: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_TOO_MANY_STREAM_DATA_INTERVALS: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_STREAM_SEQUENCER_INVALID_STATE: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_TOO_MANY_SESSIONS_ON_SERVER: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_STREAM_LENGTH_OVERFLOW: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_MAX_DATA_FRAME_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_MAX_STREAM_DATA_FRAME_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_MAX_STREAMS_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_STREAMS_BLOCKED_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_STREAM_BLOCKED_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_NEW_CONNECTION_ID_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_STOP_SENDING_FRAME_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_PATH_CHALLENGE_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_PATH_RESPONSE_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case IETF_QUIC_PROTOCOL_VIOLATION: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_INVALID_NEW_TOKEN: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_DATA_RECEIVED_ON_WRITE_UNIDIRECTIONAL_STREAM: - return {true, {static_cast<uint64_t>(STREAM_STATE_ERROR)}}; + return {true, static_cast<uint64_t>(STREAM_STATE_ERROR)}; case QUIC_TRY_TO_WRITE_DATA_ON_READ_UNIDIRECTIONAL_STREAM: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_INVALID_RETIRE_CONNECTION_ID_DATA: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_STREAMS_BLOCKED_ERROR: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_MAX_STREAMS_ERROR: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_HTTP_DECODER_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_STALE_CONNECTION_CANCELLED: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_IETF_GQUIC_ERROR_MISSING: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_WINDOW_UPDATE_RECEIVED_ON_READ_UNIDIRECTIONAL_STREAM: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_TOO_MANY_BUFFERED_CONTROL_FRAMES: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_TRANSPORT_INVALID_CLIENT_INDICATION: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_QPACK_DECOMPRESSION_FAILED: - return {false, - {static_cast<uint64_t>( - QuicHttpQpackErrorCode::DECOMPRESSION_FAILED)}}; + return {false, static_cast<uint64_t>( + QuicHttpQpackErrorCode::DECOMPRESSION_FAILED)}; case QUIC_QPACK_ENCODER_STREAM_ERROR: - return {false, - {static_cast<uint64_t>( - QuicHttpQpackErrorCode::ENCODER_STREAM_ERROR)}}; + return {false, static_cast<uint64_t>( + QuicHttpQpackErrorCode::ENCODER_STREAM_ERROR)}; case QUIC_QPACK_DECODER_STREAM_ERROR: - return {false, - {static_cast<uint64_t>( - QuicHttpQpackErrorCode::DECODER_STREAM_ERROR)}}; + return {false, static_cast<uint64_t>( + QuicHttpQpackErrorCode::DECODER_STREAM_ERROR)}; case QUIC_STREAM_DATA_BEYOND_CLOSE_OFFSET: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_STREAM_MULTIPLE_OFFSET: - return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}}; + return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)}; case QUIC_HTTP_FRAME_TOO_LARGE: - return {false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::EXCESSIVE_LOAD)}}; + return {false, static_cast<uint64_t>(QuicHttp3ErrorCode::EXCESSIVE_LOAD)}; case QUIC_HTTP_FRAME_ERROR: - return {false, {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_ERROR)}}; + return {false, static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_ERROR)}; case QUIC_HTTP_FRAME_UNEXPECTED_ON_SPDY_STREAM: return {false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}}; + static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}; case QUIC_HTTP_FRAME_UNEXPECTED_ON_CONTROL_STREAM: return {false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}}; + static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}; case QUIC_HTTP_INVALID_FRAME_SEQUENCE_ON_SPDY_STREAM: return {false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}}; + static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}; case QUIC_HTTP_INVALID_FRAME_SEQUENCE_ON_CONTROL_STREAM: return {false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}}; + static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}; case QUIC_HTTP_DUPLICATE_UNIDIRECTIONAL_STREAM: - return { - false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::STREAM_CREATION_ERROR)}}; + return {false, + static_cast<uint64_t>(QuicHttp3ErrorCode::STREAM_CREATION_ERROR)}; case QUIC_HTTP_SERVER_INITIATED_BIDIRECTIONAL_STREAM: - return { - false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::STREAM_CREATION_ERROR)}}; + return {false, + static_cast<uint64_t>(QuicHttp3ErrorCode::STREAM_CREATION_ERROR)}; case QUIC_HTTP_STREAM_WRONG_DIRECTION: - return {true, {static_cast<uint64_t>(STREAM_STATE_ERROR)}}; + return {true, static_cast<uint64_t>(STREAM_STATE_ERROR)}; case QUIC_HTTP_CLOSED_CRITICAL_STREAM: - return { - false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::CLOSED_CRITICAL_STREAM)}}; + return {false, static_cast<uint64_t>( + QuicHttp3ErrorCode::CLOSED_CRITICAL_STREAM)}; case QUIC_HTTP_MISSING_SETTINGS_FRAME: return {false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::MISSING_SETTINGS)}}; + static_cast<uint64_t>(QuicHttp3ErrorCode::MISSING_SETTINGS)}; case QUIC_HTTP_DUPLICATE_SETTING_IDENTIFIER: - return {false, - {static_cast<uint64_t>(QuicHttp3ErrorCode::SETTINGS_ERROR)}}; + return {false, static_cast<uint64_t>(QuicHttp3ErrorCode::SETTINGS_ERROR)}; case QUIC_HPACK_INDEX_VARINT_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_NAME_LENGTH_VARINT_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_VALUE_LENGTH_VARINT_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_NAME_TOO_LONG: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_VALUE_TOO_LONG: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_NAME_HUFFMAN_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_VALUE_HUFFMAN_ERROR: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_MISSING_DYNAMIC_TABLE_SIZE_UPDATE: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_INVALID_INDEX: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_INVALID_NAME_INDEX: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_DYNAMIC_TABLE_SIZE_UPDATE_NOT_ALLOWED: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_INITIAL_TABLE_SIZE_UPDATE_IS_ABOVE_LOW_WATER_MARK: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_TABLE_SIZE_UPDATE_IS_ABOVE_ACKNOWLEDGED_SETTING: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_TRUNCATED_BLOCK: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_FRAGMENT_TOO_LONG: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_HPACK_COMPRESSED_HEADER_SIZE_EXCEEDS_LIMIT: - return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}}; + return {true, static_cast<uint64_t>(INTERNAL_ERROR)}; case QUIC_LAST_ERROR: - return {false, {static_cast<uint64_t>(QUIC_LAST_ERROR)}}; + return {false, static_cast<uint64_t>(QUIC_LAST_ERROR)}; } // If it's an unknown code, indicate it's an application error code. - return {false, {NO_IETF_QUIC_ERROR}}; + return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}; } #undef RETURN_STRING_LITERAL // undef for jumbo builds
diff --git a/quic/core/quic_error_codes.h b/quic/core/quic_error_codes.h index b3de77c..912c81d 100644 --- a/quic/core/quic_error_codes.h +++ b/quic/core/quic_error_codes.h
@@ -458,16 +458,11 @@ std::ostream& os, const QuicIetfTransportErrorCodes& c); -// Returns the mapping of the QuicErrorCode to an IETF TransportErrorCode. If -// first element of the pair is false, it means that an IETF Application Close -// should be done instead. - +// A transport error code (if is_transport_close is true) or application error +// code (if is_transport_close is false) to be used in CONNECTION_CLOSE frames. struct QUIC_EXPORT_PRIVATE QuicErrorCodeToIetfMapping { - bool is_transport_close_; - union { - uint64_t application_error_code_; - QuicIetfTransportErrorCodes transport_error_code_; - }; + bool is_transport_close; + uint64_t error_code; }; // Convert QuicErrorCode to transport or application IETF error code
diff --git a/quic/core/quic_error_codes_test.cc b/quic/core/quic_error_codes_test.cc index de3ebcb..e57a3e5 100644 --- a/quic/core/quic_error_codes_test.cc +++ b/quic/core/quic_error_codes_test.cc
@@ -76,14 +76,14 @@ QuicErrorCodeToIetfMapping ietf_error_code = QuicErrorCodeToTransportErrorCode( static_cast<QuicErrorCode>(internal_error_code)); - if (ietf_error_code.is_transport_close_) { + if (ietf_error_code.is_transport_close) { QuicIetfTransportErrorCodes transport_error_code = - ietf_error_code.transport_error_code_; + static_cast<QuicIetfTransportErrorCodes>(ietf_error_code.error_code); bool is_valid_transport_error_code = transport_error_code <= 0x0d; EXPECT_TRUE(is_valid_transport_error_code) << internal_error_code_string; } else { // Non-transport errors are application errors, either HTTP/3 or QPACK. - uint64_t application_error_code = ietf_error_code.application_error_code_; + uint64_t application_error_code = ietf_error_code.error_code; bool is_valid_http3_error_code = application_error_code >= 0x100 && application_error_code <= 0x110; bool is_valid_qpack_error_code =