diff --git a/Network/CommSec.hs b/Network/CommSec.hs
--- a/Network/CommSec.hs
+++ b/Network/CommSec.hs
@@ -10,6 +10,7 @@
     -- * Establishing a connection from a shared secret
     , accept
     , connect
+    , close
     -- * Establishing a connection from a public identity (PKI)
     -- , acceptId
     -- , connectId
@@ -47,9 +48,12 @@
 pMVar :: MVar v -> v -> IO ()
 pMVar m v = v `seq` putMVar m v
 
+-- |Send a datagram, first encrypting it, using the given secure
+-- connection.
 send :: Connection -> B.ByteString -> IO ()
 send = sendWith takeMVar pMVar
 
+-- |Receive a datagram sent over the given secure connection
 recv :: Connection -> IO B.ByteString
 recv = recvWith takeMVar pMVar
 
@@ -249,6 +253,10 @@
         -> PortNumber
         -> IO Connection
 connect = doConnect newMVar
+
+-- |Close a connection
+close :: Connection -> IO ()
+close c = Net.close (socket c)
 
 -- |We use a word32 to indicate the size of a datagram
 sizeTagLen :: Int
diff --git a/commsec.cabal b/commsec.cabal
--- a/commsec.cabal
+++ b/commsec.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                commsec
-version:             0.2.4
+version:             0.2.5
 synopsis:            Provide communications security using symmetric ephemeral keys
 description:         This package provides confidentiallity,
                      integrity and replay detection. Users must
