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 +5/−1
- Network/Wai/Handler/WarpQUIC.hs +37/−21
- Setup.hs +1/−0
- warp-quic.cabal +28/−25
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