Changeset 252847 in webkit


Ignore:
Timestamp:
Nov 25, 2019 12:50:13 AM (4 years ago)
Author:
youenn@apple.com
Message:

REGRESSION (Safari 13): WebSocket payload is truncated when x-webkit-deflate-frame is used
https://bugs.webkit.org/show_bug.cgi?id=202401
<rdar://problem/55922632>

Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/websocket/tests/hybi/deflate-extension.html

  • Modules/websockets/WebSocketDeflater.cpp:

(WebCore::WebSocketDeflater::finish):
Make sure to continue calling deflate until all output data is flushed.

LayoutTests:

  • http/tests/websocket/tests/hybi/deflate-extension-expected.txt: Added.
  • http/tests/websocket/tests/hybi/deflate-extension.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r252846 r252847  
     12019-11-25  Youenn Fablet  <youenn@apple.com>
     2
     3        REGRESSION (Safari 13): WebSocket payload is truncated when x-webkit-deflate-frame is used
     4        https://bugs.webkit.org/show_bug.cgi?id=202401
     5        <rdar://problem/55922632>
     6
     7        Reviewed by Alex Christensen.
     8
     9        * http/tests/websocket/tests/hybi/deflate-extension-expected.txt: Added.
     10        * http/tests/websocket/tests/hybi/deflate-extension.html: Added.
     11
    1122019-11-25  youenn fablet  <youenn@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r252841 r252847  
     12019-11-25  Youenn Fablet  <youenn@apple.com>
     2
     3        REGRESSION (Safari 13): WebSocket payload is truncated when x-webkit-deflate-frame is used
     4        https://bugs.webkit.org/show_bug.cgi?id=202401
     5        <rdar://problem/55922632>
     6
     7        Reviewed by Alex Christensen.
     8
     9        Test: http/tests/websocket/tests/hybi/deflate-extension.html
     10
     11        * Modules/websockets/WebSocketDeflater.cpp:
     12        (WebCore::WebSocketDeflater::finish):
     13        Make sure to continue calling deflate until all output data is flushed.
     14
    1152019-11-24  Sunny He  <sunny_he@apple.com>
    216
  • trunk/Source/WebCore/Modules/websockets/WebSocketDeflater.cpp

    r248846 r252847  
    102102        setStreamParameter(m_stream.get(), 0, 0, m_buffer.data() + writePosition, availableCapacity);
    103103        int result = deflate(m_stream.get(), Z_SYNC_FLUSH);
    104         m_buffer.shrink(writePosition + availableCapacity - m_stream->avail_out);
    105         if (result == Z_OK)
    106             break;
    107         if (result != Z_BUF_ERROR)
    108             return false;
     104        if (m_stream->avail_out) {
     105            m_buffer.shrink(writePosition + availableCapacity - m_stream->avail_out);
     106            if (result == Z_OK)
     107                break;
     108            if (result != Z_BUF_ERROR)
     109                return false;
     110        }
    109111    }
    110112    // Remove 4 octets from the tail as the specification requires.
Note: See TracChangeset for help on using the changeset viewer.