[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.17-1283-gcf603cf
ukai at chromium.org
ukai at chromium.org
Tue Jan 5 23:51:38 UTC 2010
The following commit has been merged in the webkit-1.1 branch:
commit c1e56fe8bf7327652db6bc565842c4692de595a2
Author: ukai at chromium.org <ukai at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Thu Dec 17 06:19:05 2009 +0000
2009-12-16 Fumitoshi Ukai <ukai at chromium.org>
Reviewed by Alexey Proskuryakov.
Fix flakiness in WebSocket handshake console message.
https://bugs.webkit.org/show_bug.cgi?id=32598
In chromium, LayoutTests/websocket/tests/handshake-error.html is
flaky, because it outputs the following console message several times:
CONSOLE MESSAGE: line 0: Unexpected response code:101
Update m_mode in WebSocketHandshake correctly: Once it finds
error in handshake message, set m_mode to Failed and don't try
reading handshake message again. If handshake message is not yet
fully received, set m_mode to Incomplete, so next didReceiveData()
will try to check handshake message again.
* websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::didReceiveData):
* websockets/WebSocketHandshake.cpp:
(WebCore::WebSocketHandshake::readServerHandshake):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52234 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index b068c87..8e5fc9c 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,24 @@
+2009-12-16 Fumitoshi Ukai <ukai at chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Fix flakiness in WebSocket handshake console message.
+ https://bugs.webkit.org/show_bug.cgi?id=32598
+
+ In chromium, LayoutTests/websocket/tests/handshake-error.html is
+ flaky, because it outputs the following console message several times:
+ CONSOLE MESSAGE: line 0: Unexpected response code:101
+ Update m_mode in WebSocketHandshake correctly: Once it finds
+ error in handshake message, set m_mode to Failed and don't try
+ reading handshake message again. If handshake message is not yet
+ fully received, set m_mode to Incomplete, so next didReceiveData()
+ will try to check handshake message again.
+
+ * websockets/WebSocketChannel.cpp:
+ (WebCore::WebSocketChannel::didReceiveData):
+ * websockets/WebSocketHandshake.cpp:
+ (WebCore::WebSocketHandshake::readServerHandshake):
+
2009-12-16 Jon Honeycutt <jhoneycutt at apple.com>
MSAA: Accessibility role of text nodes is wrong
diff --git a/WebCore/websockets/WebSocketChannel.cpp b/WebCore/websockets/WebSocketChannel.cpp
index 07b63d1..5c0f4c3 100644
--- a/WebCore/websockets/WebSocketChannel.cpp
+++ b/WebCore/websockets/WebSocketChannel.cpp
@@ -150,7 +150,7 @@ void WebSocketChannel::didReceiveData(SocketStreamHandle* handle, const char* da
handle->close();
return;
}
- if (m_handshake.mode() != WebSocketHandshake::Connected) {
+ if (m_handshake.mode() == WebSocketHandshake::Incomplete) {
int headerLength = m_handshake.readServerHandshake(m_buffer, m_bufferSize);
if (headerLength <= 0)
return;
@@ -179,6 +179,8 @@ void WebSocketChannel::didReceiveData(SocketStreamHandle* handle, const char* da
return;
LOG(Network, "remaining in read buf %ul", m_bufferSize);
}
+ if (m_handshake.mode() != WebSocketHandshake::Connected)
+ return;
const char* nextFrame = m_buffer;
const char* p = m_buffer;
diff --git a/WebCore/websockets/WebSocketHandshake.cpp b/WebCore/websockets/WebSocketHandshake.cpp
index c21d1d7..a568c2b 100644
--- a/WebCore/websockets/WebSocketHandshake.cpp
+++ b/WebCore/websockets/WebSocketHandshake.cpp
@@ -220,14 +220,17 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
return -1;
}
if (code.isEmpty()) {
+ m_mode = Failed;
m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "No response code found: " + String(header, len), 0, clientOrigin());
return len;
}
LOG(Network, "response code: %s", code.utf8().data());
if (code == "401") {
+ m_mode = Failed;
m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Authentication required, but not implemented yet.", 0, clientOrigin());
return len;
} else {
+ m_mode = Failed;
m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected response code:" + code, 0, clientOrigin());
return len;
}
@@ -237,18 +240,24 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
if (m_mode == Normal) {
size_t headerSize = end - p;
- if (headerSize < sizeof(webSocketUpgradeHeader) - 1)
+ if (headerSize < sizeof(webSocketUpgradeHeader) - 1) {
+ m_mode = Incomplete;
return 0;
+ }
if (memcmp(p, webSocketUpgradeHeader, sizeof(webSocketUpgradeHeader) - 1)) {
+ m_mode = Failed;
m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Bad Upgrade header: " + String(p, end - p), 0, clientOrigin());
return p - header + sizeof(webSocketUpgradeHeader) - 1;
}
p += sizeof(webSocketUpgradeHeader) - 1;
headerSize = end - p;
- if (headerSize < sizeof(webSocketConnectionHeader) - 1)
+ if (headerSize < sizeof(webSocketConnectionHeader) - 1) {
+ m_mode = Incomplete;
return -1;
+ }
if (memcmp(p, webSocketConnectionHeader, sizeof(webSocketConnectionHeader) - 1)) {
+ m_mode = Failed;
m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Bad Connection header: " + String(p, end - p), 0, clientOrigin());
return p - header + sizeof(webSocketConnectionHeader) - 1;
}
@@ -257,6 +266,7 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
if (!strnstr(p, "\r\n\r\n", end - p)) {
// Just hasn't been received fully yet.
+ m_mode = Incomplete;
return -1;
}
HTTPHeaderMap headers;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list