diff --git a/Network/Wai/Handler/Warp.hs b/Network/Wai/Handler/Warp.hs
--- a/Network/Wai/Handler/Warp.hs
+++ b/Network/Wai/Handler/Warp.hs
@@ -108,6 +108,8 @@
 import qualified Paths_warp
 import Data.Version (showVersion)
 
+import Data.List (delete)
+
 #if WINDOWS
 import Control.Concurrent (threadDelay)
 import qualified Control.Concurrent.MVar as MV
@@ -305,7 +307,7 @@
                 `mappend` spaceBuilder
                 `mappend` copyByteString (H.statusMessage status)
                 `mappend` newlineBuilder
-        !start' = foldl' responseHeaderToBuilder start (serverHeader : responseHeaders)
+        !start' = foldl' responseHeaderToBuilder start (serverHeader responseHeaders)
         !end = if isChunked'
                  then transferEncodingBuilder
                  else newlineBuilder
@@ -336,7 +338,8 @@
 isChunked = (==) H.http11
 
 hasBody :: H.Status -> Request -> Bool
-hasBody s req = s /= (H.Status 204 "") && requestMethod req /= "HEAD"
+hasBody s req = s /= (H.Status 204 "") && s /= H.status304 &&
+                H.statusCode s >= 200 && requestMethod req /= "HEAD"
 
 sendResponse :: T.Handle
              -> Request -> Socket -> Response -> IO Bool
@@ -577,5 +580,12 @@
     man <- T.initialize timeout
     f man
 
-serverHeader :: (CI.CI H.Ascii, ByteString)
-serverHeader = ("Server", B.pack $ "Warp/" ++ showVersion Paths_warp.version)
+serverHeader :: H.RequestHeaders -> H.RequestHeaders
+serverHeader hdrs = case lookup key hdrs of
+    Nothing  -> server : hdrs
+    Just svr -> servers svr : delete (key,svr) hdrs
+ where
+    key = "Server"
+    ver = B.pack $ "Warp/" ++ showVersion Paths_warp.version
+    server = (key, ver)
+    servers svr = (key, S.concat [svr, " ", ver])
diff --git a/warp.cabal b/warp.cabal
--- a/warp.cabal
+++ b/warp.cabal
@@ -1,5 +1,5 @@
 Name:                warp
-Version:             0.4.3.1
+Version:             0.4.4
 Synopsis:            A fast, light-weight web server for WAI applications.
 License:             BSD3
 License-file:        LICENSE
@@ -10,6 +10,7 @@
 Build-Type:          Simple
 Cabal-Version:       >=1.6
 Stability:           Stable
+Description:         The premier WAI handler. For more information, see <http://steve.vinoski.net/blog/2011/05/01/warp-a-haskell-web-server/>.
 
 flag network-bytestring
     Default: False
