diff --git a/Network/AMQP.hs b/Network/AMQP.hs
--- a/Network/AMQP.hs
+++ b/Network/AMQP.hs
@@ -705,15 +705,17 @@
             then error $ "recvExact wanted "++show bytes++" bytes; got "++show (fromIntegral $ BL.length b)++" bytes"
             else return b
     recvExact' bytes buf = do
-        dat <- NB.recv sock bytes -- (min bytes maxFrameSize)
-        if BS.length dat == 0 
+        dat <- NB.recv sock bytes
+        let len = BS.length dat
+        if len == 0
             then CE.throwIO $ ConnectionClosedException "recv returned 0 bytes"
             else do
                 let buf' = BL.append buf (toLazy dat)
-                    bufLen = fromIntegral $ BL.length buf'
-                if bufLen >= bytes
+                if len >= bytes
                     then return buf'
-                    else recvExact' (bytes-bufLen) buf'
+                    else recvExact' (bytes-len) buf'
+            
+
         
 
     
diff --git a/amqp.cabal b/amqp.cabal
--- a/amqp.cabal
+++ b/amqp.cabal
@@ -1,5 +1,5 @@
 Name:                amqp
-Version:             0.2.4
+Version:             0.2.5
 Synopsis:            Client library for AMQP servers (currently only RabbitMQ)
 Description:         Client library for AMQP servers (currently only RabbitMQ)
 License:             BSD3
