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

Miklos Vajna vmiklos at collabora.co.uk
Mon Oct 19 07:04:13 PDT 2015


 loolwsd/LOOLSession.cpp |   12 ++++++++----
 loolwsd/LOOLWSD.cpp     |   21 +++++++++++++++++----
 2 files changed, 25 insertions(+), 8 deletions(-)

New commits:
commit cc18cc702f1de1dc2d133c81a0595f7ecf73517c
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Oct 19 16:03:16 2015 +0200

    loolwsd: extraft filename from convert-to parameters

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 89bc579..b37c1b3 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -182,15 +182,27 @@ private:
 /// Handles the filename part of the convert-to POST request payload.
 class ConvertToPartHandler : public Poco::Net::PartHandler
 {
+    std::string& _filename;
     std::vector<char>& _buffer;
 public:
-    ConvertToPartHandler(std::vector<char>& buffer)
-        : _buffer(buffer)
+    ConvertToPartHandler(std::string& filename, std::vector<char>& buffer)
+        : _filename(filename),
+        _buffer(buffer)
     {
     }
 
-    virtual void handlePart(const Poco::Net::MessageHeader& /*header*/, std::istream& stream) override
+    virtual void handlePart(const Poco::Net::MessageHeader& header, std::istream& stream) override
     {
+        std::string disp;
+        Poco::Net::NameValueCollection params;
+        if (header.has("Content-Disposition"))
+        {
+            std::string cd = header.get("Content-Disposition");
+            Poco::Net::MessageHeader::splitParameters(cd, disp, params);
+        }
+        if (params.has("filename"))
+            _filename = params.get("filename");
+
         char c;
         while (stream.get(c))
             _buffer.push_back(c);
@@ -223,8 +235,9 @@ public:
             StringTokenizer tokens(request.getURI(), "/?");
             if (tokens.count() >= 2 && tokens[1] == "convert-to")
             {
+                std::string filename;
                 std::vector<char> buffer;
-                ConvertToPartHandler handler(buffer);
+                ConvertToPartHandler handler(filename, buffer);
                 Poco::Net::HTMLForm form(request, request.stream(), handler);
                 std::string format;
                 if (form.has("format"))
commit f0ba09f3dda980f46bad9c63b0fef5b8078ea99a
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Oct 19 10:58:21 2015 +0200

    LOOLSession: check for 0 _ws

diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index 3296139..1f1a2da 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -106,7 +106,8 @@ LOOLSession::LOOLSession(std::shared_ptr<WebSocket> ws, Kind kind) :
 LOOLSession::~LOOLSession()
 {
     std::cout << Util::logPrefix() << "LOOLSession dtor this=" << this << " " << _kind << std::endl;
-    Util::shutdownWebSocket(*_ws);
+    if (_ws)
+        Util::shutdownWebSocket(*_ws);
 }
 
 void LOOLSession::sendTextFrame(const std::string& text)
@@ -123,10 +124,12 @@ void LOOLSession::sendBinaryFrame(const char *buffer, int length)
     if (length > 1000)
     {
         std::string nextmessage = "nextmessage: size=" + std::to_string(length);
-        _ws->sendFrame(nextmessage.data(), nextmessage.size());
+        if (_ws)
+            _ws->sendFrame(nextmessage.data(), nextmessage.size());
     }
 
-    _ws->sendFrame(buffer, length, WebSocket::FRAME_BINARY);
+    if (_ws)
+        _ws->sendFrame(buffer, length, WebSocket::FRAME_BINARY);
 }
 
 std::map<Process::PID, UInt64> MasterProcessSession::_childProcesses;
@@ -149,7 +152,8 @@ MasterProcessSession::MasterProcessSession(std::shared_ptr<WebSocket> ws, Kind k
 MasterProcessSession::~MasterProcessSession()
 {
     std::cout << Util::logPrefix() << "MasterProcessSession dtor this=" << this << " _peer=" << _peer.lock().get() << std::endl;
-    Util::shutdownWebSocket(*_ws);
+    if (_ws)
+        Util::shutdownWebSocket(*_ws);
     auto peer = _peer.lock();
     if (_kind == Kind::ToClient && peer)
     {


More information about the Libreoffice-commits mailing list