diff --git a/Network/AMQP.hs b/Network/AMQP.hs
--- a/Network/AMQP.hs
+++ b/Network/AMQP.hs
@@ -734,17 +734,21 @@
                 if len >= bytes
                     then return buf'
                     else recvExact' (bytes-len) buf'
-            
 
-        
 
-    
-writeFrameSock :: Socket -> Frame -> IO ()    
+
+
+
+writeFrameSock :: Socket -> Frame -> IO ()
 writeFrameSock sock x = do
-    NB.send sock $ toStrict $ runPut $ put x
-    return ()
-        
-    
+    f $ toStrict $ runPut $ put x
+  where
+    f x | BS.length x == 0 = return ()
+    f x = do
+        sent <- NB.send sock x
+        f $ BS.drop sent x
+
+
 
 ------------------------ CHANNEL -----------------------------
 
diff --git a/amqp.cabal b/amqp.cabal
--- a/amqp.cabal
+++ b/amqp.cabal
@@ -1,5 +1,5 @@
 Name:                amqp
-Version:             0.2.9
+Version:             0.3.0
 Synopsis:            Client library for AMQP servers (currently only RabbitMQ)
 Description:         Client library for AMQP servers (currently only RabbitMQ)
 License:             BSD3
