Changeset 112826 in webkit


Ignore:
Timestamp:
Apr 1, 2012 7:53:32 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

[WebSocket]Reserved bits test case should cover both extension and no-extension scenarios
https://bugs.webkit.org/show_bug.cgi?id=82100

Patch by Li Yin <li.yin@intel.com> on 2012-04-01
Reviewed by Kent Tamura.

Source/WebCore:

When it had no negotiated deflate-frame extension, if browser received the frame with
setting compressed bit, it should fail the connection, and it should cover both
enabling ZLIB port and disabling ZLIB port.

Test: http/tests/websocket/tests/hybi/reserved-bits.html

  • Modules/websockets/WebSocketDeflateFramer.cpp:

(WebCore::WebSocketDeflateFramer::inflate):

LayoutTests:

Solve the problem that Qt Webkit failed when runing the reserved-bits.html
Support both enabled ZLIB and disabled ZLIB scenarios.

  • http/tests/websocket/tests/hybi/reserved-bits-expected.txt:
  • http/tests/websocket/tests/hybi/reserved-bits_wsh.py:

(_get_deflate_frame_extension_processor):
(web_socket_do_extra_handshake):

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r112825 r112826  
     12012-04-01  Li Yin  <li.yin@intel.com>
     2
     3        [WebSocket]Reserved bits test case should cover both extension and no-extension scenarios
     4        https://bugs.webkit.org/show_bug.cgi?id=82100
     5
     6        Reviewed by Kent Tamura.
     7
     8        Solve the problem that Qt Webkit failed when runing the reserved-bits.html
     9        Support both enabled ZLIB and disabled ZLIB scenarios.
     10
     11        * http/tests/websocket/tests/hybi/reserved-bits-expected.txt:
     12        * http/tests/websocket/tests/hybi/reserved-bits_wsh.py:
     13        (_get_deflate_frame_extension_processor):
     14        (web_socket_do_extra_handshake):
     15
    1162012-04-01  Adam Barth  <abarth@webkit.org>
    217
  • trunk/LayoutTests/http/tests/websocket/tests/hybi/reserved-bits-expected.txt

    r112488 r112826  
    1 CONSOLE MESSAGE: Received unexpected compressed frame
     1CONSOLE MESSAGE: Compressed bit must be 0 if no negotiated deflate-frame extension
    22CONSOLE MESSAGE: One or more reserved bits are on: reserved2 = 1, reserved3 = 0
    33CONSOLE MESSAGE: One or more reserved bits are on: reserved2 = 0, reserved3 = 1
  • trunk/LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py

    r112488 r112826  
    22from mod_pywebsocket import common
    33from mod_pywebsocket import stream
    4 
     4from mod_pywebsocket.extensions import DeflateFrameExtensionProcessor
    55
    66bit = 0
     7
     8def _get_deflate_frame_extension_processor(request):
     9    for extension_processor in request.ws_extension_processors:
     10        if isinstance(extension_processor, DeflateFrameExtensionProcessor):
     11            return extension_processor
     12    return None
     13
    714
    815def web_socket_do_extra_handshake(request):
     
    1724    if compressed == "false":
    1825        request.ws_extension_processors = [] # using no extension response
     26    else:
     27        processor = _get_deflate_frame_extension_processor(request)
     28        if not processor:
     29            request.ws_extension_processors = [] # using no extension response
    1930
    2031
  • trunk/Source/WebCore/ChangeLog

    r112825 r112826  
     12012-04-01  Li Yin  <li.yin@intel.com>
     2
     3        [WebSocket]Reserved bits test case should cover both extension and no-extension scenarios
     4        https://bugs.webkit.org/show_bug.cgi?id=82100
     5
     6        Reviewed by Kent Tamura.
     7
     8        When it had no negotiated deflate-frame extension, if browser received the frame with
     9        setting compressed bit, it should fail the connection, and it should cover both
     10        enabling ZLIB port and disabling ZLIB port.
     11
     12        Test:  http/tests/websocket/tests/hybi/reserved-bits.html
     13
     14        * Modules/websockets/WebSocketDeflateFramer.cpp:
     15        (WebCore::WebSocketDeflateFramer::inflate):
     16
    1172012-04-01  Adam Barth  <abarth@webkit.org>
    218
  • trunk/Source/WebCore/Modules/websockets/WebSocketDeflateFramer.cpp

    r109538 r112826  
    218218PassOwnPtr<InflateResultHolder> WebSocketDeflateFramer::inflate(WebSocketFrame& frame)
    219219{
    220 #if USE(ZLIB)
    221220    OwnPtr<InflateResultHolder> result = InflateResultHolder::create(this);
     221    if (!enabled() && frame.compress) {
     222        result->fail("Compressed bit must be 0 if no negotiated deflate-frame extension");
     223        return result.release();
     224    }
     225#if USE(ZLIB)
    222226    if (!frame.compress)
    223227        return result.release();
    224     if (!enabled() || !WebSocketFrame::isNonControlOpCode(frame.opCode)) {
     228    if (!WebSocketFrame::isNonControlOpCode(frame.opCode)) {
    225229        result->fail("Received unexpected compressed frame");
    226230        return result.release();
     
    235239    return result.release();
    236240#else
    237     return InflateResultHolder::create(this);
     241    return result.release();
    238242#endif
    239243}
Note: See TracChangeset for help on using the changeset viewer.