quic 0.1.23 → 0.1.24
raw patch · 5 files changed
+52/−70 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Network.QUIC: alpn :: ConnectionInfo -> Maybe ByteString
- Network.QUIC: cipher :: ConnectionInfo -> Cipher
- Network.QUIC: handshakeMode :: ConnectionInfo -> HandshakeMode13
- Network.QUIC: localCID :: ConnectionInfo -> CID
- Network.QUIC: localSockAddr :: ConnectionInfo -> SockAddr
- Network.QUIC: remoteCID :: ConnectionInfo -> CID
- Network.QUIC: remoteSockAddr :: ConnectionInfo -> SockAddr
- Network.QUIC: retry :: ConnectionInfo -> Bool
- Network.QUIC: rxBytes :: ConnectionStats -> Int
- Network.QUIC: txBytes :: ConnectionStats -> Int
- Network.QUIC: version :: ConnectionInfo -> Version
- Network.QUIC.Internal: [scWildcardSocketonly] :: ServerConfig -> Bool
+ Network.QUIC: ConnectionInfo :: Version -> Cipher -> Maybe ByteString -> HandshakeMode13 -> Bool -> SockAddr -> SockAddr -> CID -> CID -> ConnectionInfo
+ Network.QUIC: ConnectionStats :: Int -> Int -> ConnectionStats
+ Network.QUIC: [alpn] :: ConnectionInfo -> Maybe ByteString
+ Network.QUIC: [cipher] :: ConnectionInfo -> Cipher
+ Network.QUIC: [handshakeMode] :: ConnectionInfo -> HandshakeMode13
+ Network.QUIC: [localCID] :: ConnectionInfo -> CID
+ Network.QUIC: [localSockAddr] :: ConnectionInfo -> SockAddr
+ Network.QUIC: [remoteCID] :: ConnectionInfo -> CID
+ Network.QUIC: [remoteSockAddr] :: ConnectionInfo -> SockAddr
+ Network.QUIC: [retry] :: ConnectionInfo -> Bool
+ Network.QUIC: [rxBytes] :: ConnectionStats -> Int
+ Network.QUIC: [txBytes] :: ConnectionStats -> Int
+ Network.QUIC: [version] :: ConnectionInfo -> Version
- Network.QUIC.Internal: ServerConfig :: [Version] -> [Cipher] -> [Group] -> Parameters -> (String -> IO ()) -> Maybe FilePath -> Credentials -> Hooks -> ServerHooks -> Bool -> [(IP, PortNumber)] -> Maybe (Version -> [ByteString] -> IO ByteString) -> Bool -> SessionManager -> Maybe FilePath -> Int -> Bool -> ServerConfig
+ Network.QUIC.Internal: ServerConfig :: [Version] -> [Cipher] -> [Group] -> Parameters -> (String -> IO ()) -> Maybe FilePath -> Credentials -> Hooks -> ServerHooks -> Bool -> [(IP, PortNumber)] -> Maybe (Version -> [ByteString] -> IO ByteString) -> Bool -> SessionManager -> Maybe FilePath -> Int -> ServerConfig
Files
- ChangeLog.md +46/−42
- Network/QUIC.hs +2/−13
- Network/QUIC/Config.hs +0/−11
- quic.cabal +1/−1
- util/quic-client.hs +3/−3
ChangeLog.md view
@@ -1,129 +1,133 @@ # ChangeLog -## 0.1.23+## 0.1.24 * Introducing `onConnectionEstablished` into `Hooks`. * Preparing for tls v2.1. +## 0.1.23++* Accidentally released using a wrong branch. Deprecated on Hackage.+ ## 0.1.22 -- Incresing activeConnectionIdLimit and fix a bug+* Incresing activeConnectionIdLimit and fix a bug ## 0.1.21 -- Workaround for 0s paddings.-- Another bug fix for packing Fin.+* Workaround for 0s paddings.+* Another bug fix for packing Fin. ## 0.1.20 -- Bug fix for packing Fin.-- Proper handling for MAX_STREAM_DATA-- util/{client,server} are now called util/{quic-client, quic-server}.-- Renaming two command options for util/quic-client.-- Supporting multiple targets in util/quic-client.+* Bug fix for packing Fin.+* Proper handling for MAX_STREAM_DATA+* util/{client,server} are now called util/{quic-client, quic-server}.+* Renaming two command options for util/quic-client.+* Supporting multiple targets in util/quic-client. ## 0.1.19 -- Using network-control v0.1.+* Using network-control v0.1. ## 0.1.18 -- Fixing a buf of 0-RTT where unidirectionalStream waits for SH.-- Introducing ccVersion to start with Version1.+* Fixing a buf of 0-RTT where unidirectionalStream waits for SH.+* Introducing ccVersion to start with Version1. ## 0.1.17 -- Garding the new_connection_id attack.+* Garding the new_connection_id attack. ## 0.1.16 -- Using tls v2.0.+* Using tls v2.0. ## 0.1.15 -- Support customizing ClientHooks and ServerHooks config from tls+* Support customizing ClientHooks and ServerHooks config from tls ## 0.1.14 -- Using crypto-token v0.1+* Using crypto-token v0.1 ## 0.1.13 -- Garding the path_request attack.+* Garding the path_request attack. ## 0.1.12 -- Fixing build.+* Fixing build. ## 0.1.11 -- Rescuing GHC 8.10, 9.0 and 9.2.+* Rescuing GHC 8.10, 9.0 and 9.2. ## 0.1.11 -- Adding possibleMyStreams.+* Adding possibleMyStreams. ## 0.1.10 -- Setting proper upper boundaries for the dependencies+* Setting proper upper boundaries for the dependencies ## 0.1.9 -- Using the network-control package.-- Rate control for some frames.-- Announcing MaxStreams correctly.+* Using the network-control package.+* Rate control for some frames.+* Announcing MaxStreams correctly. ## 0.1.8 -- Announcing MaxStreams properly.-- Terminating a connection if the peer violates flow controls.+* Announcing MaxStreams properly.+* Terminating a connection if the peer violates flow controls. ## 0.1.7 -- Using System.Timeout.timeout.+* Using System.Timeout.timeout. ## 0.1.6 -- Fixing the race condition of `timeout`.+* Fixing the race condition of `timeout`. ## 0.1.5 -- Catching up "tls" v1.9.0.-- Fixing the timing to set resumption tokens.+* Catching up "tls" v1.9.0.+* Fixing the timing to set resumption tokens. ## 0.1.4 -- Fixing the race of socket closure.+* Fixing the race of socket closure. ## 0.1.3 -- Supporting `tls` v1.8.0.+* Supporting `tls` v1.8.0. ## 0.1.2 -- Using "crypton" instead of "cryptonite".+* Using "crypton" instead of "cryptonite". ## 0.1.1 -- Fix recvStream hanging+* Fix recvStream hanging [#54](https://github.com/kazu-yamamoto/quic/pull/54)-- Don't use the fusion crypto on Intel if the CPU does not+* Don't use the fusion crypto on Intel if the CPU does not provides enough features.-- Add cabal flag for fusion support+* Add cabal flag for fusion support [#53](https://github.com/kazu-yamamoto/quic/pull/53) ## 0.1.0 -- Supporting QUICv2 and version negotiation.-- Supporting CPUs other than Intel.-- Supporting Windows.-- Using the network-udp package+* Supporting QUICv2 and version negotiation.+* Supporting CPUs other than Intel.+* Supporting Windows.+* Using the network-udp package ## 0.0.1 -- Making Haskell servers friendly with Chrome+* Making Haskell servers friendly with Chrome [#20](https://github.com/kazu-yamamoto/quic/pull/20) ## 0.0.0 -- Initial version.+* Initial version.
Network/QUIC.hs view
@@ -36,23 +36,12 @@ sendStreamMany, -- * Information- ConnectionInfo,+ ConnectionInfo (..), getConnectionInfo,- version,- cipher,- alpn,- handshakeMode,- retry,- localSockAddr,- remoteSockAddr,- localCID,- remoteCID, -- * Statistics- ConnectionStats,+ ConnectionStats (..), getConnectionStats,- txBytes,- rxBytes, -- * Synchronization wait0RTTReady,
Network/QUIC/Config.hs view
@@ -141,16 +141,6 @@ , scDebugLog :: Maybe FilePath , scTicketLifetime :: Int -- ^ A lifetime (in seconds) for TLS session ticket and QUIC token.- , scWildcardSocketonly :: Bool- -- ^ If 'True', only wild sockets are used.- -- Packets are dispatched in Haskell code according to- -- destination connection ID. This is an overhead however- -- clinets can make QUIC connections even if intermediate NATs- -- rebind UDP ports frequently.- -- Otherwise, connected sockets are also used.- -- This means that packets are dispatched by a kernel.- -- But unfortunately, clients cannot make QUIC connections- -- if intermediate NATs rebind UDP ports frequently. } -- | The default value for server configuration.@@ -174,5 +164,4 @@ , scSessionManager = noSessionManager , scDebugLog = Nothing , scTicketLifetime = 7200- , scWildcardSocketonly = True }
quic.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name: quic-version: 0.1.23+version: 0.1.24 license: BSD3 license-file: LICENSE maintainer: kazu@iij.ad.jp
util/quic-client.hs view
@@ -398,11 +398,11 @@ } printThroughput :: UnixTime -> UnixTime -> ConnectionStats -> IO ()-printThroughput t1 t2 stats =+printThroughput t1 t2 ConnectionStats{..} = printf "Throughput %.2f Mbps (%d bytes in %d msecs)\n" bytesPerSeconds- (rxBytes stats)+ rxBytes millisecs where UnixDiffTime (CTime s) u = t2 `diffUnixTime` t1@@ -410,7 +410,7 @@ millisecs = fromIntegral s * 1000 + fromIntegral u `div` 1000 bytesPerSeconds :: Double bytesPerSeconds =- fromIntegral (rxBytes stats)+ fromIntegral rxBytes * (1000 :: Double) * 8 / fromIntegral millisecs