diff --git a/Network/Web/HTTP.hs b/Network/Web/HTTP.hs
--- a/Network/Web/HTTP.hs
+++ b/Network/Web/HTTP.hs
@@ -24,6 +24,7 @@
 import qualified Data.Map as Map hiding (Map)
 import Data.Maybe
 import IO hiding (try)
+import System.IO.Error hiding (try)
 import Network.URI
 import Network.Web.Params
 import Text.Printf
@@ -156,7 +157,8 @@
 receive hdl = do
     mreq <- try $ receiveRequest hdl
     case mreq of
-      Left  e   -> if isEOFError e
+      Left  e   -> if isEOFError e ||
+                      show (ioeGetErrorType e) == "resource vanished"
                    then throw TerminatedByClient
                    else return Nothing
       Right req -> return $ Just req
@@ -228,7 +230,9 @@
     sendResponseFields h ver persist rsp
     hPutStr h crlf
     sendResponseBody h ver rsp
-    hFlush h
+    hFlush h `catch` ignore
+  where
+    ignore _ = return ()
 
 sendStatusLine :: Handle -> Version -> Response -> IO ()
 sendStatusLine h ver rsp = do
diff --git a/Network/Web/Server.hs b/Network/Web/Server.hs
--- a/Network/Web/Server.hs
+++ b/Network/Web/Server.hs
@@ -1,5 +1,5 @@
 {-|
-  A library for HTTP server.
+  HTTP server library.
 -}
 module Network.Web.Server (connection, WebServer, WebConfig(..)) where
 
diff --git a/Network/Web/Server/Basic.hs b/Network/Web/Server/Basic.hs
--- a/Network/Web/Server/Basic.hs
+++ b/Network/Web/Server/Basic.hs
@@ -15,7 +15,6 @@
 import qualified Data.ByteString.Lazy.Char8 as LBS
 import Data.List
 import Data.Time
-import Network.TCPInfo
 import Network.URI hiding (path)
 import Network.Web.Date
 import Network.Web.HTTP
diff --git a/Network/Web/Server/CGI.hs b/Network/Web/Server/CGI.hs
--- a/Network/Web/Server/CGI.hs
+++ b/Network/Web/Server/CGI.hs
@@ -5,7 +5,6 @@
 import Data.ByteString.Lazy.Char8 (ByteString)
 import qualified Data.ByteString.Lazy.Char8 as LBS
 import Data.Char
-import Network.TCPInfo
 import Network.URI
 import Network.Web.HTTP
 import Network.Web.Server.Params
diff --git a/Network/Web/Server/Params.hs b/Network/Web/Server/Params.hs
--- a/Network/Web/Server/Params.hs
+++ b/Network/Web/Server/Params.hs
@@ -3,7 +3,7 @@
 import Data.ByteString.Lazy.Char8 (ByteString)
 import Data.Time
 import Network.URI
-import Network.TCPInfo
+import Network.Web.Utils
 
 {-|
   The configuration for the basic web server.
diff --git a/Network/Web/Utils.hs b/Network/Web/Utils.hs
--- a/Network/Web/Utils.hs
+++ b/Network/Web/Utils.hs
@@ -3,7 +3,10 @@
 -}
 module Network.Web.Utils where
 
+import Data.List
+import Network.Socket
 import Network.URI
+import System.IO
 
 {-|
   Getting a hostname from 'URI'.
@@ -16,3 +19,36 @@
 -}
 toURLwoPort :: URI -> String
 toURLwoPort uri = uriScheme uri ++ "//" ++ uriHostName uri ++ uriPath uri ++ uriQuery uri
+
+----------------------------------------------------------------
+
+{-|
+  TCP connection information.
+-}
+data TCPInfo = TCPInfo {
+  -- | Local IP address
+    myAddr :: HostName
+  -- | Local port number
+  , myPort :: ServiceName
+  -- | Remote IP address
+  , peerAddr :: HostName
+  -- | Remote port number
+  , peerPort :: ServiceName
+  } deriving (Eq,Show)
+
+{-|
+  Getting TCP connection information.
+-}
+getTCPInfo :: Socket -> IO TCPInfo
+getTCPInfo sock = do
+    (Just vMyAddr,   Just vMyPort)   <- getSocketName sock >>= getInfo
+    (Just vPeerAddr, Just vPeerPort) <- getPeerName sock >>= getInfo
+    return TCPInfo { myAddr = strip vMyAddr
+                   , myPort = vMyPort
+                   , peerAddr = strip vPeerAddr
+                   , peerPort = vPeerPort}
+  where
+    getInfo = getNameInfo [NI_NUMERICHOST, NI_NUMERICSERV] True True
+    strip x
+      | "::ffff:" `isPrefixOf` x = drop 7 x
+      | otherwise                = x
diff --git a/webserver.cabal b/webserver.cabal
--- a/webserver.cabal
+++ b/webserver.cabal
@@ -1,26 +1,29 @@
 Name:                   webserver
-Version:                0.1.1
+Version:                0.2.0
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
 License-File:           LICENSE
 Synopsis:               HTTP server library
-Description:            A simple but practical library of HTTP server.
+Description:            A simple but practical library of HTTP server
 Category:               Network
 Cabal-Version:          >= 1.6
 Build-Type:             Simple
 library
   GHC-Options:          -Wall -O2
-  Exposed-Modules:      Network.Web.HTTP,
-                        Network.Web.Server,
-                        Network.Web.Server.Basic,
+  Exposed-Modules:      Network.Web.HTTP
+                        Network.Web.Server
+                        Network.Web.Server.Basic
                         Network.Web.Utils
-  Other-Modules:        Network.Web.Date,
-                        Network.Web.Params,
-                        Network.Web.Server.CGI,
-                        Network.Web.Server.Lang,
-                        Network.Web.Server.Params,
+  Other-Modules:        Network.Web.Date
+                        Network.Web.Params
+                        Network.Web.Server.CGI
+                        Network.Web.Server.Lang
+                        Network.Web.Server.Params
                         Network.Web.Server.Range
   Build-Depends:        base >= 4 && < 10, parsec >= 3,
                         haskell98, network, bytestring, containers,
                         filepath, time, unix, process, c10k
+Source-Repository head
+  Type:                 git
+  Location:             git://github.com/kazu-yamamoto/webserver.git
