Changeset 214073 in webkit


Ignore:
Timestamp:
Mar 16, 2017 3:15:58 PM (7 years ago)
Author:
achristensen@apple.com
Message:

Don't use an optional for didReceiveSocketStreamData's length
https://bugs.webkit.org/show_bug.cgi?id=169699

Reviewed by Brady Eidson.

Rather than sending a message with an optional length, send a message with a length
and send a different message if the receiving of bytes failed.

No new tests (no behavior change).

  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::didReceiveSocketStreamData):

  • Modules/websockets/WebSocketChannel.h:
  • platform/network/SocketStreamHandleClient.h:
  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:

(WebCore::SocketStreamHandleImpl::readStreamCallback):

  • platform/network/soup/SocketStreamHandleImplSoup.cpp:

(WebCore::SocketStreamHandleImpl::readBytes):

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r214072 r214073  
     12017-03-16  Alex Christensen  <achristensen@webkit.org>
     2
     3        Don't use an optional for didReceiveSocketStreamData's length
     4        https://bugs.webkit.org/show_bug.cgi?id=169699
     5
     6        Reviewed by Brady Eidson.
     7
     8        Rather than sending a message with an optional length, send a message with a length
     9        and send a different message if the receiving of bytes failed.
     10
     11        No new tests (no behavior change).
     12
     13        * Modules/websockets/WebSocketChannel.cpp:
     14        (WebCore::WebSocketChannel::didReceiveSocketStreamData):
     15        * Modules/websockets/WebSocketChannel.h:
     16        * platform/network/SocketStreamHandleClient.h:
     17        * platform/network/cf/SocketStreamHandleImplCFNet.cpp:
     18        (WebCore::SocketStreamHandleImpl::readStreamCallback):
     19        * platform/network/soup/SocketStreamHandleImplSoup.cpp:
     20        (WebCore::SocketStreamHandleImpl::readBytes):
     21
    1222017-03-16  Zalan Bujtas  <zalan@apple.com>
    223
  • trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp

    r211946 r214073  
    308308}
    309309
    310 void WebSocketChannel::didReceiveSocketStreamData(SocketStreamHandle& handle, const char* data, std::optional<size_t> len)
    311 {
    312     if (len)
    313         LOG(Network, "WebSocketChannel %p didReceiveSocketStreamData() Received %zu bytes", this, len.value());
    314     else
    315         LOG(Network, "WebSocketChannel %p didReceiveSocketStreamData() Received no bytes", this);
     310void WebSocketChannel::didReceiveSocketStreamData(SocketStreamHandle& handle, const char* data, size_t length)
     311{
     312    LOG(Network, "WebSocketChannel %p didReceiveSocketStreamData() Received %zu bytes", this, length);
    316313    Ref<WebSocketChannel> protectedThis(*this); // The client can close the channel, potentially removing the last reference.
    317314    ASSERT(&handle == m_handle);
     
    319316        return;
    320317    }
    321     if (!len || !len.value()) {
     318    if (!length) {
    322319        handle.disconnect();
    323320        return;
     
    330327    if (m_shouldDiscardReceivedData)
    331328        return;
    332     if (!appendToBuffer(data, len.value())) {
     329    if (!appendToBuffer(data, length)) {
    333330        m_shouldDiscardReceivedData = true;
    334331        fail("Ran out of memory while receiving WebSocket data.");
     
    339336            break;
    340337    }
     338}
     339
     340void WebSocketChannel::didFailToReceiveSocketStreamData(SocketStreamHandle& handle)
     341{
     342    handle.disconnect();
    341343}
    342344
  • trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h

    r208985 r214073  
    8383    void didOpenSocketStream(SocketStreamHandle&) final;
    8484    void didCloseSocketStream(SocketStreamHandle&) final;
    85     void didReceiveSocketStreamData(SocketStreamHandle&, const char*, std::optional<size_t>) final;
     85    void didReceiveSocketStreamData(SocketStreamHandle&, const char*, size_t) final;
     86    void didFailToReceiveSocketStreamData(SocketStreamHandle&) final;
    8687    void didUpdateBufferedAmount(SocketStreamHandle&, size_t bufferedAmount) final;
    8788    void didFailSocketStream(SocketStreamHandle&, const SocketStreamError&) final;
  • trunk/Source/WebCore/platform/network/SocketStreamHandleClient.h

    r208985 r214073  
    4545    virtual void didOpenSocketStream(SocketStreamHandle&) = 0;
    4646    virtual void didCloseSocketStream(SocketStreamHandle&) = 0;
    47     virtual void didReceiveSocketStreamData(SocketStreamHandle&, const char* data, std::optional<size_t> length) = 0;
     47    virtual void didReceiveSocketStreamData(SocketStreamHandle&, const char* data, size_t length) = 0;
     48    virtual void didFailToReceiveSocketStreamData(SocketStreamHandle&) = 0;
    4849    virtual void didUpdateBufferedAmount(SocketStreamHandle&, size_t bufferedAmount) = 0;
    4950    virtual void didFailSocketStream(SocketStreamHandle&, const SocketStreamError&) = 0;
  • trunk/Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp

    r211751 r214073  
    538538            return;
    539539
    540         std::optional<size_t> optionalLength;
    541         if (length != -1)
    542             optionalLength = length;
    543        
    544         m_client.didReceiveSocketStreamData(*this, reinterpret_cast<const char*>(ptr), optionalLength);
     540        if (length == -1)
     541            m_client.didFailToReceiveSocketStreamData(*this);
     542        else
     543            m_client.didReceiveSocketStreamData(*this, reinterpret_cast<const char*>(ptr), length);
    545544
    546545        return;
  • trunk/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp

    r212561 r214073  
    146146
    147147    // The client can close the handle, potentially removing the last reference.
    148     RefPtr<SocketStreamHandle> protectedThis(this);
    149     std::optional<size_t> optionalLength;
    150     if (bytesRead != -1)
    151         optionalLength = static_cast<size_t>(bytesRead);
    152     m_client.didReceiveSocketStreamData(*this, m_readBuffer.get(), optionalLength);
     148    Ref<SocketStreamHandle> protectedThis(*this);
     149    if (bytesRead == -1)
     150        m_client.didFailToReceiveSocketStreamData();
     151    else
     152        m_client.didReceiveSocketStreamData(*this, m_readBuffer.get(), static_cast<size_t>(bytesRead));
     153
    153154    if (m_inputStream) {
    154155        g_input_stream_read_async(m_inputStream.get(), m_readBuffer.get(), READ_BUFFER_SIZE, G_PRIORITY_DEFAULT, m_cancellable.get(),
Note: See TracChangeset for help on using the changeset viewer.