This section is empty.
This section is empty.
This section is empty.
type ErrorCode uint32
ErrorCode can be used as a normal error without reason.
const ( InternalError ErrorCode = 1 // There were data frames after the a fin or reset. StreamDataAfterTermination ErrorCode = 2 // Control frame is malformed. InvalidPacketHeader ErrorCode = 3 // Frame data is malformed. InvalidFrameData ErrorCode = 4 // The packet contained no payload. MissingPayload ErrorCode = 48 // FEC data is malformed. InvalidFecData ErrorCode = 5 // STREAM frame data is malformed. InvalidStreamData ErrorCode = 46 // STREAM frame data overlaps with buffered data. OverlappingStreamData ErrorCode = 87 // Received STREAM frame data is not encrypted. UnencryptedStreamData ErrorCode = 61 // Attempt to send unencrypted STREAM frame. AttemptToSendUnencryptedStreamData ErrorCode = 88 // FEC frame data is not encrypted. UnencryptedFecData ErrorCode = 77 // RST_STREAM frame data is malformed. InvalidRstStreamData ErrorCode = 6 // CONNECTION_CLOSE frame data is malformed. InvalidConnectionCloseData ErrorCode = 7 // GOAWAY frame data is malformed. InvalidGoawayData ErrorCode = 8 // WINDOW_UPDATE frame data is malformed. InvalidWindowUpdateData ErrorCode = 57 // BLOCKED frame data is malformed. InvalidBlockedData ErrorCode = 58 // STOP_WAITING frame data is malformed. InvalidStopWaitingData ErrorCode = 60 // PATH_CLOSE frame data is malformed. InvalidPathCloseData ErrorCode = 78 // ACK frame data is malformed. InvalidAckData ErrorCode = 9 // Version negotiation packet is malformed. InvalidVersionNegotiationPacket ErrorCode = 10 // Public RST packet is malformed. InvalidPublicRstPacket ErrorCode = 11 // There was an error decrypting. DecryptionFailure ErrorCode = 12 // There was an error encrypting. EncryptionFailure ErrorCode = 13 // The packet exceeded kMaxPacketSize. PacketTooLarge ErrorCode = 14 // The peer is going away. May be a client or server. PeerGoingAway ErrorCode = 16 // A stream ID was invalid. InvalidStreamID ErrorCode = 17 // A priority was invalid. InvalidPriority ErrorCode = 49 // Too many streams already open. TooManyOpenStreams ErrorCode = 18 // The peer created too many available streams. TooManyAvailableStreams ErrorCode = 76 // Received public reset for this connection. PublicReset ErrorCode = 19 // Invalid protocol version. InvalidVersion ErrorCode = 20 // The Header ID for a stream was too far from the previous. InvalidHeaderID ErrorCode = 22 // Negotiable parameter received during handshake had invalid value. InvalidNegotiatedValue ErrorCode = 23 // There was an error decompressing data. DecompressionFailure ErrorCode = 24 // The connection timed out due to no network activity. NetworkIdleTimeout ErrorCode = 25 // The connection timed out waiting for the handshake to complete. HandshakeTimeout ErrorCode = 67 // There was an error encountered migrating addresses. ErrorMigratingAddress ErrorCode = 26 // There was an error encountered migrating port only. ErrorMigratingPort ErrorCode = 86 // There was an error while writing to the socket. PacketWriteError ErrorCode = 27 // There was an error while reading from the socket. PacketReadError ErrorCode = 51 // We received a STREAM_FRAME with no data and no fin flag set. EmptyStreamFrameNoFin ErrorCode = 50 // We received invalid data on the headers stream. InvalidHeadersStreamData ErrorCode = 56 // Invalid data on the headers stream received because of decompression // failure. HeadersStreamDataDecompressFailure ErrorCode = 97 // The peer received too much data, violating flow control. FlowControlReceivedTooMuchData ErrorCode = 59 // The peer sent too much data, violating flow control. FlowControlSentTooMuchData ErrorCode = 63 // The peer received an invalid flow control window. FlowControlInvalidWindow ErrorCode = 64 // The connection has been IP pooled into an existing connection. ConnectionIPPooled ErrorCode = 62 // The connection has too many outstanding sent packets. TooManyOutstandingSentPackets ErrorCode = 68 // The connection has too many outstanding received packets. TooManyOutstandingReceivedPackets ErrorCode = 69 // The quic connection has been cancelled. ConnectionCancelled ErrorCode = 70 // Disabled QUIC because of high packet loss rate. BadPacketLossRate ErrorCode = 71 // Disabled QUIC because of too many PUBLIC_RESETs post handshake. PublicResetsPostHandshake ErrorCode = 73 // Disabled QUIC because of too many timeouts with streams open. TimeoutsWithOpenStreams ErrorCode = 74 // Closed because we failed to serialize a packet. FailedToSerializePacket ErrorCode = 75 // QUIC timed out after too many RTOs. TooManyRtos ErrorCode = 85 // Hanshake failed. HandshakeFailed ErrorCode = 28 // Handshake message contained out of order tags. CryptoTagsOutOfOrder ErrorCode = 29 // Handshake message contained too many entries. CryptoTooManyEntries ErrorCode = 30 // Handshake message contained an invalid value length. CryptoInvalidValueLength ErrorCode = 31 // A crypto message was received after the handshake was complete. CryptoMessageAfterHandshakeComplete ErrorCode = 32 // A crypto message was received with an illegal message tag. InvalidCryptoMessageType ErrorCode = 33 // A crypto message was received with an illegal parameter. InvalidCryptoMessageParameter ErrorCode = 34 // An invalid channel id signature was supplied. InvalidChannelIDSignature ErrorCode = 52 // A crypto message was received with a mandatory parameter missing. CryptoMessageParameterNotFound ErrorCode = 35 // A crypto message was received with a parameter that has no overlap // with the local parameter. CryptoMessageParameterNoOverlap ErrorCode = 36 // A crypto message was received that contained a parameter with too few // values. CryptoMessageIndexNotFound ErrorCode = 37 // An internal error occurred in crypto processing. CryptoInternalError ErrorCode = 38 // A crypto handshake message specified an unsupported version. CryptoVersionNotSupported ErrorCode = 39 // A crypto handshake message resulted in a stateless reject. CryptoHandshakeStatelessReject ErrorCode = 72 // There was no intersection between the crypto primitives supported by the // peer and ourselves. CryptoNoSupport ErrorCode = 40 // The server rejected our client hello messages too many times. CryptoTooManyRejects ErrorCode = 41 // The client rejected the server's certificate chain or signature. ProofInvalid ErrorCode = 42 // A crypto message was received with a duplicate tag. CryptoDuplicateTag ErrorCode = 43 // A crypto message was received with the wrong encryption level (i.e. it // should have been encrypted but was not.) CryptoEncryptionLevelIncorrect ErrorCode = 44 // The server config for a server has expired. CryptoServerConfigExpired ErrorCode = 45 // We failed to setup the symmetric keys for a connection. CryptoSymmetricKeySetupFailed ErrorCode = 53 // A handshake message arrived, but we are still validating the // previous handshake message. CryptoMessageWhileValidatingClientHello ErrorCode = 54 // A server config update arrived before the handshake is complete. CryptoUpdateBeforeHandshakeComplete ErrorCode = 65 // This connection involved a version negotiation which appears to have been // tampered with. VersionNegotiationMismatch ErrorCode = 55 // Multipath is not enabled, but a packet with multipath flag on is received. BadMultipathFlag ErrorCode = 79 // IP address changed causing connection close. IPAddressChanged ErrorCode = 80 // Connection migration errors. // Network changed, but connection had no migratable streams. ConnectionMigrationNoMigratableStreams ErrorCode = 81 // Connection changed networks too many times. ConnectionMigrationTooManyChanges ErrorCode = 82 // Connection migration was attempted, but there was no new network to // migrate to. ConnectionMigrationNoNewNetwork ErrorCode = 83 // Network changed, but connection had one or more non-migratable streams. ConnectionMigrationNonMigratableStream ErrorCode = 84 )
The error codes defined by QUIC Remember to run `go generate ./...` whenever the error codes change.
A QuicError consists of an error code plus a error reason
Error creates a new QuicError instance
func ToQuicError ¶
ToQuicError converts an arbitrary error to a QuicError. It leaves QuicErrors unchanged, and properly handles `ErrorCode`s.