tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

file_websocket_permessage_deflate_wsh.py (787B)


      1 from mod_pywebsocket import common, msgutil
      2 
      3 
      4 def web_socket_do_extra_handshake(request):
      5    pmce_offered = False
      6 
      7    if request.ws_requested_extensions is not None:
      8        for extension_request in request.ws_requested_extensions:
      9            if extension_request.name() == "permessage-deflate":
     10                pmce_offered = True
     11 
     12    if pmce_offered is False:
     13        raise ValueError("permessage-deflate not offered")
     14 
     15 
     16 def web_socket_transfer_data(request):
     17    while True:
     18        rcvd = msgutil.receive_message(request)
     19        opcode = request.ws_stream.get_last_received_opcode()
     20        if opcode == common.OPCODE_BINARY:
     21            msgutil.send_message(request, rcvd, binary=True)
     22        elif opcode == common.OPCODE_TEXT:
     23            msgutil.send_message(request, rcvd)