diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+## 3.0.9.3
+
+* Don't serve a 416 status code for 0-length files [keter issue #75](https://github.com/snoyberg/keter/issues/75)
+* Don't serve content-length for 416 responses [#346](https://github.com/yesodweb/wai/issues/346)
+
 ## 3.0.9.2
 
 Fix support for old versions of bytestring
diff --git a/Network/Wai/Handler/Warp/Response.hs b/Network/Wai/Handler/Warp/Response.hs
--- a/Network/Wai/Handler/Warp/Response.hs
+++ b/Network/Wai/Handler/Warp/Response.hs
@@ -226,11 +226,13 @@
           print _ex >>
 #endif
           sendRsp conn ver s2 hs2 (RspBuilder body True)
-        Right (s, hs1, beg, len) | len > 0 -> do
+        Right (s, hs1, beg, len) | len >= 0 -> do
             lheader <- composeHeader ver s hs1
             connSendFile conn path beg len hook [lheader]
           | otherwise -> do
-            sendRsp conn ver H.status416 hs1 (RspBuilder mempty True)
+            sendRsp conn ver H.status416
+                (filter (\(k, _) -> k /= "content-length") hs1)
+                (RspBuilder mempty True)
   where
     hs = addAcceptRanges hs0
     s2 = H.status404
diff --git a/warp.cabal b/warp.cabal
--- a/warp.cabal
+++ b/warp.cabal
@@ -1,5 +1,5 @@
 Name:                warp
-Version:             3.0.9.2
+Version:             3.0.9.3
 Synopsis:            A fast, light-weight web server for WAI applications.
 License:             MIT
 License-file:        LICENSE
