Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Config ¶
type Config struct { TLSConfig *tls.Config // The QUIC versions that can be negotiated. // If not set, it uses all versions available. // Warning: This API should not be considered stable and will change soon. Versions []protocol.VersionNumber // Ask the server to truncate the connection ID sent in the Public Header. // This saves 8 bytes in the Public Header in every packet. However, if the IP address of the server changes, the connection cannot be migrated. // Currently only valid for the client. RequestConnectionIDTruncation bool // Use PLUS? UsePLUS bool }
Config contains all configuration data needed for a QUIC server or client. More config parameters (such as timeouts) will be added soon, see e.g. https://github.com/lucas-clemente/quic-go/issues/441.
type Listener ¶
type Listener interface { // Close the server, sending CONNECTION_CLOSE frames to each peer. Close() error // Addr returns the local network addr that the server is listening on. Addr() net.Addr // Accept returns new sessions. It should be called in a loop. Accept() (Session, error) }
A Listener for incoming QUIC connections
type NonFWSession ¶
A NonFWSession is a QUIC connection between two peers half-way through the handshake. The communication is encrypted, but not yet forward secure.
func DialAddrNonFWSecure ¶
func DialAddrNonFWSecure(addr string, config *Config) (NonFWSession, error)
DialAddrNonFWSecure establishes a new QUIC connection to a server. The hostname for SNI is taken from the given address.
func DialNonFWSecure ¶
func DialNonFWSecure(pconn net.PacketConn, remoteAddr net.Addr, host string, config *Config) (NonFWSession, error)
DialNonFWSecure establishes a new non-forward-secure QUIC connection to a server using a net.PacketConn. The host parameter is used for SNI.
type PublicHeader ¶
type PublicHeader struct { Raw []byte ConnectionID protocol.ConnectionID VersionFlag bool ResetFlag bool TruncateConnectionID bool PacketNumberLen protocol.PacketNumberLen PacketNumber protocol.PacketNumber VersionNumber protocol.VersionNumber // VersionNumber sent by the client SupportedVersions []protocol.VersionNumber // VersionNumbers sent by the server DiversificationNonce []byte }
The PublicHeader of a QUIC packet. Warning: This struct should not be considered stable and will change soon.
func ParsePublicHeader ¶
func ParsePublicHeader(b *bytes.Reader, packetSentBy protocol.Perspective) (*PublicHeader, error)
ParsePublicHeader parses a QUIC packet's public header. The packetSentBy is the perspective of the peer that sent this PublicHeader, i.e. if we're the server, packetSentBy should be PerspectiveClient. Warning: This API should not be considered stable and will change soon.
func (*PublicHeader) GetLength ¶
func (h *PublicHeader) GetLength(pers protocol.Perspective) (protocol.ByteCount, error)
GetLength gets the length of the publicHeader in bytes. It can only be called for regular packets.
func (*PublicHeader) Write ¶
func (h *PublicHeader) Write(b *bytes.Buffer, version protocol.VersionNumber, pers protocol.Perspective) error
Write writes a public header. Warning: This API should not be considered stable and will change soon.
type Session ¶
type Session interface { // AcceptStream returns the next stream opened by the peer, blocking until one is available. // Since stream 1 is reserved for the crypto stream, the first stream is either 2 (for a client) or 3 (for a server). AcceptStream() (Stream, error) // OpenStream opens a new QUIC stream, returning a special error when the peeer's concurrent stream limit is reached. // New streams always have the smallest possible stream ID. // TODO: Enable testing for the special error OpenStream() (Stream, error) // OpenStreamSync opens a new QUIC stream, blocking until the peer's concurrent stream limit allows a new stream to be opened. // It always picks the smallest possible stream ID. OpenStreamSync() (Stream, error) // LocalAddr returns the local address. LocalAddr() net.Addr // RemoteAddr returns the address of the peer. RemoteAddr() net.Addr // Close closes the connection. The error will be sent to the remote peer in a CONNECTION_CLOSE frame. An error value of nil is allowed and will cause a normal PeerGoingAway to be sent. Close(error) error }
A Session is a QUIC connection between two peers.