Changeset 214073 in webkit
- Timestamp:
- Mar 16, 2017 3:15:58 PM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r214072 r214073 1 2017-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 1 22 2017-03-16 Zalan Bujtas <zalan@apple.com> 2 23 -
trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp
r211946 r214073 308 308 } 309 309 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); 310 void WebSocketChannel::didReceiveSocketStreamData(SocketStreamHandle& handle, const char* data, size_t length) 311 { 312 LOG(Network, "WebSocketChannel %p didReceiveSocketStreamData() Received %zu bytes", this, length); 316 313 Ref<WebSocketChannel> protectedThis(*this); // The client can close the channel, potentially removing the last reference. 317 314 ASSERT(&handle == m_handle); … … 319 316 return; 320 317 } 321 if (!len || !len.value()) {318 if (!length) { 322 319 handle.disconnect(); 323 320 return; … … 330 327 if (m_shouldDiscardReceivedData) 331 328 return; 332 if (!appendToBuffer(data, len .value())) {329 if (!appendToBuffer(data, length)) { 333 330 m_shouldDiscardReceivedData = true; 334 331 fail("Ran out of memory while receiving WebSocket data."); … … 339 336 break; 340 337 } 338 } 339 340 void WebSocketChannel::didFailToReceiveSocketStreamData(SocketStreamHandle& handle) 341 { 342 handle.disconnect(); 341 343 } 342 344 -
trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h
r208985 r214073 83 83 void didOpenSocketStream(SocketStreamHandle&) final; 84 84 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; 86 87 void didUpdateBufferedAmount(SocketStreamHandle&, size_t bufferedAmount) final; 87 88 void didFailSocketStream(SocketStreamHandle&, const SocketStreamError&) final; -
trunk/Source/WebCore/platform/network/SocketStreamHandleClient.h
r208985 r214073 45 45 virtual void didOpenSocketStream(SocketStreamHandle&) = 0; 46 46 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; 48 49 virtual void didUpdateBufferedAmount(SocketStreamHandle&, size_t bufferedAmount) = 0; 49 50 virtual void didFailSocketStream(SocketStreamHandle&, const SocketStreamError&) = 0; -
trunk/Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp
r211751 r214073 538 538 return; 539 539 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); 545 544 546 545 return; -
trunk/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp
r212561 r214073 146 146 147 147 // 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 153 154 if (m_inputStream) { 154 155 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.