hs-tls/Network/TLS/Server.hs
2011-03-02 07:35:25 +00:00

17 lines
624 B
Haskell

module Network.TLS.Server (recvData) where
import Control.Monad.Trans
import Network.TLS.Core
import Network.TLS.Struct
import qualified Data.ByteString.Lazy as L
{- | recvData get data out of Data packet, and automatically renegociate if
- a Handshake ClientHello is received -}
recvData :: MonadIO m => TLSCtx -> m L.ByteString
recvData ctx = do
pkt <- recvPacket ctx
case pkt of
Right [Handshake (ClientHello _ _ _ _ _ _)] -> handshake ctx >> recvData ctx
Right [AppData x] -> return $ L.fromChunks [x]
Left err -> error ("error received: " ++ show err)
_ -> error "unexpected item"