Index: Lib/httplib.py =================================================================== --- Lib/httplib.py (revision 85181) +++ Lib/httplib.py (working copy) @@ -915,7 +915,7 @@ if self.__state != _CS_REQ_STARTED: raise CannotSendHeader() - hdr = '%s: %s' % (header, '\r\n\t'.join(values)) + hdr = '%s: %s' % (header, '\r\n\t'.join([str(v) for v in values])) self._output(hdr) def endheaders(self, message_body=None): Index: Lib/test/test_httplib.py =================================================================== --- Lib/test/test_httplib.py (revision 85181) +++ Lib/test/test_httplib.py (working copy) @@ -1,3 +1,4 @@ +import httplib import array import httplib import StringIO @@ -64,8 +65,6 @@ # Some headers are added automatically, but should not be added by # .request() if they are explicitly set. - import httplib - class HeaderCountingBuffer(list): def __init__(self): self.count = {} @@ -91,6 +90,13 @@ conn.request('POST', '/', body, headers) self.assertEqual(conn._buffer.count[header.lower()], 1) + def test_putheader(self): + conn = httplib.HTTPConnection('example.com') + conn.sock = FakeSocket(None) + conn.putrequest('GET','/') + conn.putheader('Content-length',42) + self.assertTrue('Content-length: 42' in conn._buffer) + class BasicTest(TestCase): def test_status_lines(self): # Test HTTP status lines