warp 3.3.27 → 3.3.28
raw patch · 6 files changed
+36/−1 lines, 6 files
Files
- ChangeLog.md +5/−0
- Network/Wai/Handler/Warp.hs +7/−0
- Network/Wai/Handler/Warp/HTTP2/Request.hs +5/−0
- Network/Wai/Handler/Warp/Request.hs +9/−0
- Network/Wai/Handler/Warp/Types.hs +9/−0
- warp.cabal +1/−1
ChangeLog.md view
@@ -1,5 +1,10 @@ # ChangeLog for warp +## 3.3.28++* Fix for the "-x509" flag+ [#935](https://github.com/yesodweb/wai/pull/935)+ ## 3.3.27 * Fixing busy loop due to eMFILE
Network/Wai/Handler/Warp.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE PatternGuards #-} {-# OPTIONS_GHC -fno-warn-deprecations #-}@@ -100,7 +101,9 @@ , pauseTimeout , FileInfo(..) , getFileInfo+#ifdef MIN_VERSION_crypton_x509 , clientCertificate+#endif , withApplication , withApplicationSettings , testWithApplication@@ -129,7 +132,9 @@ import UnliftIO.Exception (SomeException, throwIO) import Data.Streaming.Network (HostPreference) import qualified Data.Vault.Lazy as Vault+#ifdef MIN_VERSION_crypton_x509 import Data.X509+#endif import qualified Network.HTTP.Types as H import Network.Socket (Socket, SockAddr) import Network.Wai (Request, Response, vault)@@ -534,8 +539,10 @@ getGracefulCloseTimeout2 :: Settings -> Int getGracefulCloseTimeout2 = settingsGracefulCloseTimeout2 +#ifdef MIN_VERSION_crypton_x509 -- | Getting information of client certificate. -- -- Since 3.3.5 clientCertificate :: Request -> Maybe CertificateChain clientCertificate = join . Vault.lookup getClientCertificateKey . vault+#endif
Network/Wai/Handler/Warp/HTTP2/Request.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-} module Network.Wai.Handler.Warp.HTTP2.Request ( toRequest@@ -23,7 +24,9 @@ import Network.Wai.Handler.Warp.HTTP2.Types import Network.Wai.Handler.Warp.Imports import Network.Wai.Handler.Warp.Request (getFileInfoKey, pauseTimeoutKey)+#ifdef MIN_VERSION_crypton_x509 import Network.Wai.Handler.Warp.Request (getClientCertificateKey)+#endif import qualified Network.Wai.Handler.Warp.Settings as S (Settings, settingsNoParsePath) import Network.Wai.Handler.Warp.Types @@ -87,7 +90,9 @@ $ Vault.insert setHTTP2DataKey (writeIORef ref) $ Vault.insert modifyHTTP2DataKey (modifyIORef' ref) $ Vault.insert pauseTimeoutKey (T.pause th)+#ifdef MIN_VERSION_crypton_x509 $ Vault.insert getClientCertificateKey (getTransportClientCertificate transport)+#endif Vault.empty getHTTP2DataKey :: Vault.Key (IO (Maybe HTTP2Data))
Network/Wai/Handler/Warp/Request.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DeriveDataTypeable #-}@@ -8,7 +9,9 @@ , headerLines , pauseTimeoutKey , getFileInfoKey+#ifdef MIN_VERSION_crypton_x509 , getClientCertificateKey+#endif , NoKeepAliveRequest (..) ) where @@ -21,7 +24,9 @@ import qualified Data.IORef as I import Data.Typeable (Typeable) import qualified Data.Vault.Lazy as Vault+#ifdef MIN_VERSION_crypton_x509 import Data.X509+#endif import qualified Network.HTTP.Types as H import Network.Socket (SockAddr) import Network.Wai@@ -71,7 +76,9 @@ rawPath = if settingsNoParsePath settings then unparsedPath else path vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th) $ Vault.insert getFileInfoKey (getFileInfo ii)+#ifdef MIN_VERSION_crypton_x509 $ Vault.insert getClientCertificateKey (getTransportClientCertificate transport)+#endif Vault.empty (rbody, remainingRef, bodyLength) <- bodyAndSource src cl te -- body producing function which will produce '100-continue', if needed@@ -316,6 +323,8 @@ getFileInfoKey = unsafePerformIO Vault.newKey {-# NOINLINE getFileInfoKey #-} +#ifdef MIN_VERSION_crypton_x509 getClientCertificateKey :: Vault.Key (Maybe CertificateChain) getClientCertificateKey = unsafePerformIO Vault.newKey {-# NOINLINE getClientCertificateKey #-}+#endif
Network/Wai/Handler/Warp/Types.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE OverloadedStrings #-} @@ -7,7 +8,9 @@ import qualified Data.ByteString as S import Data.IORef (IORef, readIORef, writeIORef, newIORef) import Data.Typeable (Typeable)+#ifdef MIN_VERSION_crypton_x509 import Data.X509+#endif import Network.Socket.BufferPool import System.Posix.Types (Fd) import qualified System.TimeManager as T@@ -177,12 +180,16 @@ , tlsMinorVersion :: Int , tlsNegotiatedProtocol :: Maybe ByteString -- ^ The result of Application Layer Protocol Negociation in RFC 7301 , tlsChiperID :: Word16+#ifdef MIN_VERSION_crypton_x509 , tlsClientCertificate :: Maybe CertificateChain+#endif } -- ^ Encrypted channel: TLS or SSL | QUIC { quicNegotiatedProtocol :: Maybe ByteString , quicChiperID :: Word16+#ifdef MIN_VERSION_crypton_x509 , quicClientCertificate :: Maybe CertificateChain+#endif } isTransportSecure :: Transport -> Bool@@ -193,7 +200,9 @@ isTransportQUIC QUIC{} = True isTransportQUIC _ = False +#ifdef MIN_VERSION_crypton_x509 getTransportClientCertificate :: Transport -> Maybe CertificateChain getTransportClientCertificate TCP = Nothing getTransportClientCertificate (TLS _ _ _ _ cc) = cc getTransportClientCertificate (QUIC _ _ cc) = cc+#endif
warp.cabal view
@@ -1,5 +1,5 @@ Name: warp-Version: 3.3.27+Version: 3.3.28 Synopsis: A fast, light-weight web server for WAI applications. License: MIT License-file: LICENSE