@@ -60,11 +60,14 @@ <h2 class="section-title" id="header-classes">Classes</h2>
6060
6161 def __init__(self, status: int, headers: Dict[str, Sequence[str]] = {}, body: str = ""):
6262 self.status: int = status
63- self.raw_headers: List[Tuple[bytes, bytes]] = [
64- (bytes(key, ENCODING), bytes(value[0], ENCODING)) for key, value in headers.items()
65- ]
66- self.raw_headers.append((b"content-length", bytes(str(len(body)), ENCODING)))
6763 self.body: bytes = bytes(body, ENCODING)
64+ self.raw_headers: List[Tuple[bytes, bytes]] = []
65+ for key, values in headers.items():
66+ if key.lower() == "content-length":
67+ continue
68+ for v in values:
69+ self.raw_headers.append((bytes(key, ENCODING), bytes(v, ENCODING)))
70+ self.raw_headers.append((b"content-length", bytes(str(len(self.body)), ENCODING)))
6871
6972 def get_response_start(self) -> Dict[str, Union[str, int, Iterable[Tuple[bytes, bytes]]]]:
7073 return {
@@ -94,11 +97,14 @@ <h3>Instance variables</h3>
9497
9598 def __init__(self, status: int, headers: Dict[str, Sequence[str]] = {}, body: str = ""):
9699 self.status: int = status
97- self.raw_headers: List[Tuple[bytes, bytes]] = [
98- (bytes(key, ENCODING), bytes(value[0], ENCODING)) for key, value in headers.items()
99- ]
100- self.raw_headers.append((b"content-length", bytes(str(len(body)), ENCODING)))
101100 self.body: bytes = bytes(body, ENCODING)
101+ self.raw_headers: List[Tuple[bytes, bytes]] = []
102+ for key, values in headers.items():
103+ if key.lower() == "content-length":
104+ continue
105+ for v in values:
106+ self.raw_headers.append((bytes(key, ENCODING), bytes(v, ENCODING)))
107+ self.raw_headers.append((b"content-length", bytes(str(len(self.body)), ENCODING)))
102108
103109 def get_response_start(self) -> Dict[str, Union[str, int, Iterable[Tuple[bytes, bytes]]]]:
104110 return {
@@ -127,11 +133,14 @@ <h3>Instance variables</h3>
127133
128134 def __init__(self, status: int, headers: Dict[str, Sequence[str]] = {}, body: str = ""):
129135 self.status: int = status
130- self.raw_headers: List[Tuple[bytes, bytes]] = [
131- (bytes(key, ENCODING), bytes(value[0], ENCODING)) for key, value in headers.items()
132- ]
133- self.raw_headers.append((b"content-length", bytes(str(len(body)), ENCODING)))
134136 self.body: bytes = bytes(body, ENCODING)
137+ self.raw_headers: List[Tuple[bytes, bytes]] = []
138+ for key, values in headers.items():
139+ if key.lower() == "content-length":
140+ continue
141+ for v in values:
142+ self.raw_headers.append((bytes(key, ENCODING), bytes(v, ENCODING)))
143+ self.raw_headers.append((b"content-length", bytes(str(len(self.body)), ENCODING)))
135144
136145 def get_response_start(self) -> Dict[str, Union[str, int, Iterable[Tuple[bytes, bytes]]]]:
137146 return {
@@ -160,11 +169,14 @@ <h3>Instance variables</h3>
160169
161170 def __init__(self, status: int, headers: Dict[str, Sequence[str]] = {}, body: str = ""):
162171 self.status: int = status
163- self.raw_headers: List[Tuple[bytes, bytes]] = [
164- (bytes(key, ENCODING), bytes(value[0], ENCODING)) for key, value in headers.items()
165- ]
166- self.raw_headers.append((b"content-length", bytes(str(len(body)), ENCODING)))
167172 self.body: bytes = bytes(body, ENCODING)
173+ self.raw_headers: List[Tuple[bytes, bytes]] = []
174+ for key, values in headers.items():
175+ if key.lower() == "content-length":
176+ continue
177+ for v in values:
178+ self.raw_headers.append((bytes(key, ENCODING), bytes(v, ENCODING)))
179+ self.raw_headers.append((b"content-length", bytes(str(len(self.body)), ENCODING)))
168180
169181 def get_response_start(self) -> Dict[str, Union[str, int, Iterable[Tuple[bytes, bytes]]]]:
170182 return {
0 commit comments