Skip to content

Commit 1c0d5d7

Browse files
committed
gh-142533: Apply PR feedback about redundant code changes
* Remove redundant validation checks * Drop unnecessary return statement * Remove unnecessary debug code
1 parent 2f0605a commit 1c0d5d7

File tree

3 files changed

+21
-39
lines changed

3 files changed

+21
-39
lines changed

Lib/http/server.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,6 @@ def send_response_only(self, code, message=None):
552552
message = ''
553553
if not hasattr(self, '_headers_buffer'):
554554
self._headers_buffer = []
555-
_validate_header_string(message)
556555
self._headers_buffer.append(("%s %d %s\r\n" %
557556
(self.protocol_version, code, message)).encode(
558557
'latin-1', 'strict'))

Lib/test/test_httpservers.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,19 +1052,6 @@ def test_header_buffering_of_send_response_only(self):
10521052
handler.end_headers()
10531053
self.assertEqual(output.numWrites, 1)
10541054

1055-
def test_send_response_only_rejects_crlf_message(self):
1056-
input = BytesIO(b'GET / HTTP/1.1\r\n\r\n')
1057-
output = AuditableBytesIO()
1058-
handler = SocketlessRequestHandler()
1059-
handler.rfile = input
1060-
handler.wfile = output
1061-
handler.request_version = 'HTTP/1.1'
1062-
1063-
with self.assertRaises(ValueError) as ctx:
1064-
handler.send_response_only(418, 'value\r\nSet-Cookie: custom=true')
1065-
self.assertIn('Invalid header name/value: contains CR or LF',
1066-
str(ctx.exception))
1067-
10681055
def test_header_buffering_of_send_header(self):
10691056

10701057
input = BytesIO(b'GET / HTTP/1.1\r\n\r\n')

Lib/wsgiref/headers.py

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,14 @@ def __init__(self, headers=None):
3333
if type(headers) is not list:
3434
raise TypeError("Headers must be a list of name/value tuples")
3535
self._headers = headers
36-
if __debug__:
37-
for k, v in headers:
38-
self._validate_header_string(k)
39-
self._validate_header_string(v)
4036

4137
def _validate_header_string(self, value):
4238
"""Validate header type and value."""
43-
if type(value) is str:
44-
if '\r' in value or '\n' in value:
45-
raise ValueError('Invalid header name/value: contains CR or LF')
46-
return value
47-
raise AssertionError("Header names/values must be"
48-
" of type str (got {0})".format(repr(value)))
39+
if not isinstance(value, str):
40+
raise AssertionError("Header names/values must be"
41+
" of type str (got {0})".format(repr(value)))
42+
if '\r' in value or '\n' in value:
43+
raise ValueError('Invalid header name/value: contains CR or LF')
4944

5045
def __len__(self):
5146
"""Return the total number of headers, including duplicates."""
@@ -54,17 +49,18 @@ def __len__(self):
5449
def __setitem__(self, name, val):
5550
"""Set the value of a header."""
5651
del self[name]
57-
self._headers.append(
58-
(self._validate_header_string(name),
59-
self._validate_header_string(val)))
52+
self._validate_header_string(name)
53+
self._validate_header_string(val)
54+
self._headers.append((name, val))
6055

6156
def __delitem__(self,name):
6257
"""Delete all occurrences of a header, if present.
6358
6459
Does *not* raise an exception if the header is missing.
6560
"""
66-
name = self._validate_header_string(name.lower())
67-
self._headers[:] = [kv for kv in self._headers if kv[0].lower() != name]
61+
self._headers[:] = [
62+
kv for kv in self._headers if kv[0].lower() != name.lower()
63+
]
6864

6965
def __getitem__(self,name):
7066
"""Get the first header value for 'name'
@@ -90,15 +86,13 @@ def get_all(self, name):
9086
fields deleted and re-inserted are always appended to the header list.
9187
If no fields exist with the given name, returns an empty list.
9288
"""
93-
name = self._validate_header_string(name.lower())
94-
return [kv[1] for kv in self._headers if kv[0].lower()==name]
89+
return [kv[1] for kv in self._headers if kv[0].lower()==name.lower()]
9590

9691

9792
def get(self,name,default=None):
9893
"""Get the first header value for 'name', or return 'default'"""
99-
name = self._validate_header_string(name.lower())
10094
for k,v in self._headers:
101-
if k.lower()==name:
95+
if k.lower()==name.lower():
10296
return v
10397
return default
10498

@@ -151,8 +145,9 @@ def setdefault(self,name,value):
151145
and value 'value'."""
152146
result = self.get(name)
153147
if result is None:
154-
self._headers.append((self._validate_header_string(name),
155-
self._validate_header_string(value)))
148+
self._validate_header_string(name)
149+
self._validate_header_string(value)
150+
self._headers.append((name, value))
156151
return value
157152
else:
158153
return result
@@ -173,15 +168,16 @@ def add_header(self, _name, _value, **_params):
173168
*not* handle '(charset, language, value)' tuples: all values must be
174169
strings or None.
175170
"""
171+
self._validate_header_string(_name)
176172
parts = []
177173
if _value is not None:
178-
_value = self._validate_header_string(_value)
174+
self._validate_header_string(_value)
179175
parts.append(_value)
180176
for k, v in _params.items():
181-
k = self._validate_header_string(k)
177+
self._validate_header_string(k)
182178
if v is None:
183179
parts.append(k.replace('_', '-'))
184180
else:
185-
v = self._validate_header_string(v)
181+
self._validate_header_string(v)
186182
parts.append(_formatparam(k.replace('_', '-'), v))
187-
self._headers.append((self._validate_header_string(_name), "; ".join(parts)))
183+
self._headers.append((_name, "; ".join(parts)))

0 commit comments

Comments
 (0)