Class QuicException

java.lang.Object
java.lang.Throwable
java.lang.Exception
io.github.mahmoudimus.quic.QuicException
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
FrameException

public class QuicException extends Exception
A QUIC connection error (RFC 9000 section 20), carrying the error code a CONNECTION_CLOSE frame sends to the peer. TLS alerts map to the CRYPTO_ERROR range 0x0100– 0x01ff (RFC 9001 section 4.8).
See Also:
  • Field Details

    • NO_ERROR

      public static final long NO_ERROR
      No error.
      See Also:
    • INTERNAL_ERROR

      public static final long INTERNAL_ERROR
      An implementation error.
      See Also:
    • CONNECTION_REFUSED

      public static final long CONNECTION_REFUSED
      The server refused the connection.
      See Also:
    • FLOW_CONTROL_ERROR

      public static final long FLOW_CONTROL_ERROR
      The peer sent more data than its flow-control limits allowed.
      See Also:
    • STREAM_LIMIT_ERROR

      public static final long STREAM_LIMIT_ERROR
      The peer opened more streams than allowed.
      See Also:
    • STREAM_STATE_ERROR

      public static final long STREAM_STATE_ERROR
      A frame arrived for a stream in a state that does not permit it.
      See Also:
    • FINAL_SIZE_ERROR

      public static final long FINAL_SIZE_ERROR
      A stream's final size changed or was exceeded.
      See Also:
    • FRAME_ENCODING_ERROR

      public static final long FRAME_ENCODING_ERROR
      A frame could not be decoded.
      See Also:
    • TRANSPORT_PARAMETER_ERROR

      public static final long TRANSPORT_PARAMETER_ERROR
      Transport parameters were malformed, missing or invalid.
      See Also:
    • CONNECTION_ID_LIMIT_ERROR

      public static final long CONNECTION_ID_LIMIT_ERROR
      The peer used more connection IDs than allowed.
      See Also:
    • PROTOCOL_VIOLATION

      public static final long PROTOCOL_VIOLATION
      Any other protocol violation.
      See Also:
    • INVALID_TOKEN

      public static final long INVALID_TOKEN
      An invalid address-validation token.
      See Also:
    • APPLICATION_ERROR

      public static final long APPLICATION_ERROR
      The application asked for the connection to close.
      See Also:
    • CRYPTO_BUFFER_EXCEEDED

      public static final long CRYPTO_BUFFER_EXCEEDED
      More CRYPTO data than could be buffered.
      See Also:
    • KEY_UPDATE_ERROR

      public static final long KEY_UPDATE_ERROR
      A key update error.
      See Also:
    • AEAD_LIMIT_REACHED

      public static final long AEAD_LIMIT_REACHED
      The AEAD confidentiality or integrity limit was reached.
      See Also:
    • NO_VIABLE_PATH

      public static final long NO_VIABLE_PATH
      No viable network path.
      See Also:
    • CRYPTO_ERROR

      public static final long CRYPTO_ERROR
      The base of the TLS alert range: CRYPTO_ERROR + alert.
      See Also:
  • Constructor Details

    • QuicException

      public QuicException(long code, String reason)
      A connection error.
      Parameters:
      code - the transport error code
      reason - the reason phrase, sent to the peer
  • Method Details

    • tlsAlert

      public static QuicException tlsAlert(int alert, String reason)
      A TLS alert as a connection error.
      Parameters:
      alert - the TLS alert description, such as 40 (handshake_failure)
      reason - the reason phrase
      Returns:
      the error, with code 0x0100 + alert
    • code

      public long code()
      The transport error code.
      Returns:
      the code