r47351 - Apply 8212_web_http_final.diff.
adiroiban-TA+aISz0psMTMxyoc4vAAJOcrHinNvQL0E9HWUfgJXw@public.gmane.org Fri, 6 May 2016 01:31:45 -0600 (MDT)
| Newsgroups | gmane.comp.python.twisted.commits |
|---|---|
| Message-ID | <[email protected]> |
Author: adiroiban
Date: Fri May 6 01:31:38 2016
New Revision: 47351
Added:
branches/http-client-invalid-header-8212/twisted/web/topfiles/8212.bugfix
Modified:
branches/http-client-invalid-header-8212/twisted/web/http.py
branches/http-client-invalid-header-8212/twisted/web/test/test_http.py
Log:
Apply 8212_web_http_final.diff.
Modified: branches/http-client-invalid-header-8212/twisted/web/http.py
==============================================================================
--- branches/http-client-invalid-header-8212/twisted/web/http.py (original)
+++ branches/http-client-invalid-header-8212/twisted/web/http.py Fri May 6 01:31:38 2016
@@ -427,7 +427,10 @@
'field-name: value'.
@type header: C{bytes}
"""
- key, val = header.split(b':', 1)
+ try:
+ key, val = header.split(b':', 1)
+ except ValueError:
+ return
val = val.lstrip()
self.handleHeader(key, val)
if key.lower() == b'content-length':
Modified: branches/http-client-invalid-header-8212/twisted/web/test/test_http.py
==============================================================================
--- branches/http-client-invalid-header-8212/twisted/web/test/test_http.py (original)
+++ branches/http-client-invalid-header-8212/twisted/web/test/test_http.py Fri May 6 01:31:38 2016
@@ -2366,6 +2366,26 @@
self.assertEqual(c.length, 10)
+ def test_extractIncorrectHeader(self):
+ """
+ An invalid header (e.g. header without colon) does not raise exception in
+ L{HTTPClient.extractHeader}.
+ """
+ c = ClientDriver()
+ c.handleHeader = self.ourHandleHeader
+ c.handleEndHeaders = self.ourHandleEndHeaders
+ c.lineReceived(b'HTTP/1.0 200')
+ c.lineReceived(b'X-Invalid-Header 0')
+ self.assertFalse(self.handleHeaderCalled)
+
+ # Signal end of headers.
+ c.lineReceived(b'')
+ self.assertFalse(self.handleHeaderCalled)
+ self.assertTrue(self.handleEndHeadersCalled)
+ self.assertEqual(c.version, b'HTTP/1.0')
+ self.assertEqual(c.status, b'200')
+
+
def test_noHeaders(self):
"""
An HTTP request with no headers will not cause any calls to