From 8653d49a42a0aae0287bb78e175b225c25522683 Mon Sep 17 00:00:00 2001 From: Vincent Hanquez Date: Sun, 23 Mar 2014 10:55:39 +0000 Subject: [PATCH] catch Error_EOF exception and return empty data. --- core/Network/TLS/Core.hs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/Network/TLS/Core.hs b/core/Network/TLS/Core.hs index 40a2873..79d01c8 100644 --- a/core/Network/TLS/Core.hs +++ b/core/Network/TLS/Core.hs @@ -72,9 +72,14 @@ sendData ctx dataToSend = liftIO (checkValid ctx) >> mapM_ sendDataChunk (L.toCh recvData :: MonadIO m => Context -> m B.ByteString recvData ctx = liftIO $ do checkValid ctx - pkt <- withReadLock ctx $ recvPacket ctx - either onError process pkt - where onError err@(Error_Protocol (reason,fatal,desc)) = + E.catchJust (\Error_EOF -> Just ()) + doRecv + (\() -> return B.empty) + where doRecv = do + pkt <- withReadLock ctx $ recvPacket ctx + either onError process pkt + + onError err@(Error_Protocol (reason,fatal,desc)) = terminate err (if fatal then AlertLevel_Fatal else AlertLevel_Warning) desc reason onError err = terminate err AlertLevel_Fatal InternalError (show err)