Index: twisted/web/test/test_http_headers.py
===================================================================
--- twisted/web/test/test_http_headers.py	(revision 28386)
+++ twisted/web/test/test_http_headers.py	(working copy)
@@ -37,6 +37,12 @@
         self.assertTrue(h.hasHeader("Test"))
         self.assertEqual(h.getRawHeaders("test"), rawValue)
 
+    def test_rawHeadersTypeChecking(self):
+        """
+        L{Headers.setRawHeaders} requires values to be of type list.
+        """
+        h = Headers()
+        self.assertRaises(TypeError, h.setRawHeaders, {'Foo': 'bar'})
 
     def test_addRawHeader(self):
         """
Index: twisted/web/http_headers.py
===================================================================
--- twisted/web/http_headers.py	(revision 28386)
+++ twisted/web/http_headers.py	(working copy)
@@ -196,6 +196,9 @@
 
         @return: C{None}
         """
+        if not isinstance(values, list):
+            raise TypeError("Header entry `%r' should be list but found"
+                            " %r instead" % (name, type(values)))
         self._rawHeaders[name.lower()] = values
 
 
