package
0.10.2
Repository: https://github.com/pions/quic-go.git
Documentation: pkg.go.dev

# Functions

ChooseSupportedVersion finds the best version in the overlap of ours and theirs ours is a slice of versions that we support, sorted by our preference (descending) theirs is a slice of versions offered by the peer.
DecodePacketNumber calculates the packet number based on the received packet number, its length and the last seen packet number.
FirstStream returns the first valid stream ID.
GenerateConnectionID generates a connection ID using cryptographic random.
GenerateConnectionIDForInitial generates a connection ID for the Initial packet.
GetGreasedVersions adds one reserved version number to a slice of version numbers, at a random position.
GetPacketNumberLength gets the minimum length needed to fully represent the packet number.
GetPacketNumberLengthForHeader gets the length of the packet number for the public header it never chooses a PacketNumberLen of 1 byte, since this is too short under certain circumstances.
IsSupportedVersion returns true if the server supports this version.
IsValidVersion says if the version is known to quic-go.
MaxStreamID is the highest stream ID that a peer is allowed to open, when it is allowed to open numStreams.
ReadConnectionID reads a connection ID of length len from the given io.Reader.
StripGreasedVersions strips all greased versions from a slice of versions.

# Constants

ConnectionFlowControlMultiplier determines how much larger the connection flow control windows needs to be relative to any stream's flow control window This is the value that Chromium is using.
CookieExpiryTime is the valid time of a cookie.
DefaultConnectionIDLength is the connection ID length that is used for multiplexed connections if no other value is configured.
DefaultHandshakeTimeout is the default timeout for a connection until the crypto handshake succeeds.
DefaultIdleTimeout is the default idle timeout.
DefaultMaxCongestionWindow is the default for the max congestion window.
DefaultMaxIncomingStreams is the maximum number of streams that a peer may open.
DefaultMaxIncomingUniStreams is the maximum number of unidirectional streams that a peer may open.
12 MB.
6 MB.
DefaultTCPMSS is the default maximum packet size used in the Linux TCP implementation.
Encryption1RTT is the 1-RTT encryption level.
EncryptionHandshake is the Handshake encryption level.
EncryptionInitial is the Initial encryption level.
EncryptionUnspecified is a not specified encryption level.
InitialCongestionWindow is the initial congestion window in QUIC packets.
InitialMaxData is the connection-level flow control window for receiving data.
512 kb.
MaxAcceptQueueSize is the maximum number of sessions that the server queues for accepting.
MaxAckFrameSize is the maximum size for an ACK frame that we write Due to the varint encoding, ACK frames can grow (almost) indefinitely large.
MaxByteCount is the maximum value of a ByteCount.
MaxCryptoStreamOffset is the maximum offset allowed on any of the crypto streams.
MaxNonRetransmittableAcks is the maximum number of packets containing an ACK, but no retransmittable frames, that we send in a row.
MaxOutstandingSentPackets is maximum number of packets saved for retransmission.
MaxPacketSizeIPv4 is the maximum packet size that we use for sending IPv4 packets.
MaxPacketSizeIPv6 is the maximum packet size that we use for sending IPv6 packets.
MaxReceivePacketSize maximum packet size of any QUIC packet, based on ethernet's max size, minus the IP and UDP headers.
MaxSessionUnprocessedPackets is the max number of packets stored in each session that are not yet processed.
MaxStreamFrameSorterGaps is the maximum number of gaps between received StreamFrames prevents DoS attacks against the streamFrameSorter.
MaxTrackedReceivedAckRanges is the maximum number of ACK ranges tracked.
MaxTrackedSentPackets is maximum number of sent packets saved for retransmission.
MaxTrackedSkippedPackets is the maximum number of skipped packet numbers the SentPacketHandler keep track of for Optimistic ACK attack mitigation.
MaxUndecryptablePackets limits the number of undecryptable packets that are queued in the session.
MinConnectionIDLenInitial is the minimum length of the destination connection ID on an Initial packet.
MinInitialPacketSize is the minimum size an Initial packet is required to have.
MinPacingDelay is the minimum duration that is used for packet pacing If the packet packing frequency is higher, multiple packets might be sent at once.
MinRemoteIdleTimeout is the minimum value that we accept for the remote idle timeout.
token */.
MinStreamFrameSize is the minimum size that has to be left in a packet, so that we add another STREAM frame.
PacketNumberLen1 is a packet number length of 1 byte.
PacketNumberLen2 is a packet number length of 2 bytes.
PacketNumberLen3 is a packet number length of 3 bytes.
PacketNumberLen4 is a packet number length of 4 bytes.
PacketNumberLenInvalid is the default value and not a valid length for a packet number.
PacketType0RTT is the packet type of a 0-RTT packet.
PacketTypeHandshake is the packet type of a Handshake packet.
PacketTypeInitial is the packet type of an Initial packet.
PacketTypeRetry is the packet type of a Retry packet.
the perspectives.
the perspectives.
RetiredConnectionIDDeleteTimeout is the time we keep closed sessions around in order to retransmit the CONNECTION_CLOSE.
SkipPacketAveragePeriodLength is the average period length in which one packet number is skipped to prevent an Optimistic ACK attack.
StreamTypeBidi is a bidirectional stream.
StreamTypeUni is a unidirectional stream.
The version numbers, making grepping easier.
The version numbers, making grepping easier.
for when the version doesn't matter.
WindowUpdateThreshold is the fraction of the receive window that has to be consumed before an higher offset is advertised to the client.

# Variables

SupportedVersions lists the versions that the server supports must be in sorted descending order.

# Type aliases

An ApplicationErrorCode is an application-defined error code.
A ByteCount in QUIC.
A ConnectionID in QUIC.
EncryptionLevel is the encryption level Default value is Unencrypted.
A PacketNumber in QUIC.
PacketNumberLen is the length of the packet number in bytes.
The PacketType is the Long Header Type.
Perspective determines if we're acting as a server or a client.
A StreamID in QUIC.
StreamType encodes if this is a unidirectional or bidirectional stream.
VersionNumber is a version number as int.