@@ -119,7 +119,7 @@ def receive_data(self, data: Optional[bytes]) -> None:
119119
120120 :param bytes data: Data received from the WebSocket peer.
121121 """
122- self ._h11_connection .receive_data (data )
122+ self ._h11_connection .receive_data (data or b"" )
123123 while True :
124124 try :
125125 event = self ._h11_connection .next_event ()
@@ -141,7 +141,7 @@ def receive_data(self, data: Optional[bytes]) -> None:
141141 else :
142142 self ._events .append (
143143 RejectConnection (
144- headers = event .headers ,
144+ headers = list ( event .headers ) ,
145145 status_code = event .status_code ,
146146 has_body = False ,
147147 )
@@ -151,7 +151,7 @@ def receive_data(self, data: Optional[bytes]) -> None:
151151 self ._state = ConnectionState .REJECTING
152152 self ._events .append (
153153 RejectConnection (
154- headers = event .headers ,
154+ headers = list ( event .headers ) ,
155155 status_code = event .status_code ,
156156 has_body = True ,
157157 )
@@ -286,36 +286,36 @@ def _accept(self, event: AcceptConnection) -> bytes:
286286 event .extensions ,
287287 )
288288 self ._state = ConnectionState .OPEN
289- return self ._h11_connection .send (response ) # type: ignore[no-any-return]
289+ return self ._h11_connection .send (response ) or b""
290290
291291 def _reject (self , event : RejectConnection ) -> bytes :
292292 if self .state != ConnectionState .CONNECTING :
293293 raise LocalProtocolError (
294294 "Connection cannot be rejected in state %s" % self .state
295295 )
296296
297- headers = event .headers
297+ headers = list ( event .headers )
298298 if not event .has_body :
299299 headers .append ((b"content-length" , b"0" ))
300300 response = h11 .Response (status_code = event .status_code , headers = headers )
301- data = self ._h11_connection .send (response )
301+ data = self ._h11_connection .send (response ) or b""
302302 self ._state = ConnectionState .REJECTING
303303 if not event .has_body :
304- data += self ._h11_connection .send (h11 .EndOfMessage ())
304+ data += self ._h11_connection .send (h11 .EndOfMessage ()) or b""
305305 self ._state = ConnectionState .CLOSED
306- return data # type: ignore[no-any-return]
306+ return data
307307
308308 def _send_reject_data (self , event : RejectData ) -> bytes :
309309 if self .state != ConnectionState .REJECTING :
310310 raise LocalProtocolError (
311311 f"Cannot send rejection data in state { self .state } "
312312 )
313313
314- data = self ._h11_connection .send (h11 .Data (data = event .data ))
314+ data = self ._h11_connection .send (h11 .Data (data = event .data )) or b""
315315 if event .body_finished :
316- data += self ._h11_connection .send (h11 .EndOfMessage ())
316+ data += self ._h11_connection .send (h11 .EndOfMessage ()) or b""
317317 self ._state = ConnectionState .CLOSED
318- return data # type: ignore[no-any-return]
318+ return data
319319
320320 # Client mode methods
321321
@@ -360,7 +360,7 @@ def _initiate_connection(self, request: Request) -> bytes:
360360 target = request .target .encode ("ascii" ),
361361 headers = headers + request .extra_headers ,
362362 )
363- return self ._h11_connection .send (upgrade ) # type: ignore[no-any-return]
363+ return self ._h11_connection .send (upgrade ) or b""
364364
365365 def _establish_client_connection (
366366 self , event : h11 .InformationalResponse
@@ -387,7 +387,7 @@ def _establish_client_connection(
387387 accept = value
388388 continue # Skip appending to headers
389389 elif name == b"sec-websocket-protocol" :
390- subprotocol = value
390+ subprotocol = value . decode ( "ascii" )
391391 continue # Skip appending to headers
392392 elif name == b"upgrade" :
393393 upgrade = value
@@ -408,7 +408,6 @@ def _establish_client_connection(
408408 if accept != accept_token :
409409 raise RemoteProtocolError ("Bad accept token" , event_hint = RejectConnection ())
410410 if subprotocol is not None :
411- subprotocol = subprotocol .decode ("ascii" )
412411 if subprotocol not in self ._initiating_request .subprotocols :
413412 raise RemoteProtocolError (
414413 f"unrecognized subprotocol { subprotocol } " ,
0 commit comments