packages feed

warp-quic 0.0.0 → 0.0.1

raw patch · 4 files changed

+71/−47 lines, 4 filesdep +networkdep ~quicdep ~tlssetup-changedPVP ok

version bump matches the API change (PVP)

Dependencies added: network

Dependency ranges changed: quic, tls

API changes (from Hackage documentation)

+ Network.Wai.Handler.WarpQUIC: quicApp :: Settings -> Application -> InternalInfo -> Connection -> IO ()
+ Network.Wai.Handler.WarpQUIC: runQUICSocket :: QUICSettings -> Settings -> Socket -> Application -> IO ()

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for warp-quic -## 0.0.0.0+## 0.0.1++* Providing `runQUICSocket`.++## 0.0.0  * First version. Released on an unsuspecting world.
Network/Wai/Handler/WarpQUIC.hs view
@@ -8,34 +8,50 @@ import qualified Network.HTTP3.Server as H3 import Network.QUIC import Network.QUIC.Server as Q+import Network.Socket (Socket) import Network.TLS (cipherID) import Network.Wai import Network.Wai.Handler.Warp hiding (run)-import Network.Wai.Handler.Warp.Internal+import Network.Wai.Handler.Warp.Internal hiding (Connection)  -- | QUIC server settings. type QUICSettings = ServerConfig +runQUICSocket :: QUICSettings -> Settings -> Socket -> Application -> IO ()+runQUICSocket quicsettings settings sock app =+    withII settings $ \ii ->+        Q.runWithSockets [sock] quicsettings $ quicApp settings app ii+ -- | Running warp with HTTP/3 on QUIC. runQUIC :: QUICSettings -> Settings -> Application -> IO ()-runQUIC quicsettings settings app = do+runQUIC quicsettings settings app =     withII settings $ \ii ->-        Q.run quicsettings $ \conn -> do-           info <- getConnectionInfo conn-           mccc <- clientCertificateChain conn-           let addr = remoteSockAddr info-               malpn = alpn info-               transport = QUIC {-                   quicNegotiatedProtocol = malpn-                 , quicChiperID = cipherID $ cipher info-                 , quicClientCertificate = mccc-                 }-               pread = pReadMaker ii-               timmgr = timeoutManager ii-               conf = H3.Config H3.defaultHooks pread timmgr-           case malpn of-             Nothing -> return ()-             Just appProto -> do-                 let runX | "h3" `BS.isPrefixOf` appProto = H3.run-                          | otherwise                     = HQ.run-                 runX conn conf $ http2server settings ii transport addr app+        Q.run quicsettings $ quicApp settings app ii++quicApp+    :: Settings+    -> Application+    -> InternalInfo+    -> Connection+    -> IO ()+quicApp settings app ii conn = do+    info <- getConnectionInfo conn+    mccc <- clientCertificateChain conn+    let addr = remoteSockAddr info+        malpn = alpn info+        transport =+            QUIC+                { quicNegotiatedProtocol = malpn+                , quicChiperID = cipherID $ cipher info+                , quicClientCertificate = mccc+                }+        pread = pReadMaker ii+        timmgr = timeoutManager ii+        conf = H3.Config H3.defaultHooks pread timmgr+    case malpn of+        Nothing -> return ()+        Just appProto -> do+            let runX+                    | "h3" `BS.isPrefixOf` appProto = H3.run+                    | otherwise = HQ.run+            runX conn conf $ http2server settings ii transport addr app
Setup.hs view
@@ -1,2 +1,3 @@ import Distribution.Simple+ main = defaultMain
warp-quic.cabal view
@@ -1,27 +1,30 @@-name:                warp-quic-version:             0.0.0-author:              Kazu Yamamoto <kazu@iij.ad.jp>-maintainer:          Kazu Yamamoto <kazu@iij.ad.jp>-license:             BSD3-license-file:        LICENSE-synopsis:            Warp based on QUIC-description:         WAI handler for HTTP/3 based on QUIC-homepage:            https://github.com/kazu-yamamoto/warp-quic-category:            Network-cabal-version:       >=1.10-build-type:          Simple-extra-source-files:  ChangeLog.md+cabal-version:      >=1.10+name:               warp-quic+version:            0.0.1+license:            BSD3+license-file:       LICENSE+maintainer:         Kazu Yamamoto <kazu@iij.ad.jp>+author:             Kazu Yamamoto <kazu@iij.ad.jp>+homepage:           https://github.com/yesodweb/wai+synopsis:           Warp based on QUIC+description:        WAI handler for HTTP/3 based on QUIC+category:           Network+build-type:         Simple+extra-source-files: ChangeLog.md  library-  default-language:    Haskell2010-  ghc-options:         -Wall-  exposed-modules:     Network.Wai.Handler.WarpQUIC-  build-depends:       base >= 4.13 && < 5-                     , bytestring-                     , http3-                     , quic-                     , tls-                     , wai-                     , warp >= 3.3.15-  if impl(ghc >= 8)-      default-extensions:  Strict StrictData+    exposed-modules:  Network.Wai.Handler.WarpQUIC+    default-language: Haskell2010+    ghc-options:      -Wall+    build-depends:+        base >=4.13 && <5,+        bytestring,+        http3,+        network,+        quic >=0.2 && <0.3,+        tls >=1.7,+        wai,+        warp >=3.3.15++    if impl(ghc >=8)+        default-extensions: Strict StrictData