Index: LayoutTests/http/tests/websocket/tests/hybi/permessage-deflate-manual_wsh.py |
diff --git a/LayoutTests/http/tests/websocket/tests/hybi/permessage-deflate-manual_wsh.py b/LayoutTests/http/tests/websocket/tests/hybi/permessage-deflate-manual_wsh.py |
deleted file mode 100644 |
index 7d09be482c9c943b445356645f88f7565e250556..0000000000000000000000000000000000000000 |
--- a/LayoutTests/http/tests/websocket/tests/hybi/permessage-deflate-manual_wsh.py |
+++ /dev/null |
@@ -1,122 +0,0 @@ |
-# Copyright 2013, Google Inc. All rights reserved. |
-# |
-# Redistribution and use in source and binary forms, with or without |
-# modification, are permitted provided that the following conditions are |
-# met: |
-# |
-# * Redistributions of source code must retain the above copyright |
-# notice, this list of conditions and the following disclaimer. |
-# * Redistributions in binary form must reproduce the above |
-# copyright notice, this list of conditions and the following disclaimer |
-# in the documentation and/or other materials provided with the |
-# distribution. |
-# * Neither the name of Google Inc. nor the names of its |
-# contributors may be used to endorse or promote products derived from |
-# this software without specific prior written permission. |
-# |
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- |
- |
-import urlparse |
-import zlib |
-from mod_pywebsocket import common, util |
-from mod_pywebsocket.extensions import PerMessageDeflateExtensionProcessor |
-from mod_pywebsocket.extensions import ExtensionProcessorInterface |
-from mod_pywebsocket.common import ExtensionParameter |
- |
- |
-_GOODBYE_MESSAGE = u'Goodbye' |
-_ENABLE_MESSAGE = u'EnableCompression' |
-_DISABLE_MESSAGE = u'DisableCompression' |
-_bfinal = False |
-_client_max_window_bits = 15 |
- |
- |
-def _get_permessage_deflate_extension_processor(request): |
- for extension_processor in request.ws_extension_processors: |
- if isinstance(extension_processor, |
- PerMessageDeflateExtensionProcessor): |
- return extension_processor |
- return None |
- |
- |
-def web_socket_do_extra_handshake(request): |
- global _bfinal |
- global _client_max_window_bits |
- processor = _get_permessage_deflate_extension_processor(request) |
- # Remove extension processors other than |
- # PerMessageDeflateExtensionProcessor to avoid conflict. |
- request.ws_extension_processors = [processor] |
- if not processor: |
- return |
- r = request.ws_resource.split('?', 1) |
- if len(r) == 1: |
- return |
- parameters = urlparse.parse_qs(r[1], keep_blank_values=True) |
- if 'client_max_window_bits' in parameters: |
- window_bits = int(parameters['client_max_window_bits'][0]) |
- processor.set_client_max_window_bits(window_bits) |
- _client_max_window_bits = window_bits |
- if 'client_no_context_takeover' in parameters: |
- processor.set_client_no_context_takeover(True) |
- if 'set_bfinal' in parameters: |
- _bfinal = True |
- |
- |
-def receive(request): |
- stream = request.ws_stream |
- possibly_compressed_body = b'' |
- compress = False |
- while True: |
- frame = stream._receive_frame_as_frame_object() |
- if frame.opcode == common.OPCODE_CLOSE: |
- message = stream._get_message_from_frame(frame) |
- stream._process_close_message(message) |
- return (False, None) |
- compress = compress or frame.rsv1 |
- possibly_compressed_body += frame.payload |
- if frame.fin: |
- break |
- if compress: |
- return (compress, possibly_compressed_body + b'\x00\x00\xff\xff') |
- else: |
- return (compress, possibly_compressed_body) |
- |
- |
-def web_socket_transfer_data(request): |
- processor = _get_permessage_deflate_extension_processor(request) |
- processor.set_bfinal(_bfinal) |
- inflater = util._Inflater(_client_max_window_bits) |
- while True: |
- compress, possibly_compressed_body = receive(request) |
- body = None |
- if possibly_compressed_body is None: |
- return |
- if compress: |
- inflater.append(possibly_compressed_body) |
- body = inflater.decompress(-1) |
- else: |
- body = possibly_compressed_body |
- |
- text = body.decode('utf-8') |
- if processor: |
- if text == _ENABLE_MESSAGE: |
- processor.enable_outgoing_compression() |
- elif text == _DISABLE_MESSAGE: |
- processor.disable_outgoing_compression() |
- request.ws_stream.send_message(text, binary=False) |
- if text == _GOODBYE_MESSAGE: |
- return |
- |
- |
-# vi:sts=4 sw=4 et |