=== modified file 'twisted/web/http_headers.py'
--- twisted/web/http_headers.py	2009-01-12 12:47:59 +0000
+++ twisted/web/http_headers.py	2009-11-07 17:11:35 +0000
@@ -6,7 +6,7 @@
 An API for storing HTTP header names and values.
 """
 
-
+import types
 from UserDict import DictMixin
 
 
@@ -134,11 +134,10 @@
     """
     _caseMappings = {'www-authenticate': 'WWW-Authenticate'}
 
-    def __init__(self, rawHeaders=None):
+    def __init__(self, rawHeaders={}):
         self._rawHeaders = {}
-        if rawHeaders is not None:
-            for name, values in rawHeaders.iteritems():
-                self.setRawHeaders(name, values)
+        for name, values in rawHeaders.iteritems():
+            self.setRawHeaders(name, values)
 
 
     def __repr__(self):
@@ -196,7 +195,14 @@
 
         @return: C{None}
         """
-        self._rawHeaders[name.lower()] = values
+        if isinstance(values, types.StringTypes):
+            raise TypeError(
+                'values must not be text. ' \
+                'Got %s' % (type(values)))
+
+        self.removeHeader(name)
+        for val in values:
+            self.addRawHeader(name, val)
 
 
     def addRawHeader(self, name, value):
@@ -209,11 +215,7 @@
         @type value: C{str}
         @param value: The value to set for the named header.
         """
-        values = self.getRawHeaders(name)
-        if values is None:
-            self.setRawHeaders(name, [value])
-        else:
-            values.append(value)
+        self._rawHeaders.setdefault(name.lower(), []).append(value)
 
 
     def getRawHeaders(self, name, default=None):

=== modified file 'twisted/web/test/test_http_headers.py'
--- twisted/web/test/test_http_headers.py	2009-01-12 12:47:59 +0000
+++ twisted/web/test/test_http_headers.py	2009-11-07 16:54:29 +0000
@@ -38,6 +38,14 @@
         self.assertEqual(h.getRawHeaders("test"), rawValue)
 
 
+    def test_setInvalidRawHeaders(self):
+        """
+        L{Headers.setRawHeaders} expects a sequence of string values.
+        """
+        h = Headers()
+        self.assertRaises(TypeError, h.setRawHeaders, "test", "value1")
+
+
     def test_addRawHeader(self):
         """
         L{Headers.addRawHeader} adds a new value for a given header.

