@@ -31,7 +31,7 @@ import qualified Data.ByteString.Lazy as L
3131import Data.Conduit.Binary (sourceFileRange)
3232import qualified Data.Conduit as C
3333import qualified Data.Conduit.List as CL
34−import Control.Exception (bracket, finally)
34+import Control.Exception (bracket, finally, handle)
3535import qualified Network.TLS.Extra as TLSExtra
3636import qualified Data.Certificate.X509 as X509
3737import qualified Data.ByteString as B
@@ -161,7 +161,15 @@ runTLSSocket TLSSettings {..} set sock app = do
161161 , connClose =
162162 TLS.bye ctx `finally`
163163 TLS.contextClose ctx
164− , connRecv = TLS.recvData ctx
164+ , connRecv =
165+ let onEOF TLS.Error_EOF = return B.empty
166+ onEOF e = throwIO e
167+ go = handle onEOF $ do
168+ x <- TLS.recvData ctx
169+ if B.null x
170+ then go
171+ else return x
172+ in go
165173 , connSendFileOverride = NotOverride
166174 , connBuffer = blazeBuf
167175 }