Changeset 52234 in webkit
- Timestamp:
- Dec 16, 2009 10:19:05 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r52233 r52234 1 2009-12-16 Fumitoshi Ukai <ukai@chromium.org> 2 3 Reviewed by Alexey Proskuryakov. 4 5 Fix flakiness in WebSocket handshake console message. 6 https://bugs.webkit.org/show_bug.cgi?id=32598 7 8 In chromium, LayoutTests/websocket/tests/handshake-error.html is 9 flaky, because it outputs the following console message several times: 10 CONSOLE MESSAGE: line 0: Unexpected response code:101 11 Update m_mode in WebSocketHandshake correctly: Once it finds 12 error in handshake message, set m_mode to Failed and don't try 13 reading handshake message again. If handshake message is not yet 14 fully received, set m_mode to Incomplete, so next didReceiveData() 15 will try to check handshake message again. 16 17 * websockets/WebSocketChannel.cpp: 18 (WebCore::WebSocketChannel::didReceiveData): 19 * websockets/WebSocketHandshake.cpp: 20 (WebCore::WebSocketHandshake::readServerHandshake): 21 1 22 2009-12-16 Jon Honeycutt <jhoneycutt@apple.com> 2 23 -
trunk/WebCore/websockets/WebSocketChannel.cpp
r51979 r52234 151 151 return; 152 152 } 153 if (m_handshake.mode() != WebSocketHandshake::Connected) {153 if (m_handshake.mode() == WebSocketHandshake::Incomplete) { 154 154 int headerLength = m_handshake.readServerHandshake(m_buffer, m_bufferSize); 155 155 if (headerLength <= 0) … … 180 180 LOG(Network, "remaining in read buf %ul", m_bufferSize); 181 181 } 182 if (m_handshake.mode() != WebSocketHandshake::Connected) 183 return; 182 184 183 185 const char* nextFrame = m_buffer; -
trunk/WebCore/websockets/WebSocketHandshake.cpp
r51979 r52234 221 221 } 222 222 if (code.isEmpty()) { 223 m_mode = Failed; 223 224 m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "No response code found: " + String(header, len), 0, clientOrigin()); 224 225 return len; … … 226 227 LOG(Network, "response code: %s", code.utf8().data()); 227 228 if (code == "401") { 229 m_mode = Failed; 228 230 m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Authentication required, but not implemented yet.", 0, clientOrigin()); 229 231 return len; 230 232 } else { 233 m_mode = Failed; 231 234 m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected response code:" + code, 0, clientOrigin()); 232 235 return len; … … 238 241 if (m_mode == Normal) { 239 242 size_t headerSize = end - p; 240 if (headerSize < sizeof(webSocketUpgradeHeader) - 1) 243 if (headerSize < sizeof(webSocketUpgradeHeader) - 1) { 244 m_mode = Incomplete; 241 245 return 0; 246 } 242 247 if (memcmp(p, webSocketUpgradeHeader, sizeof(webSocketUpgradeHeader) - 1)) { 248 m_mode = Failed; 243 249 m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Bad Upgrade header: " + String(p, end - p), 0, clientOrigin()); 244 250 return p - header + sizeof(webSocketUpgradeHeader) - 1; … … 247 253 248 254 headerSize = end - p; 249 if (headerSize < sizeof(webSocketConnectionHeader) - 1) 255 if (headerSize < sizeof(webSocketConnectionHeader) - 1) { 256 m_mode = Incomplete; 250 257 return -1; 258 } 251 259 if (memcmp(p, webSocketConnectionHeader, sizeof(webSocketConnectionHeader) - 1)) { 260 m_mode = Failed; 252 261 m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Bad Connection header: " + String(p, end - p), 0, clientOrigin()); 253 262 return p - header + sizeof(webSocketConnectionHeader) - 1; … … 258 267 if (!strnstr(p, "\r\n\r\n", end - p)) { 259 268 // Just hasn't been received fully yet. 269 m_mode = Incomplete; 260 270 return -1; 261 271 }
Note: See TracChangeset
for help on using the changeset viewer.