0674e87831
sendFrame() implemented in LOOLWebSocket is thread safe, and also deals with large messages - sends the "nextmessage: size=..." frame before the actual large frame. The problem this is attempting to solve was that when sending a large frame, it was split to multiple packets. During that, another frame was sent from a different thread; which lead to confusion, and the resulting frame was corrupted (because it ended up composed from unrelated packets). Change-Id: Ie85952e431b1cad2fdc6e3c64df8a444ea0ae971
35 lines
1.1 KiB
C++
35 lines
1.1 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#include <iostream>
|
|
#include "UnitHTTP.hpp"
|
|
|
|
Poco::Net::HTTPClientSession *UnitHTTP::createSession()
|
|
{
|
|
// HTTP forced in configure hook.
|
|
return new Poco::Net::HTTPClientSession ("127.0.0.1",
|
|
ClientPortNumber);
|
|
}
|
|
|
|
UnitWebSocket::UnitWebSocket(const std::string &docURL)
|
|
{
|
|
try {
|
|
UnitHTTPServerResponse response;
|
|
UnitHTTPServerRequest request(response, docURL);
|
|
|
|
_session = UnitHTTP::createSession();
|
|
|
|
// FIXME: leaking the session - hey ho ... do we need a UnitSocket ?
|
|
_socket = new LOOLWebSocket(*_session, request, response);
|
|
} catch (const Poco::Exception &ex) {
|
|
std::cerr << "Exception creating websocket " << ex.displayText() << std::endl;
|
|
throw;
|
|
}
|
|
}
|
|
|