File tree 2 files changed +6
-21
lines changed
2 files changed +6
-21
lines changed Original file line number Diff line number Diff line change @@ -159,12 +159,10 @@ def parse(
159
159
raise NotImplementedError ("transfer codings aren't supported" )
160
160
161
161
if "Content-Length" in headers :
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
- )
162
+ # Some devices send a Content-Length header with a value of 0.
163
+ # This raises ValueError if Content-Length isn't an integer too.
164
+ if int (headers ["Content-Length" ]) != 0 :
165
+ raise ValueError ("unsupported request body" )
168
166
169
167
return cls (path , headers )
170
168
Original file line number Diff line number Diff line change @@ -83,25 +83,12 @@ def test_parse_body(self):
83
83
next (self .parse ())
84
84
self .assertEqual (
85
85
str (raised .exception ),
86
- "unsupported request body as 'Content-Length' is non-zero: 3 " ,
86
+ "unsupported request body" ,
87
87
)
88
88
89
89
def test_parse_body_content_length_zero (self ):
90
- # Example from the protocol overview in RFC 6455
91
- self .reader .feed_data (
92
- b"GET /chat HTTP/1.1\r \n "
93
- b"Host: server.example.com\r \n "
94
- b"Upgrade: websocket\r \n "
95
- b"Connection: Upgrade\r \n "
96
- b"Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r \n "
97
- b"Origin: http://example.com\r \n "
98
- b"Sec-WebSocket-Protocol: chat, superchat\r \n "
99
- b"Sec-WebSocket-Version: 13\r \n "
100
- b"Content-Length: 0\r \n "
101
- b"\r \n "
102
- )
90
+ self .reader .feed_data (b"GET / HTTP/1.1\r \n Content-Length: 0\r \n \r \n " )
103
91
request = self .assertGeneratorReturns (self .parse ())
104
- self .assertEqual (request .path , "/chat" )
105
92
self .assertEqual (request .headers ["Content-Length" ], "0" )
106
93
107
94
def test_parse_body_with_transfer_encoding (self ):
You can’t perform that action at this time.
0 commit comments