loolwsd/LOOLWSD.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
New commits: commit de9ec63e4f9c0514070016fcaf8aae3772fb7d42 Author: Jan Holesovsky <ke...@collabora.com> Date: Fri Nov 11 17:39:13 2016 +0100 Turns out that setting 'blocking' is the right thing to do. Unfortunately it turns out that POCO's handling of the non-blocking case is wrong when EWOULDBLOCK is returned from ::send(). This leads to a situation when part of the data has been sent, but it is impossible to send only the rest of it, because of too high-level api for the websockets. We could essentially re-implement the POCO's websockets and use just the lower levels of POCO - but then it's a question whether it is actually easier to use the Linux system calls right away :-) Change-Id: Ied08f68d5037d0ab9ca8266cd20e1084bcebfd14 diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp index 7c7f03d..799a79c 100644 --- a/loolwsd/LOOLWSD.cpp +++ b/loolwsd/LOOLWSD.cpp @@ -1123,11 +1123,11 @@ public: try { // First, setup WS options. - // FIXME HACK: This needs a bit deeper research; for the - // moment we block with HTTP because non-blocking causes - // problems; maybe we need that for HTTPS too - to be - // tested - ws->setBlocking(!LOOLWSD::isSSLEnabled()); + // We need blocking here, because the POCO's + // implementation of handling of non-blocking in + // websockes in broken; essentially it leads to + // sending incomplete frames. + ws->setBlocking(true); ws->setSendTimeout(WS_SEND_TIMEOUT_MS * 1000); std::string decodedUri; URI::decode(reqPathTokens[1], decodedUri); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits