Skip to content

Commit fd07b1f

Browse files
committed
perf: Avoid header name normalization if already normalized.
This shaves of another 10% from header parsing overhead for input generated by modern browsers.
1 parent 264b7e4 commit fd07b1f

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

multipart.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -754,10 +754,11 @@ def _on_segment_headerline(self, line: bytes):
754754
raise ParserError("Segment header failed to decode", err)
755755
if not col:
756756
raise ParserError("Malformed segment header")
757-
name = name.strip().title()
757+
if name not in _KNOWN_HEADERS:
758+
name = name.strip().title()
759+
if name not in _KNOWN_HEADERS and not _re_hname.fullmatch(name):
760+
raise ParserError("Invalid segment header name")
758761
value = value.strip()
759-
if not (name in _KNOWN_HEADERS or _re_hname.fullmatch(name)):
760-
raise ParserError("Invalid segment header name")
761762

762763
if name == "Content-Length":
763764
if self._segment_limit >= 0:

0 commit comments

Comments
 (0)