Skip to content

Commit 5482e10

Browse files
fix: allow 'Content-Length' = "0"
Shelly devices send a 'Content-Length' header with a value of "0". Allow this as this also means there is not a request body. In addition give a bit more detail in the error message. Closes: #1616
1 parent bb78c20 commit 5482e10

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/websockets/http11.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,12 @@ def parse(
159159
raise NotImplementedError("transfer codings aren't supported")
160160

161161
if "Content-Length" in headers:
162-
raise ValueError("unsupported request body")
162+
content_length = headers["Content-Length"]
163+
if content_length != "0":
164+
raise ValueError(
165+
f"unsupported request body as 'Content-Length' is "
166+
f"non-zero: {content_length}"
167+
)
163168

164169
return cls(path, headers)
165170

tests/test_http11.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def test_parse_body(self):
8383
next(self.parse())
8484
self.assertEqual(
8585
str(raised.exception),
86-
"unsupported request body",
86+
"unsupported request body as 'Content-Length' is non-zero: 3",
8787
)
8888

8989
def test_parse_body_with_transfer_encoding(self):

0 commit comments

Comments
 (0)