Skip to content

Commit 20739e0

Browse files
committed
Improve exception handling during handshake.
Also refactor tests for Sans-I/O client and server.
1 parent 206624a commit 20739e0

File tree

5 files changed

+799
-616
lines changed

5 files changed

+799
-616
lines changed

src/websockets/client.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,10 @@ def process_response(self, response: Response) -> None:
175175

176176
try:
177177
s_w_accept = headers["Sec-WebSocket-Accept"]
178-
except KeyError as exc:
179-
raise InvalidHeader("Sec-WebSocket-Accept") from exc
180-
except MultipleValuesError as exc:
181-
raise InvalidHeader("Sec-WebSocket-Accept", "multiple values") from exc
178+
except KeyError:
179+
raise InvalidHeader("Sec-WebSocket-Accept") from None
180+
except MultipleValuesError:
181+
raise InvalidHeader("Sec-WebSocket-Accept", "multiple values") from None
182182

183183
if s_w_accept != accept_key(self.key):
184184
raise InvalidHeaderValue("Sec-WebSocket-Accept", s_w_accept)

src/websockets/server.py

+11-11
Original file line numberDiff line numberDiff line change
@@ -253,10 +253,10 @@ def process_request(
253253

254254
try:
255255
key = headers["Sec-WebSocket-Key"]
256-
except KeyError as exc:
257-
raise InvalidHeader("Sec-WebSocket-Key") from exc
258-
except MultipleValuesError as exc:
259-
raise InvalidHeader("Sec-WebSocket-Key", "multiple values") from exc
256+
except KeyError:
257+
raise InvalidHeader("Sec-WebSocket-Key") from None
258+
except MultipleValuesError:
259+
raise InvalidHeader("Sec-WebSocket-Key", "multiple values") from None
260260

261261
try:
262262
raw_key = base64.b64decode(key.encode(), validate=True)
@@ -267,10 +267,10 @@ def process_request(
267267

268268
try:
269269
version = headers["Sec-WebSocket-Version"]
270-
except KeyError as exc:
271-
raise InvalidHeader("Sec-WebSocket-Version") from exc
272-
except MultipleValuesError as exc:
273-
raise InvalidHeader("Sec-WebSocket-Version", "multiple values") from exc
270+
except KeyError:
271+
raise InvalidHeader("Sec-WebSocket-Version") from None
272+
except MultipleValuesError:
273+
raise InvalidHeader("Sec-WebSocket-Version", "multiple values") from None
274274

275275
if version != "13":
276276
raise InvalidHeaderValue("Sec-WebSocket-Version", version)
@@ -308,8 +308,8 @@ def process_origin(self, headers: Headers) -> Origin | None:
308308
# per https://datatracker.ietf.org/doc/html/rfc6454#section-7.3.
309309
try:
310310
origin = headers.get("Origin")
311-
except MultipleValuesError as exc:
312-
raise InvalidHeader("Origin", "multiple values") from exc
311+
except MultipleValuesError:
312+
raise InvalidHeader("Origin", "multiple values") from None
313313
if origin is not None:
314314
origin = cast(Origin, origin)
315315
if self.origins is not None:
@@ -503,7 +503,7 @@ def reject(self, status: StatusLike, text: str) -> Response:
503503
HTTP response to send to the client.
504504
505505
"""
506-
# If a user passes an int instead of a HTTPStatus, fix it automatically.
506+
# If status is an int instead of an HTTPStatus, fix it automatically.
507507
status = http.HTTPStatus(status)
508508
body = text.encode()
509509
headers = Headers(

0 commit comments

Comments
 (0)