net/WebSocketHandler.hpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
New commits: commit 6b96c73f46d1c27f0054aea840a05bcc58fa1930 Author: Tor Lillqvist <t...@collabora.com> Date: Thu Jul 19 11:35:48 2018 +0300 Don't log binary data as such, use Util::stringifyHexLine() Also, log the cases with still incomplete data in the buffer separately. Change-Id: Idfa915378c2823dd898789d6a63a0cd71a817b8a diff --git a/net/WebSocketHandler.hpp b/net/WebSocketHandler.hpp index e1e04dac1..d6933d173 100644 --- a/net/WebSocketHandler.hpp +++ b/net/WebSocketHandler.hpp @@ -133,11 +133,11 @@ public: if (len == 0) return false; // avoid logging. - // FIXME: Do we really want to dump binary data as such here? - LOG_TRC("#" << socket->getFD() << ": Incoming WebSocket data of " << len << " bytes: " << std::string(socket->_inBuffer.data(), socket->_inBuffer.size())); - if (len < 2) // partial read + { + LOG_TRC("#" << socket->getFD() << ": Still incomplete WebSocket message, have " << len << " bytes"); return false; + } unsigned char *p = reinterpret_cast<unsigned char*>(&socket->_inBuffer[0]); const bool fin = p[0] & 0x80; @@ -150,7 +150,10 @@ public: if (payloadLen == 126) // 2 byte length { if (len < 2 + 2) + { + LOG_TRC("#" << socket->getFD() << ": Still incomplete WebSocket message, have " << len << " bytes"); return false; + } payloadLen = (((unsigned)p[2]) << 8) | ((unsigned)p[3]); headerLen += 2; @@ -158,8 +161,10 @@ public: else if (payloadLen == 127) // 8 byte length { if (len < 2 + 8) + { + LOG_TRC("#" << socket->getFD() << ": Still incomplete WebSocket message, have " << len << " bytes"); return false; - + } payloadLen = ((((uint64_t)p[9]) << 0) + (((uint64_t)p[8]) << 8) + (((uint64_t)p[7]) << 16) + (((uint64_t)p[6]) << 24) + (((uint64_t)p[5]) << 32) + (((uint64_t)p[4]) << 40) + @@ -178,9 +183,12 @@ public: if (payloadLen + headerLen > len) { // partial read wait for more data. + LOG_TRC("#" << socket->getFD() << ": Still incomplete WebSocket message, have " << len << " bytes, message is " << payloadLen + headerLen << " bytes"); return false; } + LOG_TRC("#" << socket->getFD() << ": Incoming WebSocket data of " << len << " bytes: " << Util::stringifyHexLine(socket->_inBuffer, 0, std::min((size_t)32, len))); + data = p + headerLen; if (hasMask) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits