[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