[Libreoffice-commits] online.git: loolwsd/IoUtil.cpp loolwsd/IoUtil.hpp loolwsd/protocol.txt

Artyom Sovetnikov elringus at gmail.com
Wed Jul 27 17:41:16 UTC 2016


 loolwsd/IoUtil.cpp   |   10 +---------
 loolwsd/IoUtil.hpp   |    3 +--
 loolwsd/protocol.txt |   11 -----------
 3 files changed, 2 insertions(+), 22 deletions(-)

New commits:
commit 85d275ab1afb05ed937c55cb9ed9c2462a4a7f89
Author: Artyom Sovetnikov <elringus at gmail.com>
Date:   Mon Jul 25 23:55:55 2016 +0530

    loolwsd: Remove pong frame hack
    
    https://github.com/LibreOffice/online/pull/1

diff --git a/loolwsd/IoUtil.cpp b/loolwsd/IoUtil.cpp
index 350f3d1..7b8adfc 100644
--- a/loolwsd/IoUtil.cpp
+++ b/loolwsd/IoUtil.cpp
@@ -45,20 +45,12 @@ int receiveFrame(WebSocket& socket, void* buffer, int length, int& flags)
         int n = socket.receiveFrame(buffer, length, flags);
         if ((flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_PING)
         {
-            // Technically, we should send back a PONG control frame. However Firefox (probably) or
-            // Node.js (possibly) doesn't like that and closes the socket when we do.
-            socket.sendFrame("pong", strlen("pong"));
+            socket.sendFrame(buffer, n, WebSocket::FRAME_FLAG_FIN | WebSocket::FRAME_OP_PONG);
         }
         else if ((flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_PONG)
         {
             // In case we do send pongs in the future.
         }
-        else if (((flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_TEXT ||
-                  (flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_BINARY) &&
-                 n == 4 && memcmp((char*)buffer, "pong", 4) == 0)
-        {
-            // Ignore what we send above. Be lenient, also ignore binary "pong" frames.
-        }
         else
         {
             return n;
diff --git a/loolwsd/IoUtil.hpp b/loolwsd/IoUtil.hpp
index 2584374..3c6eeb9 100644
--- a/loolwsd/IoUtil.hpp
+++ b/loolwsd/IoUtil.hpp
@@ -22,8 +22,7 @@
 namespace IoUtil
 {
     // Wrapper for WebSocket::receiveFrame() that handles PING frames (by replying with a
-    // "pseudo-PONG" frame, see protocol.txt) and PONG frames. Also our "pseudo-PONG" frames are
-    // ignored.
+    // PONG frame) and PONG frames. PONG frames are ignored.
     // Should we also factor out the handling of non-final and continuation frames into this?
     int receiveFrame(Poco::Net::WebSocket& socket, void* buffer, int length, int& flags);
 
diff --git a/loolwsd/protocol.txt b/loolwsd/protocol.txt
index 8f2412a..2db04d4 100644
--- a/loolwsd/protocol.txt
+++ b/loolwsd/protocol.txt
@@ -165,13 +165,6 @@ userinactive
 
     See 'useractive'.
 
-pong
-
-    Sent instead of a PONG frame as reply to a PING frame. A comment
-    in our code says "Technically, we should send back a PONG control
-    frame. However Firefox (probably) or Node.js (possibly) doesn't
-    like that and closes the socket when we do."
-
 server -> client
 ================
 
@@ -315,10 +308,6 @@ unocommandresult: <payload>
 Callback that an UNO command has finished.
 See LOK_CALLBACK_UNO_COMMAND_RESULT for details.
 
-pong:
-
-    See above.
-
 invalidateviewcursor:
 
     Per-view cursor position invalidation. JSON payload.


More information about the Libreoffice-commits mailing list