[Libreoffice-commits] online.git: loolwsd/LOOLWSD.cpp loolwsd/test

Henry Castro hcastro at collabora.com
Sun Apr 17 12:42:30 UTC 2016


 loolwsd/LOOLWSD.cpp         |    9 ++++-----
 loolwsd/test/httpwstest.cpp |   25 +++++++++++++++++--------
 2 files changed, 21 insertions(+), 13 deletions(-)

New commits:
commit 0a92e023394268dbd184250582c671556359c9f3
Author: Henry Castro <hcastro at collabora.com>
Date:   Sun Apr 17 08:42:07 2016 -0400

    loolwsd: test: update changes to WebSocketErrorMessageException

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index f954a53..90a7843 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -504,10 +504,8 @@ private:
             if (!child)
             {
                 // Let the client know we can't serve now.
-                status = "statusindicator: fail";
-                ws->sendFrame(status.data(), (int) status.size());
-                ws->shutdown();
-                throw WebSocketException("Failed to get new child. Client cannot serve now.", WebSocket::WS_ENDPOINT_GOING_AWAY);
+                Log::error("Failed to get new child. Client cannot serve now.");
+                throw WebSocketErrorMessageException(SERVICE_UNAVALABLE_INTERNAL_ERROR);
             }
 
             // Set one we just created.
@@ -685,7 +683,8 @@ public:
                     {
                         const std::string msg = std::string("error: ") + exc.what();
                         ws->sendFrame(msg.data(), msg.size());
-                        ws->shutdown();
+                        // abnormal close frame handshake
+                        ws->shutdown(WebSocket::WS_ENDPOINT_GOING_AWAY, exc.what());
                     }
                     catch (const std::exception& exc2)
                     {
diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp
index cdaeeee..9b917af 100644
--- a/loolwsd/test/httpwstest.cpp
+++ b/loolwsd/test/httpwstest.cpp
@@ -33,6 +33,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include <Common.hpp>
+#include <UserMessages.hpp>
 #include <Util.hpp>
 #include <LOOLProtocol.hpp>
 
@@ -170,7 +171,7 @@ void HTTPWSTest::testBadRequest()
         session.setKeepAlive(true);
         session.sendRequest(request);
         session.receiveResponse(response);
-        CPPUNIT_ASSERT(response.getStatus() == Poco::Net::HTTPResponse::HTTP_BAD_REQUEST);
+        CPPUNIT_ASSERT(response.getStatus() == Poco::Net::HTTPResponse::HTTPResponse::HTTP_SERVICE_UNAVAILABLE);
     }
     catch (const Poco::Exception& exc)
     {
@@ -199,7 +200,7 @@ void HTTPWSTest::testHandShake()
         Poco::Net::WebSocket socket(session, request, response);
 
         const std::string prefixEdit = "editlock:";
-        const char* fail = "fail";
+        const char* fail = "error:";
         std::string payload("statusindicator: find");
 
         std::string receive;
@@ -233,18 +234,26 @@ void HTTPWSTest::testHandShake()
             }
             else
             {
-                payload = "statusindicator: fail";
-                CPPUNIT_ASSERT_EQUAL((int) payload.size(), bytes);
-                CPPUNIT_ASSERT(payload.compare(0, payload.size(), buffer, 0, bytes) == 0);
+                // check error message
+                CPPUNIT_ASSERT(std::strstr(buffer, SERVICE_UNAVALABLE_INTERNAL_ERROR) != nullptr);
                 CPPUNIT_ASSERT(flags == Poco::Net::WebSocket::FRAME_TEXT);
+
+                // close frame message
+                bytes = socket.receiveFrame(buffer, sizeof(buffer), flags);
+                CPPUNIT_ASSERT(std::strstr(buffer, SERVICE_UNAVALABLE_INTERNAL_ERROR) != nullptr);
+                CPPUNIT_ASSERT((flags & Poco::Net::WebSocket::FRAME_OP_BITMASK) == Poco::Net::WebSocket::FRAME_OP_CLOSE);
             }
         }
         else
         {
-            payload = "statusindicator: fail";
-            CPPUNIT_ASSERT_EQUAL((int) payload.size(), bytes);
-            CPPUNIT_ASSERT(payload.compare(0, payload.size(), buffer, 0, bytes) == 0);
+            // check error message
+            CPPUNIT_ASSERT(std::strstr(buffer, SERVICE_UNAVALABLE_INTERNAL_ERROR) != nullptr);
             CPPUNIT_ASSERT(flags == Poco::Net::WebSocket::FRAME_TEXT);
+
+            // close frame message
+            bytes = socket.receiveFrame(buffer, sizeof(buffer), flags);
+            CPPUNIT_ASSERT(std::strstr(buffer, SERVICE_UNAVALABLE_INTERNAL_ERROR) != nullptr);
+            CPPUNIT_ASSERT((flags & Poco::Net::WebSocket::FRAME_OP_BITMASK) == Poco::Net::WebSocket::FRAME_OP_CLOSE);
         }
 
         socket.shutdown();


More information about the Libreoffice-commits mailing list