2011-03-02 07:35:25 +00:00
|
|
|
module Network.TLS.Server (recvData) where
|
2010-09-09 21:47:19 +00:00
|
|
|
|
|
|
|
import Control.Monad.Trans
|
2011-03-01 20:01:40 +00:00
|
|
|
import Network.TLS.Core
|
2010-09-09 21:47:19 +00:00
|
|
|
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 -}
|
2011-03-01 20:01:40 +00:00
|
|
|
recvData :: MonadIO m => TLSCtx -> m L.ByteString
|
|
|
|
recvData ctx = do
|
|
|
|
pkt <- recvPacket ctx
|
2010-09-09 21:47:19 +00:00
|
|
|
case pkt of
|
2011-03-01 20:01:40 +00:00
|
|
|
Right [Handshake (ClientHello _ _ _ _ _ _)] -> handshake ctx >> recvData ctx
|
2010-10-02 21:41:00 +00:00
|
|
|
Right [AppData x] -> return $ L.fromChunks [x]
|
2010-09-09 21:47:19 +00:00
|
|
|
Left err -> error ("error received: " ++ show err)
|
|
|
|
_ -> error "unexpected item"
|