diff --git a/Data/Conduit/Network/TLS.hs b/Data/Conduit/Network/TLS.hs
--- a/Data/Conduit/Network/TLS.hs
+++ b/Data/Conduit/Network/TLS.hs
@@ -167,4 +167,6 @@
         | rest == 0 = return $ S.concat $ front []
         | otherwise = do
             next <- recv socket rest
-            loop (front . (next:)) $ rest - S.length next
+            if S.length next == 0
+                then return $ S.concat $ front []
+                else loop (front . (next:)) $ rest - S.length next
diff --git a/network-conduit-tls.cabal b/network-conduit-tls.cabal
--- a/network-conduit-tls.cabal
+++ b/network-conduit-tls.cabal
@@ -1,5 +1,5 @@
 name:                network-conduit-tls
-version:             1.0.0.1
+version:             1.0.0.2
 synopsis:            Create TLS-aware network code with conduits
 description:         Uses the tls package for a pure-Haskell implementation.
 homepage:            https://github.com/snoyberg/conduit
