Bug 1137008 - Implement missing parameters of WebSocket permessage compression extension - test, r=jduell

This commit is contained in:
Michal Novotny 2015-07-31 07:16:30 +02:00
parent 23e4c1d4a3
commit 37d2e845d7
3 changed files with 28 additions and 1 deletions

View File

@ -0,0 +1,23 @@
from mod_pywebsocket import msgutil
from mod_pywebsocket import common
def web_socket_do_extra_handshake(request):
deflate_found = False
if request.ws_extension_processors is not None:
for extension_processor in request.ws_extension_processors:
if extension_processor.name() == "deflate":
extension_processor.set_client_no_context_takeover(True)
deflate_found = True
if deflate_found is False:
raise ValueError('deflate extension processor not found')
def web_socket_transfer_data(request):
while True:
rcvd = msgutil.receive_message(request)
opcode = request.ws_stream.get_last_received_opcode()
if (opcode == common.OPCODE_BINARY):
msgutil.send_message(request, rcvd, binary=True)
elif (opcode == common.OPCODE_TEXT):
msgutil.send_message(request, rcvd)

View File

@ -192,6 +192,7 @@ support-files =
file_websocket_permessage_deflate_wsh.py
file_websocket_permessage_deflate_disabled_wsh.py
file_websocket_permessage_deflate_rejected_wsh.py
file_websocket_permessage_deflate_params_wsh.py
file_websocket_wsh.py
file_x-frame-options_main.html
file_x-frame-options_page.sjs

View File

@ -25,7 +25,10 @@ tests = [
// disable PMCE
[ false, false, "ws://mochi.test:8888/tests/dom/base/test/file_websocket_permessage_deflate_disabled" ],
// server rejects offered PMCE
[ true, false, "ws://mochi.test:8888/tests/dom/base/test/file_websocket_permessage_deflate_rejected" ] ]
[ true, false, "ws://mochi.test:8888/tests/dom/base/test/file_websocket_permessage_deflate_rejected" ],
// server returns parameters in the handshake
[ true, true, "ws://mochi.test:8888/tests/dom/base/test/file_websocket_permessage_deflate_params" ]
]
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));