@@ -9,6 +9,7 @@ module Network.Wai.Handler.Warp.Request (
99 , headerLines
1010 , pauseTimeoutKey
1111 , getFileInfoKey
12+ , getClientCertificateKey
1213 , NoKeepAliveRequest (..)
1314 ) where
1415
@@ -21,6 +22,7 @@ import qualified Data.CaseInsensitive as CI
2122import qualified Data.IORef as I
2223import Data.Typeable (Typeable)
2324import qualified Data.Vault.Lazy as Vault
25+import Data.X509
2426import qualified Network.HTTP.Types as H
2527import Network.Socket (SockAddr)
2628import Network.Wai
@@ -76,6 +78,7 @@ recvRequest firstRequest settings conn ii th addr src transport = do
7678 rawPath = if settingsNoParsePath settings then unparsedPath else path
7779 vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th)
7880 $ Vault.insert getFileInfoKey (getFileInfo ii)
81+ $ Vault.insert getClientCertificateKey (tlsClientCertificate transport)
7982 Vault.empty
8083 (rbody, remainingRef, bodyLength) <- bodyAndSource src cl te
8184 -- body producing function which will produce '100-continue', if needed
@@ -300,3 +303,7 @@ pauseTimeoutKey = unsafePerformIO Vault.newKey
300303getFileInfoKey :: Vault.Key (FilePath -> IO FileInfo)
301304getFileInfoKey = unsafePerformIO Vault.newKey
302305{-# NOINLINE getFileInfoKey #-}
306+
307+getClientCertificateKey :: Vault.Key (Maybe CertificateChain)
308+getClientCertificateKey = unsafePerformIO Vault.newKey
309+{-# NOINLINE getClientCertificateKey #-}