2010-03-25 Fumitoshi Ukai <ukai@chromium.org>
authorukai@chromium.org <ukai@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 25 Mar 2010 08:38:57 +0000 (08:38 +0000)
committerukai@chromium.org <ukai@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 25 Mar 2010 08:38:57 +0000 (08:38 +0000)
        Reviewed by Eric Seidel.

        [Qt] websocket/tests/long-invalid-header.html fails
        https://bugs.webkit.org/show_bug.cgi?id=36492

        * websocket/tests/long-invalid-header-expected.txt: trim console message.
2010-03-25  Fumitoshi Ukai  <ukai@chromium.org>

        Reviewed by Eric Seidel.

        [Qt] websocket/tests/long-invalid-header.html fails
        https://bugs.webkit.org/show_bug.cgi?id=36492

        trim message at most 128 bytes from the current position.
        I believe it's enough data to investigate the error reason and
        it makes test not depend on buffered size.

        * websockets/WebSocketHandshake.cpp:
        (WebCore::trimConsoleMessage):
        (WebCore::WebSocketHandshake::readServerHandshake):
        (WebCore::WebSocketHandshake::readHTTPHeaders):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@56511 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/websocket/tests/long-invalid-header-expected.txt
WebCore/ChangeLog
WebCore/websockets/WebSocketHandshake.cpp

index 19fd61f..54d4ea1 100644 (file)
@@ -1,3 +1,12 @@
+2010-03-25  Fumitoshi Ukai  <ukai@chromium.org>
+
+        Reviewed by Eric Seidel.
+
+        [Qt] websocket/tests/long-invalid-header.html fails
+        https://bugs.webkit.org/show_bug.cgi?id=36492
+
+        * websocket/tests/long-invalid-header-expected.txt: trim console message.
+
 2010-03-25  Kinuko Yasuda  <kinuko@chromium.org>
 
         Reviewed by David Levin.
index 78e3613..359d267 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 0: Bad Upgrade header: pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
+CONSOLE MESSAGE: line 0: Bad Upgrade header: pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp...
 Make sure WebSocket gives errors on long invalid upgrade header.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
index 197d958..6deca26 100644 (file)
@@ -1,3 +1,19 @@
+2010-03-25  Fumitoshi Ukai  <ukai@chromium.org>
+
+        Reviewed by Eric Seidel.
+
+        [Qt] websocket/tests/long-invalid-header.html fails
+        https://bugs.webkit.org/show_bug.cgi?id=36492
+
+        trim message at most 128 bytes from the current position.
+        I believe it's enough data to investigate the error reason and
+        it makes test not depend on buffered size.
+
+        * websockets/WebSocketHandshake.cpp:
+        (WebCore::trimConsoleMessage):
+        (WebCore::WebSocketHandshake::readServerHandshake):
+        (WebCore::WebSocketHandshake::readHTTPHeaders):
+
 2010-03-24  Jon Honeycutt  <jhoneycutt@apple.com>
 
         <rdar://problem/7780798> Missing plug-ins should be represented by text
index a5f0672..add83fa 100644 (file)
@@ -87,6 +87,14 @@ static String resourceName(const KURL& url)
     return name;
 }
 
+static String trimConsoleMessage(const char* p, size_t len)
+{
+    String s = String(p, std::min<size_t>(len, 128));
+    if (len > 128)
+        s += "...";
+    return s;
+}
+
 WebSocketHandshake::WebSocketHandshake(const KURL& url, const String& protocol, ScriptExecutionContext* context)
     : m_url(url)
     , m_clientProtocol(protocol)
@@ -238,12 +246,12 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
     else {
         const String& code = extractResponseCode(header, len);
         if (code.isNull()) {
-            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Short server handshake: " + String(header, len), 0, clientOrigin());
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Short server handshake: " + trimConsoleMessage(header, len), 0, clientOrigin());
             return -1;
         }
         if (code.isEmpty()) {
             m_mode = Failed;
-            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "No response code found: " + String(header, len), 0, clientOrigin());
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "No response code found: " + trimConsoleMessage(header, len), 0, clientOrigin());
             return len;
         }
         LOG(Network, "response code: %s", code.utf8().data());
@@ -268,7 +276,7 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
         }
         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());
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Bad Upgrade header: " + trimConsoleMessage(p, end - p), 0, clientOrigin());
             return p - header + sizeof(webSocketUpgradeHeader) - 1;
         }
         p += sizeof(webSocketUpgradeHeader) - 1;
@@ -280,7 +288,7 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
         }
         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());
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Bad Connection header: " + trimConsoleMessage(p, end - p), 0, clientOrigin());
             return p - header + sizeof(webSocketConnectionHeader) - 1;
         }
         p += sizeof(webSocketConnectionHeader) - 1;
@@ -391,13 +399,13 @@ const char* WebSocketHandshake::readHTTPHeaders(const char* start, const char* e
                 if (name.isEmpty()) {
                     if (p + 1 < end && *(p + 1) == '\n')
                         return p + 2;
-                    m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "CR doesn't follow LF at " + String(p, end - p), 0, clientOrigin());
+                    m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "CR doesn't follow LF at " + trimConsoleMessage(p, end - p), 0, clientOrigin());
                     return 0;
                 }
-                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected CR in name at " + String(p, end - p), 0, clientOrigin());
+                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected CR in name at " + trimConsoleMessage(p, end - p), 0, clientOrigin());
                 return 0;
             case '\n':
-                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected LF in name at " + String(p, end - p), 0, clientOrigin());
+                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected LF in name at " + trimConsoleMessage(p, end - p), 0, clientOrigin());
                 return 0;
             case ':':
                 break;
@@ -421,7 +429,7 @@ const char* WebSocketHandshake::readHTTPHeaders(const char* start, const char* e
             case '\r':
                 break;
             case '\n':
-                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected LF in value at " + String(p, end - p), 0, clientOrigin());
+                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected LF in value at " + trimConsoleMessage(p, end - p), 0, clientOrigin());
                 return 0;
             default:
                 value.append(*p);
@@ -432,7 +440,7 @@ const char* WebSocketHandshake::readHTTPHeaders(const char* start, const char* e
             }
         }
         if (p >= end || *p != '\n') {
-            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "CR doesn't follow LF after value at " + String(p, end - p), 0, clientOrigin());
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "CR doesn't follow LF after value at " + trimConsoleMessage(p, end - p), 0, clientOrigin());
             return 0;
         }
         AtomicString nameStr(String::fromUTF8(name.data(), name.size()));