quic-0.3.2: Network/QUIC/Client.hs
-- | This main module provides APIs for QUIC clients.
module Network.QUIC.Client (
-- * Running a QUIC client
run,
-- * Configration
ClientConfig,
defaultClientConfig,
ccServerName,
ccServerNameOverride,
ccUseServerNameIndication,
ccPortName,
ccALPN,
ccUse0RTT,
ccMaxDatagramFrameSize,
ccResumption,
ccCiphers,
ccGroups,
ccVersions,
-- , ccCredentials
ccValidate,
ccSockConnected,
ccWatchDog,
-- * Resumption
ResumptionInfo,
getResumptionInfo,
isResumptionPossible,
is0RTTPossible,
-- * Migration
-- | If 'ccSockConnected' is 'True', a connected socket is made.
-- Otherwise, a unconnected socket is made.
--
-- For unconnected sockets, a preferred network IF is used
-- according to packet routing. But since the current peer CID
-- is used with the new local address, a bad guy can correlate
-- the old local addresss and the new local address via the
-- current peer CID. In other words, migration is trackable.
--
-- For connected sockets, the old local address is kept to be
-- used even if a preferred network IF gets available. Call the
-- 'migrate' API to use the new local address. This ensures that
-- a new peer CID is used for the new local address. In short,
-- migration is not trackable.
--
-- If 'ccWatchDog' is 'True' on Linux and macOS, a watch dog
-- thread is spawned and it calls 'migrate' when network-related
-- events (e.g. a new network IF is attached or the default
-- route is changed) are observed. This is an experimental
-- feature.
migrate,
) where
import Network.QUIC.Client.Run
import Network.QUIC.Config
import Network.QUIC.Connection
import Network.QUIC.Types