[Libreoffice-commits] online.git: Branch 'private/Ashod/nonblocking' - 6 commits - net/Socket.hpp net/SslSocket.hpp wsd/FileServer.cpp wsd/FileServer.hpp wsd/LOOLWSD.cpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Mon Feb 27 13:56:23 UTC 2017


 net/Socket.hpp     |   21 ++++++++++-
 net/SslSocket.hpp  |    2 -
 wsd/FileServer.cpp |   94 ++++++++++++++++++++++++++++++++++-------------------
 wsd/FileServer.hpp |   32 +++---------------
 wsd/LOOLWSD.cpp    |   15 +++++---
 5 files changed, 97 insertions(+), 67 deletions(-)

New commits:
commit 5244650ca327b8803a5469715ffdd0ac339d1aab
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon Feb 27 08:55:42 2017 -0500

    nb: shutdown socket after file-serving
    
    Change-Id: Ibe0b33f371d46e62637f570265fcdf9c8bf60b2d

diff --git a/net/Socket.hpp b/net/Socket.hpp
index 78cfb66..a5966aa 100644
--- a/net/Socket.hpp
+++ b/net/Socket.hpp
@@ -55,6 +55,13 @@ public:
     /// Returns the OS native socket fd.
     int getFD() const { return _fd; }
 
+    /// Shutdown the socket.
+    /// TODO: Support separate read/write shutdown.
+    virtual void shutdown()
+    {
+        ::shutdown(_fd, SHUT_RDWR);
+    }
+
     /// Return a mask of events we should be polling for
     virtual int getPollEvents() = 0;
 
diff --git a/net/SslSocket.hpp b/net/SslSocket.hpp
index 0f43869..ada6568 100644
--- a/net/SslSocket.hpp
+++ b/net/SslSocket.hpp
@@ -55,7 +55,7 @@ public:
     }
 
     /// Shutdown the TLS/SSL connection properly.
-    void shutdown()
+    void shutdown() override
     {
         if (SSL_shutdown(_ssl) == 0)
         {
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 617e0db..19ac013 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2760,6 +2760,7 @@ private:
         LOG_DBG("FileServer request: " << request.getURI());
         auto socket = _socket.lock();
         FileServerRequestHandler::handleRequest(request, socket);
+        socket->shutdown();
     }
 
     void handleAdminRequest(const Poco::Net::HTTPRequest& request)
@@ -2789,6 +2790,7 @@ private:
 
         auto socket = _socket.lock();
         socket->send(oss.str());
+        socket->shutdown();
         LOG_INF("Sent discovery.xml successfully.");
     }
 
@@ -2804,6 +2806,7 @@ private:
 
         auto socket = _socket.lock();
         HttpHelper::sendFile(socket, faviconPath, mimeType);
+        socket->shutdown();
     }
 
     void handleWopiDiscoveryRequest(const Poco::Net::HTTPRequest& request)
@@ -2853,6 +2856,7 @@ private:
 
         auto socket = _socket.lock();
         socket->send(oss.str());
+        socket->shutdown();
         LOG_INF("Sent discovery.xml successfully.");
     }
 
commit 8b753ecfae4d57ce490abc1f4aa40d6b57b10234
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon Feb 27 08:55:10 2017 -0500

    nb: handle socket poll exceptions and remove socket
    
    Change-Id: Ibdee316f102d6606c38470e5ccacd2a7bd7ea7ce

diff --git a/net/Socket.hpp b/net/Socket.hpp
index 6542448..78cfb66 100644
--- a/net/Socket.hpp
+++ b/net/Socket.hpp
@@ -207,8 +207,18 @@ public:
         {
             if (_pollFds[i].revents)
             {
-                if (_pollSockets[i]->handlePoll(newNow, _pollFds[i].revents) ==
-                    Socket::HandleResult::SOCKET_CLOSED)
+                Socket::HandleResult res = Socket::HandleResult::SOCKET_CLOSED;
+                try
+                {
+                    res = _pollSockets[i]->handlePoll(newNow, _pollFds[i].revents);
+                }
+                catch (const std::exception& exc)
+                {
+                    LOG_ERR("Error while handling poll for socket #" <<
+                            _pollFds[i].fd << ": " << exc.what());
+                }
+
+                if (res == Socket::HandleResult::SOCKET_CLOSED)
                 {
                     LOG_DBG("Removing client #" << _pollFds[i].fd);
                     _pollSockets.erase(_pollSockets.begin() + i);
commit bf45b86f8236c7399d481ee4862f9143617b126a
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon Feb 27 08:40:44 2017 -0500

    nb: set the Date in http header
    
    Change-Id: I71e3388c1f204135c6dc72ad27890bffe53792b3

diff --git a/wsd/FileServer.cpp b/wsd/FileServer.cpp
index 563ffe3..01d2473 100644
--- a/wsd/FileServer.cpp
+++ b/wsd/FileServer.cpp
@@ -180,7 +180,7 @@ void FileServerRequestHandler::handleRequest(const HTTPRequest& request, const s
         // Unauthorized.
         std::ostringstream oss;
         oss << "HTTP/1.1 401\r\n"
-            << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+            << "Date: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
             << "User-Agent: LOOLWSD WOPI Agent\r\n"
             << "Content-Length: 0\r\n"
             << "WWW-Authenticate: Basic realm=\"online\"\r\n"
@@ -194,7 +194,7 @@ void FileServerRequestHandler::handleRequest(const HTTPRequest& request, const s
         // TODO return some 403 page?
         std::ostringstream oss;
         oss << "HTTP/1.1 403\r\n"
-            << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+            << "Date: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
             << "User-Agent: LOOLWSD WOPI Agent\r\n"
             << "Content-Length: 0\r\n"
             << "\r\n";
@@ -207,7 +207,7 @@ void FileServerRequestHandler::handleRequest(const HTTPRequest& request, const s
         // 404 not found
         std::ostringstream oss;
         oss << "HTTP/1.1 404\r\n"
-            << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+            << "Date: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
             << "User-Agent: LOOLWSD WOPI Agent\r\n"
             << "Content-Length: 0\r\n"
             << "\r\n";
@@ -242,7 +242,7 @@ void FileServerRequestHandler::preprocessFile(const HTTPRequest& request, const
         // 404 not found
         std::ostringstream oss;
         oss << "HTTP/1.1 404\r\n"
-            << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+            << "Date: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
             << "User-Agent: LOOLWSD WOPI Agent\r\n"
             << "Content-Length: 0\r\n"
             << "\r\n";
@@ -298,6 +298,7 @@ void FileServerRequestHandler::preprocessFile(const HTTPRequest& request, const
 
     std::ostringstream oss;
     oss << "HTTP/1.1 200 OK\r\n"
+        << "Date: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
         << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
         << "User-Agent: LOOLWSD WOPI Agent\r\n"
         << "Content-Length: " << preprocess.size() << "\r\n"
commit dff26f9b57a90429e5958f7340e0769c9357418f
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon Feb 27 08:37:48 2017 -0500

    nb: http error cases in file server
    
    Change-Id: I81b0ef3f080ba61836d99fbdde0fb94e1a44a625

diff --git a/wsd/FileServer.cpp b/wsd/FileServer.cpp
index 35e0a8d..563ffe3 100644
--- a/wsd/FileServer.cpp
+++ b/wsd/FileServer.cpp
@@ -176,24 +176,42 @@ void FileServerRequestHandler::handleRequest(const HTTPRequest& request, const s
     catch (const Poco::Net::NotAuthenticatedException& exc)
     {
         LOG_ERR("FileServerRequestHandler::NotAuthenticated: " << exc.displayText());
-        // response.set("WWW-Authenticate", "Basic realm=\"online\"");
-        // response.setStatusAndReason(HTTPResponse::HTTP_UNAUTHORIZED);
-        // response.setContentLength(0);
-        // response.send();
+
+        // Unauthorized.
+        std::ostringstream oss;
+        oss << "HTTP/1.1 401\r\n"
+            << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+            << "User-Agent: LOOLWSD WOPI Agent\r\n"
+            << "Content-Length: 0\r\n"
+            << "WWW-Authenticate: Basic realm=\"online\"\r\n"
+            << "\r\n";
+        socket->send(oss.str());
     }
     catch (const Poco::FileAccessDeniedException& exc)
     {
         LOG_ERR("FileServerRequestHandler: " << exc.displayText());
-        // response.setStatusAndReason(HTTPResponse::HTTP_FORBIDDEN);
-        // response.setContentLength(0); // TODO return some 403 page?
-        // response.send();
+
+        // TODO return some 403 page?
+        std::ostringstream oss;
+        oss << "HTTP/1.1 403\r\n"
+            << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+            << "User-Agent: LOOLWSD WOPI Agent\r\n"
+            << "Content-Length: 0\r\n"
+            << "\r\n";
+        socket->send(oss.str());
     }
     catch (const Poco::FileNotFoundException& exc)
     {
         LOG_ERR("FileServerRequestHandler: " << exc.displayText());
-        // response.setStatusAndReason(HTTPResponse::HTTP_NOT_FOUND);
-        // response.setContentLength(0); // TODO return some 404 page?
-        // response.send();
+
+        // 404 not found
+        std::ostringstream oss;
+        oss << "HTTP/1.1 404\r\n"
+            << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+            << "User-Agent: LOOLWSD WOPI Agent\r\n"
+            << "Content-Length: 0\r\n"
+            << "\r\n";
+        socket->send(oss.str());
     }
 }
 
@@ -220,9 +238,15 @@ void FileServerRequestHandler::preprocessFile(const HTTPRequest& request, const
     if (!Poco::File(path).exists())
     {
         LOG_ERR("File [" << path.toString() << "] does not exist.");
-        // response.setStatusAndReason(HTTPResponse::HTTP_NOT_FOUND);
-        // response.setContentLength(0); // TODO return some 404 page?
-        // response.send();
+
+        // 404 not found
+        std::ostringstream oss;
+        oss << "HTTP/1.1 404\r\n"
+            << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+            << "User-Agent: LOOLWSD WOPI Agent\r\n"
+            << "Content-Length: 0\r\n"
+            << "\r\n";
+        socket->send(oss.str());
         return;
     }
 
@@ -231,6 +255,7 @@ void FileServerRequestHandler::preprocessFile(const HTTPRequest& request, const
     StreamCopier::copyToString(file, preprocess);
     file.close();
 
+    //TODO: FIXME: Is this the correct way to get these values? Used to be done using HTTPForm.
     const std::string& accessToken = request.get("access_token", "");
     const std::string& accessTokenTtl = request.get("access_token_ttl", "");
 
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index cb6390f..617e0db 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2757,7 +2757,7 @@ private:
 
     void handleFileServerRequest(const Poco::Net::HTTPRequest& request)
     {
-        LOG_ERR("FileServer request: " << request.getURI());
+        LOG_DBG("FileServer request: " << request.getURI());
         auto socket = _socket.lock();
         FileServerRequestHandler::handleRequest(request, socket);
     }
commit 9469b12accb27ab4e243542467bfc04407e82ff5
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon Feb 27 08:28:04 2017 -0500

    nb: serve files using non-blocking sockets
    
    Change-Id: I254288980f72f197d29b7b57ec9c88a01a5a1d03

diff --git a/wsd/FileServer.cpp b/wsd/FileServer.cpp
index c91fdf1..35e0a8d 100644
--- a/wsd/FileServer.cpp
+++ b/wsd/FileServer.cpp
@@ -12,6 +12,8 @@
 #include <string>
 #include <vector>
 
+#include <Poco/DateTimeFormat.h>
+#include <Poco/DateTimeFormatter.h>
 #include <Poco/Exception.h>
 #include <Poco/FileStream.h>
 #include <Poco/Net/HTTPCookie.h>
@@ -106,7 +108,7 @@ bool FileServerRequestHandler::isAdminLoggedIn(HTTPServerRequest& request, HTTPS
     return false;
 }
 
-void FileServerRequestHandler::handleRequest(HTTPServerRequest& request, HTTPServerResponse& response)
+void FileServerRequestHandler::handleRequest(const HTTPRequest& request, const std::shared_ptr<StreamSocket>& socket)
 {
     try
     {
@@ -126,7 +128,7 @@ void FileServerRequestHandler::handleRequest(HTTPServerRequest& request, HTTPSer
         const std::string endPoint = requestSegments[requestSegments.size() - 1];
         if (endPoint == loleafletHtml)
         {
-            preprocessFile(request, response);
+            preprocessFile(request, socket);
             return;
         }
 
@@ -136,7 +138,8 @@ void FileServerRequestHandler::handleRequest(HTTPServerRequest& request, HTTPSer
                 endPoint == "adminSettings.html" ||
                 endPoint == "adminAnalytics.html")
             {
-                if (!FileServerRequestHandler::isAdminLoggedIn(request, response))
+                // FIXME: support admin console.
+                //if (!FileServerRequestHandler::isAdminLoggedIn(request, response))
                     throw Poco::Net::NotAuthenticatedException("Invalid admin login");
             }
 
@@ -167,35 +170,34 @@ void FileServerRequestHandler::handleRequest(HTTPServerRequest& request, HTTPSer
             else
                 mimeType = "text/plain";
 
-            response.setContentType(mimeType);
-            response.sendFile(filepath, mimeType);
+            HttpHelper::sendFile(socket, filepath, mimeType);
         }
     }
     catch (const Poco::Net::NotAuthenticatedException& exc)
     {
         LOG_ERR("FileServerRequestHandler::NotAuthenticated: " << exc.displayText());
-        response.set("WWW-Authenticate", "Basic realm=\"online\"");
-        response.setStatusAndReason(HTTPResponse::HTTP_UNAUTHORIZED);
-        response.setContentLength(0);
-        response.send();
+        // response.set("WWW-Authenticate", "Basic realm=\"online\"");
+        // response.setStatusAndReason(HTTPResponse::HTTP_UNAUTHORIZED);
+        // response.setContentLength(0);
+        // response.send();
     }
     catch (const Poco::FileAccessDeniedException& exc)
     {
         LOG_ERR("FileServerRequestHandler: " << exc.displayText());
-        response.setStatusAndReason(HTTPResponse::HTTP_FORBIDDEN);
-        response.setContentLength(0); // TODO return some 403 page?
-        response.send();
+        // response.setStatusAndReason(HTTPResponse::HTTP_FORBIDDEN);
+        // response.setContentLength(0); // TODO return some 403 page?
+        // response.send();
     }
     catch (const Poco::FileNotFoundException& exc)
     {
         LOG_ERR("FileServerRequestHandler: " << exc.displayText());
-        response.setStatusAndReason(HTTPResponse::HTTP_NOT_FOUND);
-        response.setContentLength(0); // TODO return some 404 page?
-        response.send();
+        // response.setStatusAndReason(HTTPResponse::HTTP_NOT_FOUND);
+        // response.setContentLength(0); // TODO return some 404 page?
+        // response.send();
     }
 }
 
-std::string FileServerRequestHandler::getRequestPathname(const HTTPServerRequest& request)
+std::string FileServerRequestHandler::getRequestPathname(const HTTPRequest& request)
 {
     Poco::URI requestUri(request.getURI());
     // avoid .'s and ..'s
@@ -209,10 +211,8 @@ std::string FileServerRequestHandler::getRequestPathname(const HTTPServerRequest
     return path;
 }
 
-void FileServerRequestHandler::preprocessFile(HTTPServerRequest& request, HTTPServerResponse& response) throw(Poco::FileAccessDeniedException)
+void FileServerRequestHandler::preprocessFile(const HTTPRequest& request, const std::shared_ptr<StreamSocket>& socket)
 {
-    HTMLForm form(request, request.stream());
-
     const auto host = ((LOOLWSD::isSSLEnabled() || LOOLWSD::isSSLTermination()) ? "wss://" : "ws://") + (LOOLWSD::ServerName.empty() ? request.getHost() : LOOLWSD::ServerName);
     const auto path = Poco::Path(LOOLWSD::FileServerRoot, getRequestPathname(request));
     LOG_DBG("Preprocessing file: " << path.toString());
@@ -220,9 +220,9 @@ void FileServerRequestHandler::preprocessFile(HTTPServerRequest& request, HTTPSe
     if (!Poco::File(path).exists())
     {
         LOG_ERR("File [" << path.toString() << "] does not exist.");
-        response.setStatusAndReason(HTTPResponse::HTTP_NOT_FOUND);
-        response.setContentLength(0); // TODO return some 404 page?
-        response.send();
+        // response.setStatusAndReason(HTTPResponse::HTTP_NOT_FOUND);
+        // response.setContentLength(0); // TODO return some 404 page?
+        // response.send();
         return;
     }
 
@@ -231,8 +231,8 @@ void FileServerRequestHandler::preprocessFile(HTTPServerRequest& request, HTTPSe
     StreamCopier::copyToString(file, preprocess);
     file.close();
 
-    const std::string& accessToken = form.get("access_token", "");
-    const std::string& accessTokenTtl = form.get("access_token_ttl", "");
+    const std::string& accessToken = request.get("access_token", "");
+    const std::string& accessTokenTtl = request.get("access_token_ttl", "");
 
     // Escape bad characters in access token.
     // This is placed directly in javascript in loleaflet.html, we need to make sure
@@ -269,17 +269,19 @@ void FileServerRequestHandler::preprocessFile(HTTPServerRequest& request, HTTPSe
     const auto loleafletLogging = config.getString("loleaflet_logging", "false");
     Poco::replaceInPlace(preprocess, std::string("%LOLEAFLET_LOGGING%"), loleafletLogging);
 
-    response.setContentType("text/html");
-    response.setContentLength(preprocess.length());
-    response.setChunkedTransferEncoding(false);
+    const std::string mimeType = "text/html";
 
-    std::ostream& ostr = response.send();
-    ostr << preprocess;
-}
+    std::ostringstream oss;
+    oss << "HTTP/1.1 200 OK\r\n"
+        << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+        << "User-Agent: LOOLWSD WOPI Agent\r\n"
+        << "Content-Length: " << preprocess.size() << "\r\n"
+        << "Content-Type: " << mimeType << "\r\n"
+        << "\r\n"
+        << preprocess;
 
-FileServer::FileServer()
-{
-    LOG_INF("FileServer ctor.");
+    socket->send(oss.str());
+    LOG_DBG("Sent file: " << path.toString());
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/wsd/FileServer.hpp b/wsd/FileServer.hpp
index a9f56cd..7738968 100644
--- a/wsd/FileServer.hpp
+++ b/wsd/FileServer.hpp
@@ -18,40 +18,20 @@
 #include <Poco/Net/HTTPServerRequest.h>
 #include <Poco/Net/HTTPServerResponse.h>
 
+#include "Socket.hpp"
+
 /// Handles file requests over HTTP(S).
-class FileServerRequestHandler : public Poco::Net::HTTPRequestHandler
+class FileServerRequestHandler
 {
-    static std::string getRequestPathname(const Poco::Net::HTTPServerRequest& request);
+    static std::string getRequestPathname(const Poco::Net::HTTPRequest& request);
 
-    static void preprocessFile(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) throw(Poco::FileAccessDeniedException);
+    static void preprocessFile(const Poco::Net::HTTPRequest& request, const std::shared_ptr<StreamSocket>& socket);
 
 public:
     /// Evaluate if the cookie exists, and if not, ask for the credentials.
     static bool isAdminLoggedIn(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
 
-    void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) override;
-};
-
-/// Singleton class to serve files over HTTP(S).
-class FileServer
-{
-public:
-    static FileServer& instance()
-    {
-        static FileServer fileServer;
-        return fileServer;
-    }
-
-    static FileServerRequestHandler* createRequestHandler()
-    {
-        return new FileServerRequestHandler();
-    }
-
-    FileServer(FileServer const&) = delete;
-    void operator=(FileServer const&) = delete;
-
-private:
-    FileServer();
+    static void handleRequest(const Poco::Net::HTTPRequest& request, const std::shared_ptr<StreamSocket>& socket);
 };
 
 #endif
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 58a2c9b..cb6390f 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2758,7 +2758,8 @@ private:
     void handleFileServerRequest(const Poco::Net::HTTPRequest& request)
     {
         LOG_ERR("FileServer request: " << request.getURI());
-        // requestHandler = FileServer::createRequestHandler();
+        auto socket = _socket.lock();
+        FileServerRequestHandler::handleRequest(request, socket);
     }
 
     void handleAdminRequest(const Poco::Net::HTTPRequest& request)
commit f64e78978ee0ffdad06a73a7a1fbba04f3d47826
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon Feb 27 08:27:36 2017 -0500

    nb: log requests as debug and not error
    
    Change-Id: Ic3ec3257f98c80e959c9d980fe6b1d8d6f40f604

diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index d32699a..58a2c9b 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2769,7 +2769,7 @@ private:
 
     void handleRootRequest(const Poco::Net::HTTPRequest& request)
     {
-        LOG_ERR("HTTP request: " << request.getURI());
+        LOG_DBG("HTTP request: " << request.getURI());
         const std::string mimeType = "text/plain";
         const std::string responseString = "OK";
 
@@ -2793,7 +2793,7 @@ private:
 
     void handleFaviconRequest(const Poco::Net::HTTPRequest& request)
     {
-        LOG_ERR("Favicon request: " << request.getURI());
+        LOG_DBG("Favicon request: " << request.getURI());
         std::string mimeType = "image/vnd.microsoft.icon";
         std::string faviconPath = Path(Application::instance().commandPath()).parent().toString() + "favicon.ico";
         if (!File(faviconPath).exists())
@@ -2807,7 +2807,7 @@ private:
 
     void handleWopiDiscoveryRequest(const Poco::Net::HTTPRequest& request)
     {
-        LOG_ERR("Wopi discovery request: " << request.getURI());
+        LOG_DBG("Wopi discovery request: " << request.getURI());
 
         // http://server/hosting/discovery
         std::string discoveryPath = Path(Application::instance().commandPath()).parent().toString() + "discovery.xml";


More information about the Libreoffice-commits mailing list