[Libreoffice-commits] online.git: common/FileUtil.cpp common/Log.cpp common/Session.cpp common/Unit.hpp common/Util.cpp common/Util.hpp kit/Kit.cpp net/Socket.cpp net/Socket.hpp net/WebSocketHandler.hpp wsd/Auth.hpp wsd/ClientSession.cpp wsd/DocumentBroker.cpp wsd/LOOLWSD.cpp wsd/Storage.cpp wsd/TileCache.cpp
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Mon Sep 10 12:52:45 UTC 2018
common/FileUtil.cpp | 6 +++-
common/Log.cpp | 2 -
common/Session.cpp | 3 +-
common/Unit.hpp | 4 +++
common/Util.cpp | 6 ++--
common/Util.hpp | 2 -
kit/Kit.cpp | 16 ++++++++++--
net/Socket.cpp | 32 +++++++++++++++++-------
net/Socket.hpp | 2 +
net/WebSocketHandler.hpp | 2 +
wsd/Auth.hpp | 4 +--
wsd/ClientSession.cpp | 8 ++++--
wsd/DocumentBroker.cpp | 52 +++++++++++++++++++++++++++++++++++----
wsd/LOOLWSD.cpp | 62 +++++++++++++++++++++++++++++++++--------------
wsd/Storage.cpp | 35 +++++++++++++++++++++-----
wsd/TileCache.cpp | 4 ++-
16 files changed, 185 insertions(+), 55 deletions(-)
New commits:
commit 75438baa70a0d15b18c5ca829b3e3b1307a27c08
Author: Tor Lillqvist <tml at iki.fi>
AuthorDate: Wed Sep 5 15:11:05 2018 +0300
Commit: Tor Lillqvist <tml at iki.fi>
CommitDate: Mon Sep 10 15:13:43 2018 +0300
More mobile app stuff, very much early state of work in progress
Re-think Linux vs mobile ifdefs a bit. Use #ifdef __linux only to
surround code that actually is Linux-specific. Use #ifdef MOBILEAPP
for code that is for a mobile version (with no separste wsd, forkit,
and kit processes, and with no WebSocket protocol used).
Bypass UnitFoo for mobile. Possibly we do want the UnitFoo stuff after
all on mobile, to run in some special testing mode? Hard to say, let's
skipt it for now.
diff --git a/common/FileUtil.cpp b/common/FileUtil.cpp
index 22ca87f0a..cae138ed8 100644
--- a/common/FileUtil.cpp
+++ b/common/FileUtil.cpp
@@ -15,7 +15,7 @@
#include <sys/stat.h>
#ifdef __linux
#include <sys/vfs.h>
-#else
+#elif defined IOS
#import <Foundation/Foundation.h>
#endif
@@ -238,9 +238,11 @@ namespace FileUtil
{
assert(!path.empty());
+#ifndef MOBILEAPP
bool hookResult;
if (UnitBase::get().filterCheckDiskSpace(path, hookResult))
return hookResult;
+#endif
// we should be able to run just OK with 5GB
constexpr int64_t ENOUGH_SPACE = int64_t(5)*1024*1024*1024;
@@ -260,7 +262,7 @@ namespace FileUtil
if (static_cast<double>(sfs.f_bavail) / sfs.f_blocks <= 0.05)
return false;
-#else
+#elif defined IOS
NSDictionary *atDict = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/" error:NULL];
long long freeSpace = [[atDict objectForKey:NSFileSystemFreeSize] longLongValue];
long long totalSpace = [[atDict objectForKey:NSFileSystemSize] longLongValue];
diff --git a/common/Log.cpp b/common/Log.cpp
index 761cab9f4..115901ecc 100644
--- a/common/Log.cpp
+++ b/common/Log.cpp
@@ -12,8 +12,6 @@
#ifdef __linux
#include <sys/prctl.h>
#include <sys/syscall.h>
-#else
-#import <Foundation/Foundation.h>
#endif
#include <unistd.h>
diff --git a/common/Session.cpp b/common/Session.cpp
index d507bcf0e..adbbbb857 100644
--- a/common/Session.cpp
+++ b/common/Session.cpp
@@ -187,6 +187,7 @@ void Session::handleMessage(bool /*fin*/, WSOpCode /*code*/, std::vector<char> &
{
try
{
+#ifndef MOBILEAPP
std::unique_ptr< std::vector<char> > replace;
if (UnitBase::get().filterSessionInput(this, &data[0], data.size(), replace))
{
@@ -194,7 +195,7 @@ void Session::handleMessage(bool /*fin*/, WSOpCode /*code*/, std::vector<char> &
_handleInput(replace->data(), replace->size());
return;
}
-
+#endif
if (!data.empty())
_handleInput(&data[0], data.size());
}
diff --git a/common/Unit.hpp b/common/Unit.hpp
index 5844cc3bd..eaf393611 100644
--- a/common/Unit.hpp
+++ b/common/Unit.hpp
@@ -9,6 +9,8 @@
#ifndef INCLUDED_UNIT_HPP
#define INCLUDED_UNIT_HPP
+#ifndef MOBILEAPP
+
#include <atomic>
#include <cassert>
#include <memory>
@@ -291,4 +293,6 @@ public:
#endif
+#endif
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/common/Util.cpp b/common/Util.cpp
index f48978f37..b193304c1 100644
--- a/common/Util.cpp
+++ b/common/Util.cpp
@@ -18,7 +18,7 @@
#include <sys/prctl.h>
#include <sys/syscall.h>
#include <sys/vfs.h>
-#else
+#elif defined IOS
#import <Foundation/Foundation.h>
#endif
#include <sys/stat.h>
@@ -504,7 +504,7 @@ namespace Util
LOG_INF("Thread " << getThreadId() << " (" <<
std::this_thread::get_id() <<
") is now called [" << s << "].");
-#else
+#elif defined IOS
[[NSThread currentThread] setName:[NSString stringWithUTF8String:ThreadName]];
LOG_INF("Thread " << getThreadId() << " (" <<
std::this_thread::get_id() <<
@@ -520,7 +520,7 @@ namespace Util
#ifdef __linux
if (prctl(PR_GET_NAME, reinterpret_cast<unsigned long>(ThreadName), 0, 0, 0) != 0)
ThreadName[0] = '\0';
-#else
+#elif defined IOS
const char *const name = [[[NSThread currentThread] name] UTF8String];
strncpy(ThreadName, name, 31);
ThreadName[31] = '\0';
diff --git a/common/Util.hpp b/common/Util.hpp
index 9233a2142..c6df31ab5 100644
--- a/common/Util.hpp
+++ b/common/Util.hpp
@@ -70,7 +70,7 @@ namespace Util
bool windowingAvailable();
-#if !defined(BUILDING_TESTS) && !defined(KIT_IN_PROCESS)
+#if !defined(BUILDING_TESTS) && !defined(KIT_IN_PROCESS) && !defined(MOBILEAPP)
/// Send a message to all clients.
void alertAllUsers(const std::string& msg);
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 07befa2b6..da518d2fa 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -14,11 +14,13 @@
#include <config.h>
#include <dlfcn.h>
+#ifdef __linux
#include <ftw.h>
#include <sys/capability.h>
+#include <sys/sysmacros.h>
+#endif
#include <unistd.h>
#include <utime.h>
-#include <sys/sysmacros.h>
#include <sys/time.h>
#include <sys/resource.h>
@@ -99,7 +101,6 @@ using namespace LOOLProtocol;
// We only host a single document in our lifetime.
class Document;
static std::shared_ptr<Document> document;
-static LokHookFunction2* initFunction = nullptr;
#if ENABLE_DEBUG
# define ADD_DEBUG_RENDERID(s) ((s)+ " renderid=" + Util::UniqueId())
@@ -107,6 +108,10 @@ static LokHookFunction2* initFunction = nullptr;
# define ADD_DEBUG_RENDERID(s) (s)
#endif
+#ifndef MOBILEAPP
+
+static LokHookFunction2* initFunction = nullptr;
+
namespace
{
#ifndef BUILDING_TESTS
@@ -360,6 +365,8 @@ namespace
#endif
}
+#endif
+
/// A quick & dirty cache of the last few PNGs
/// and their hashes to avoid re-compression
/// wherever possible.
@@ -2108,7 +2115,10 @@ void documentViewCallback(const int type, const char* payload, void* data)
Document::ViewCallback(type, payload, data);
}
+#ifndef MOBILEAPP
+
#ifndef BUILDING_TESTS
+
void lokit_main(const std::string& childRoot,
const std::string& jailId,
const std::string& sysTemplate,
@@ -2481,4 +2491,6 @@ void alertAllUsers(const std::string& cmd, const std::string& kind)
}
#endif
+#endif // MOBILEAPP
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/net/Socket.cpp b/net/Socket.cpp
index 98bb6b996..38bacdde8 100644
--- a/net/Socket.cpp
+++ b/net/Socket.cpp
@@ -24,7 +24,7 @@
#include <SigUtil.hpp>
#include "Socket.hpp"
-#ifdef __linux
+#ifndef MOBILEAPP
#include "ServerSocket.hpp"
#include "SslSocket.hpp"
#endif
@@ -34,7 +34,7 @@ int SocketPoll::DefaultPollTimeoutMs = 5000;
std::atomic<bool> SocketPoll::InhibitThreadChecks(false);
std::atomic<bool> Socket::InhibitThreadChecks(false);
-#ifdef __linux
+#ifndef MOBILEAPP
int Socket::createSocket(Socket::Type type)
{
@@ -56,6 +56,8 @@ namespace {
}
}
+#endif
+
SocketPoll::SocketPoll(const std::string& threadName)
: _name(threadName),
_stop(false),
@@ -63,6 +65,7 @@ SocketPoll::SocketPoll(const std::string& threadName)
_threadFinished(false),
_owner(std::this_thread::get_id())
{
+#ifndef MOBILEAPP
// Create the wakeup fd.
if (::pipe2(_wakeup, O_CLOEXEC | O_NONBLOCK) == -1)
{
@@ -71,10 +74,12 @@ SocketPoll::SocketPoll(const std::string& threadName)
std::lock_guard<std::mutex> lock(getPollWakeupsMutex());
getWakeupsArray().push_back(_wakeup[1]);
+#endif
}
SocketPoll::~SocketPoll()
{
+#ifndef MOBILEAPP
joinThread();
{
@@ -91,6 +96,7 @@ SocketPoll::~SocketPoll()
::close(_wakeup[1]);
_wakeup[0] = -1;
_wakeup[1] = -1;
+#endif
}
void SocketPoll::startThread()
@@ -110,6 +116,8 @@ void SocketPoll::startThread()
}
}
+#ifndef MOBILEAPP
+
void SocketPoll::joinThread()
{
addCallback([this](){ removeSockets(); });
@@ -126,14 +134,19 @@ void SocketPoll::joinThread()
}
}
+#endif
+
void SocketPoll::wakeupWorld()
{
+#ifndef MOBILEAPP
for (const auto& fd : getWakeupsArray())
wakeup(fd);
+#endif
}
void SocketPoll::insertNewWebSocketSync(const Poco::URI &uri, const std::shared_ptr<SocketHandlerInterface>& websocketHandler)
{
+#ifndef MOBILEAPP
LOG_INF("Connecting to " << uri.getHost() << " : " << uri.getPort() << " : " << uri.getPath());
// FIXME: put this in a ClientSocket class ?
@@ -218,11 +231,10 @@ void SocketPoll::insertNewWebSocketSync(const Poco::URI &uri, const std::shared_
}
else
LOG_ERR("Failed to lookup client websocket host '" << uri.getHost() << "' skipping");
-}
-
#endif
+}
-#ifdef __linux
+#ifndef MOBILEAPP
void ServerSocket::dumpState(std::ostream& os)
{
@@ -242,11 +254,11 @@ void SocketDisposition::execute()
_socketMove = nullptr;
}
+#endif
+
const int WebSocketHandler::InitialPingDelayMs = 25;
const int WebSocketHandler::PingFrequencyMs = 18 * 1000;
-#endif
-
void WebSocketHandler::dumpState(std::ostream& os)
{
os << (_shuttingDown ? "shutd " : "alive ")
@@ -281,10 +293,9 @@ void StreamSocket::send(Poco::Net::HTTPResponse& response)
send(oss.str());
}
-#ifdef __linux
-
void SocketPoll::dumpState(std::ostream& os)
{
+#ifndef MOBILEAPP
// FIXME: NOT thread-safe! _pollSockets is modified from the polling thread!
os << " Poll [" << _pollSockets.size() << "] - wakeup r: "
<< _wakeup[0] << " w: " << _wakeup[1] << "\n";
@@ -293,8 +304,11 @@ void SocketPoll::dumpState(std::ostream& os)
os << "\tfd\tevents\trsize\twsize\n";
for (auto &i : _pollSockets)
i->dumpState(os);
+#endif
}
+#ifndef MOBILEAPP
+
/// Returns true on success only.
bool ServerSocket::bind(Type type, int port)
{
diff --git a/net/Socket.hpp b/net/Socket.hpp
index 5275ec61e..2a336f8fc 100644
--- a/net/Socket.hpp
+++ b/net/Socket.hpp
@@ -429,6 +429,7 @@ public:
/// Poll the sockets for available data to read or buffer to write.
void poll(int timeoutMaxMs)
{
+#ifndef MOBILEAPP
assertCorrectThread();
std::chrono::steady_clock::time_point now =
@@ -527,6 +528,7 @@ public:
disposition.execute();
}
+#endif
}
/// Write to a wakeup descriptor
diff --git a/net/WebSocketHandler.hpp b/net/WebSocketHandler.hpp
index 6ef1460e0..3e1faabb4 100644
--- a/net/WebSocketHandler.hpp
+++ b/net/WebSocketHandler.hpp
@@ -383,9 +383,11 @@ public:
/// 0 for closed/invalid socket, and -1 for other errors.
int sendMessage(const char* data, const size_t len, const WSOpCode code, const bool flush = true) const
{
+#ifndef MOBILEAPP
int unitReturn = -1;
if (UnitBase::get().filterSendMessage(data, len, code, flush, unitReturn))
return unitReturn;
+#endif
//TODO: Support fragmented messages.
diff --git a/wsd/Auth.hpp b/wsd/Auth.hpp
index 2ad47a3f1..1832b7868 100644
--- a/wsd/Auth.hpp
+++ b/wsd/Auth.hpp
@@ -14,7 +14,7 @@
#include <cassert>
#include <string>
-#ifdef __linux
+#ifndef MOBILEAPP
#include <Poco/Crypto/RSADigestEngine.h>
#include <Poco/Crypto/RSAKey.h>
#endif
@@ -67,7 +67,7 @@ public:
virtual bool verify(const std::string& token) = 0;
};
-#ifdef __linux
+#ifndef MOBILEAPP
/// JWT Authorization.
class JWTAuth : public AuthBase
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index 299cba324..c5b7bc1ac 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -66,10 +66,11 @@ ClientSession::~ClientSession()
void ClientSession::handleIncomingMessage(SocketDisposition &disposition)
{
+#ifndef MOBILEAPP
if (UnitWSD::get().filterHandleRequest(
UnitWSD::TestRequest::Client, disposition, *this))
return;
-
+#endif
Session::handleIncomingMessage(disposition);
}
@@ -94,6 +95,7 @@ bool ClientSession::_handleInput(const char *buffer, int length)
updateLastActivityTime();
docBroker->updateLastActivityTime();
}
+#ifndef MOBILEAPP
if (tokens[0] == "loolclient")
{
if (tokens.size() < 1)
@@ -123,7 +125,7 @@ bool ClientSession::_handleInput(const char *buffer, int length)
return true;
}
-
+#endif
if (tokens[0] == "load")
{
if (_docURL != "")
@@ -668,7 +670,9 @@ bool ClientSession::handleKitToClientMessage(const char* buffer, const int lengt
return false;
}
+#ifndef MOBILEAPP
LOOLWSD::dumpOutgoingTrace(docBroker->getJailId(), getId(), firstLine);
+#endif
const auto& tokens = payload->tokens();
if (tokens[0] == "unocommandresult:")
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 48671a0dc..b29616ec6 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -194,6 +194,8 @@ void DocumentBroker::pollThread()
_threadStart = std::chrono::steady_clock::now();
+#ifndef MOBILEAPP
+
// Request a kit process for this doc.
do
{
@@ -234,6 +236,7 @@ void DocumentBroker::pollThread()
LOG_INF("Finished docBroker polling thread for docKey [" << _docKey << "].");
return;
}
+#endif
_childProcess->setDocumentBroker(shared_from_this());
LOG_INF("Doc [" << _docKey << "] attached to child [" << _childProcess->getPid() << "].");
@@ -242,19 +245,22 @@ void DocumentBroker::pollThread()
static const size_t IdleDocTimeoutSecs = LOOLWSD::getConfigValue<int>(
"per_document.idle_timeout_secs", 3600);
+#ifndef MOBILEAPP
// Used to accumulate B/W deltas.
uint64_t adminSent = 0;
uint64_t adminRecv = 0;
auto lastBWUpdateTime = std::chrono::steady_clock::now();
+#endif
auto last30SecCheckTime = std::chrono::steady_clock::now();
// Main polling loop goodness.
while (!_stop && _poll->continuePolling() && !TerminationFlag)
{
- _poll->poll(SocketPoll::DefaultPollTimeoutMs);
-
const auto now = std::chrono::steady_clock::now();
+#ifndef MOBILEAPP
+ _poll->poll(SocketPoll::DefaultPollTimeoutMs);
+
if (std::chrono::duration_cast<std::chrono::milliseconds>
(now - lastBWUpdateTime).count() >= 5 * 1000)
{
@@ -270,6 +276,7 @@ void DocumentBroker::pollThread()
adminSent = sent;
adminRecv = recv;
}
+#endif
if (isSaving() &&
std::chrono::duration_cast<std::chrono::milliseconds>
@@ -352,8 +359,10 @@ void DocumentBroker::pollThread()
_poll->stop();
_poll->removeSockets();
+#ifndef MOBILEAPP
// Async cleanup.
LOOLWSD::doHousekeeping();
+#endif
// Remove all tiles related to this document from the cache if configured so.
if (_tileCache && !LOOLWSD::TileCachePersistent)
@@ -375,13 +384,17 @@ DocumentBroker::~DocumentBroker()
{
assertCorrectThread();
+#ifndef MOBILEAPP
Admin::instance().rmDoc(_docKey);
+#endif
LOG_INF("~DocumentBroker [" << _docKey <<
"] destroyed with " << _sessions.size() << " sessions left.");
+#ifndef MOBILEAPP
// Do this early - to avoid operating on _childProcess from two threads.
_poll->joinThread();
+#endif
if (!_sessions.empty())
{
@@ -395,7 +408,9 @@ DocumentBroker::~DocumentBroker()
void DocumentBroker::joinThread()
{
+#ifndef MOBILEAPP
_poll->joinThread();
+#endif
}
void DocumentBroker::stop(const std::string& reason)
@@ -414,11 +429,13 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
LOG_INF("Loading [" << _docKey << "] for session [" << sessionId << "] and jail [" << jailId << "].");
+#ifndef MOBILEAPP
{
bool result;
if (UnitWSD::get().filterLoad(sessionId, jailId, result))
return result;
}
+#endif
if (_markToDestroy)
{
@@ -463,6 +480,8 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
std::string userExtraInfo;
std::string watermarkText;
std::chrono::duration<double> getInfoCallDuration(0);
+
+ #ifndef MOBILEAPP
WopiStorage* wopiStorage = dynamic_cast<WopiStorage*>(_storage.get());
if (wopiStorage != nullptr)
{
@@ -532,6 +551,7 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
session->setWopiFileInfo(wopifileinfo);
}
else
+#endif
{
LocalStorage* localStorage = dynamic_cast<LocalStorage*>(_storage.get());
if (localStorage != nullptr)
@@ -601,6 +621,7 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
{
std::string localPath = _storage->loadStorageFileToLocal(session->getAuthorization());
+#ifndef MOBILEAPP
// Check if we have a prefilter "plugin" for this document format
for (const auto& plugin : LOOLWSD::PluginConfigurations)
{
@@ -652,6 +673,7 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
// This plugin is not a proper prefilter one
}
}
+#endif
std::ifstream istr(localPath, std::ios::binary);
Poco::SHA1Engine sha1;
@@ -674,6 +696,7 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
_tileCache->setThreadOwner(std::this_thread::get_id());
}
+#ifndef MOBILEAPP
LOOLWSD::dumpNewSessionTrace(getJailId(), sessionId, _uriOrig, _storage->getRootFilePath());
// Since document has been loaded, send the stats if its WOPI
@@ -687,7 +710,7 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
LOG_TRC("Sending to Client [" << msg << "].");
session->sendTextFrame(msg);
}
-
+#endif
return true;
}
@@ -973,7 +996,11 @@ bool DocumentBroker::sendUnoSave(const std::string& sessionId, bool dontTerminat
oss << "}";
assert(_storage);
- _storage->setIsAutosave(isAutosave || UnitWSD::get().isAutosave());
+ _storage->setIsAutosave(isAutosave
+#ifndef MOBILEAPP
+ || UnitWSD::get().isAutosave()
+#endif
+ );
const std::string saveArgs = oss.str();
LOG_TRC(".uno:Save arguments: " << saveArgs);
@@ -1044,8 +1071,10 @@ size_t DocumentBroker::addSessionInternal(const std::shared_ptr<ClientSession>&
const std::string aMessage = "session " + id + ' ' + _docKey + ' ' + _docId;
_childProcess->sendTextFrame(aMessage);
+#ifndef MOBILEAPP
// Tell the admin console about this new doc
Admin::instance().addDoc(_docKey, getPid(), getFilename(), id, session->getUserName(), session->getUserId());
+#endif
// Add and attach the session.
_sessions.emplace(session->getId(), session);
@@ -1098,12 +1127,15 @@ size_t DocumentBroker::removeSessionInternal(const std::string& id)
assertCorrectThread();
try
{
+#ifndef MOBILEAPP
Admin::instance().rmDoc(_docKey, id);
-
+#endif
auto it = _sessions.find(id);
if (it != _sessions.end())
{
+#ifndef MOBILEAPP
LOOLWSD::dumpEndSessionTrace(getJailId(), id, _uriOrig);
+#endif
const bool readonly = (it->second ? it->second->isReadOnly() : false);
@@ -1158,8 +1190,10 @@ void DocumentBroker::alertAllUsers(const std::string& msg)
{
assertCorrectThread();
+#ifndef MOBILEAPP
if (UnitWSD::get().filterAlertAllusers(msg))
return;
+#endif
auto payload = std::make_shared<Message>(msg, Message::Dir::Out);
@@ -1177,7 +1211,9 @@ bool DocumentBroker::handleInput(const std::vector<char>& payload)
const auto& msg = message->abbr();
LOG_TRC("DocumentBroker handling child message: [" << msg << "].");
+#ifndef MOBILEAPP
LOOLWSD::dumpOutgoingTrace(getJailId(), "0", msg);
+#endif
if (LOOLProtocol::getFirstToken(message->forwardToken(), '-') == "client")
{
@@ -1204,6 +1240,7 @@ bool DocumentBroker::handleInput(const std::vector<char>& payload)
LOG_CHECK_RET(kind != "", false);
Util::alertAllUsers(cmd, kind);
}
+#ifndef MOBILEAPP
else if (command == "procmemstats:")
{
int dirty;
@@ -1212,6 +1249,7 @@ bool DocumentBroker::handleInput(const std::vector<char>& payload)
Admin::instance().updateMemoryDirty(_docKey, dirty);
}
}
+#endif
else
{
LOG_ERR("Unexpected message: [" << msg << "].");
@@ -1555,7 +1593,9 @@ void DocumentBroker::setModified(const bool value)
if (_isModified != value)
{
_isModified = value;
+#ifndef MOBILEAPP
Admin::instance().modificationAlert(_docKey, getPid(), value);
+#endif
}
_storage->setUserModified(value);
@@ -1742,7 +1782,9 @@ void DocumentBroker::broadcastMessage(const std::string& message)
void DocumentBroker::updateLastActivityTime()
{
_lastActivityTime = std::chrono::steady_clock::now();
+#ifndef MOBILEAPP
Admin::instance().updateLastActivityTime(_docKey);
+#endif
}
void DocumentBroker::getIOStats(uint64_t &sent, uint64_t &recv)
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 8248d28d8..8f83234da 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -49,6 +49,26 @@
#include <sstream>
#include <thread>
+#ifndef MOBILEAPP
+
+#include <Poco/Net/Context.h>
+#include <Poco/Net/HTMLForm.h>
+#include <Poco/Net/HTTPRequest.h>
+#include <Poco/Net/IPAddress.h>
+#include <Poco/Net/MessageHeader.h>
+#include <Poco/Net/NameValueCollection.h>
+#include <Poco/Net/Net.h>
+#include <Poco/Net/NetException.h>
+#include <Poco/Net/PartHandler.h>
+#include <Poco/Net/SocketAddress.h>
+
+#include <ServerSocket.hpp>
+
+using Poco::Net::HTMLForm;
+using Poco::Net::PartHandler;
+
+#endif
+
#include <Poco/DOM/AutoPtr.h>
#include <Poco/DOM/DOMParser.h>
#include <Poco/DOM/DOMWriter.h>
@@ -62,16 +82,6 @@
#include <Poco/File.h>
#include <Poco/FileStream.h>
#include <Poco/MemoryStream.h>
-#include <Poco/Net/Context.h>
-#include <Poco/Net/HTMLForm.h>
-#include <Poco/Net/HTTPRequest.h>
-#include <Poco/Net/IPAddress.h>
-#include <Poco/Net/MessageHeader.h>
-#include <Poco/Net/NameValueCollection.h>
-#include <Poco/Net/Net.h>
-#include <Poco/Net/NetException.h>
-#include <Poco/Net/PartHandler.h>
-#include <Poco/Net/SocketAddress.h>
#include <Poco/Path.h>
#include <Poco/Pipe.h>
#include <Poco/Process.h>
@@ -106,7 +116,6 @@
#endif
#include <Log.hpp>
#include <Protocol.hpp>
-#include <ServerSocket.hpp>
#include <Session.hpp>
#if ENABLE_SSL
# include <SslSocket.hpp>
@@ -130,12 +139,10 @@ using Poco::DirectoryIterator;
using Poco::Environment;
using Poco::Exception;
using Poco::File;
-using Poco::Net::HTMLForm;
using Poco::Net::HTTPRequest;
using Poco::Net::HTTPResponse;
using Poco::Net::MessageHeader;
using Poco::Net::NameValueCollection;
-using Poco::Net::PartHandler;
using Poco::Path;
using Poco::Process;
using Poco::StreamCopier;
@@ -192,6 +199,28 @@ extern "C" { void dump_state(void); /* easy for gdb */ }
static int careerSpanMs = 0;
#endif
+#ifdef IOS
+#include "ios.h"
+#endif
+
+bool LOOLWSD::NoCapsForKit = false;
+bool LOOLWSD::TileCachePersistent = true;
+std::atomic<unsigned> LOOLWSD::NumConnections;
+std::string LOOLWSD::Cache = LOOLWSD_CACHEDIR;
+std::set<std::string> LOOLWSD::EditFileExtensions;
+
+#ifdef MOBILEAPP
+
+// Some dummy versions of static ember functions
+
+void LOOLWSD::dumpIncomingTrace(const std::string& id, const std::string& sessionId, const std::string& data)
+{
+}
+
+#else
+
+// Most of this file is probably not used in a mobile app. Let's see.
+
namespace
{
@@ -582,13 +611,11 @@ std::atomic<int> LOOLWSD::ForKitWritePipe(-1);
std::atomic<int> LOOLWSD::ForKitProcId(-1);
#endif
bool LOOLWSD::NoSeccomp = false;
-bool LOOLWSD::NoCapsForKit = false;
bool LOOLWSD::AdminEnabled = true;
#ifdef FUZZER
bool LOOLWSD::DummyLOK = false;
std::string LOOLWSD::FuzzFileName;
#endif
-std::string LOOLWSD::Cache = LOOLWSD_CACHEDIR;
std::string LOOLWSD::SysTemplate;
std::string LOOLWSD::LoTemplate;
std::string LOOLWSD::ChildRoot;
@@ -601,7 +628,6 @@ std::string LOOLWSD::ConfigDir = LOOLWSD_CONFIGDIR "/conf.d";
std::string LOOLWSD::LogLevel = "trace";
Util::RuntimeConstant<bool> LOOLWSD::SSLEnabled;
Util::RuntimeConstant<bool> LOOLWSD::SSLTermination;
-std::set<std::string> LOOLWSD::EditFileExtensions;
unsigned LOOLWSD::MaxConnections;
unsigned LOOLWSD::MaxDocuments;
std::string LOOLWSD::OverrideWatermark;
@@ -610,8 +636,6 @@ std::set<const Poco::Util::AbstractConfiguration*> LOOLWSD::PluginConfigurations
static std::string UnitTestLibrary;
unsigned int LOOLWSD::NumPreSpawnedChildren = 0;
-std::atomic<unsigned> LOOLWSD::NumConnections;
-bool LOOLWSD::TileCachePersistent = true;
std::unique_ptr<TraceFileWriter> LOOLWSD::TraceDumper;
/// This thread polls basic web serving, and handling of
@@ -3048,4 +3072,6 @@ void dump_state()
POCO_SERVER_MAIN(LOOLWSD)
+#endif // !MOBILEAPP
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/wsd/Storage.cpp b/wsd/Storage.cpp
index f6f8066eb..52ab41d16 100644
--- a/wsd/Storage.cpp
+++ b/wsd/Storage.cpp
@@ -22,23 +22,26 @@
#include <Poco/Exception.h>
#include <Poco/JSON/Object.h>
#include <Poco/JSON/Parser.h>
+
+#ifndef MOBILEAPP
+
+#include <Poco/Net/AcceptCertificateHandler.h>
+#include <Poco/Net/Context.h>
#include <Poco/Net/DNS.h>
#include <Poco/Net/HTTPClientSession.h>
#include <Poco/Net/HTTPRequest.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/HTTPSClientSession.h>
+#include <Poco/Net/KeyConsoleHandler.h>
#include <Poco/Net/NameValueCollection.h>
#include <Poco/Net/NetworkInterface.h>
#include <Poco/Net/SSLManager.h>
+
+#endif
+
#include <Poco/StreamCopier.h>
#include <Poco/Timestamp.h>
-// For residual Poco SSL usage.
-#include <Poco/Net/AcceptCertificateHandler.h>
-#include <Poco/Net/Context.h>
-#include <Poco/Net/KeyConsoleHandler.h>
-#include <Poco/Net/SSLManager.h>
-
#include "Auth.hpp"
#include <Common.hpp>
#include "Exceptions.hpp"
@@ -127,6 +130,8 @@ void StorageBase::initialize()
#endif
}
+#ifndef MOBILEAPP
+
bool isLocalhost(const std::string& targetHost)
{
std::string targetAddress;
@@ -165,6 +170,8 @@ bool isLocalhost(const std::string& targetHost)
return false;
}
+#endif
+
std::unique_ptr<StorageBase> StorageBase::create(const Poco::URI& uri, const std::string& jailRoot, const std::string& jailPath)
{
// FIXME: By the time this gets called we have already sent to the client three
@@ -172,6 +179,7 @@ std::unique_ptr<StorageBase> StorageBase::create(const Poco::URI& uri, const std
// here much earlier. Also, using exceptions is lame and makes understanding the code harder,
// but that is just my personal preference.
+#ifndef MOBILEAPP
std::unique_ptr<StorageBase> storage;
if (UnitWSD::get().createStorage(uri, jailRoot, jailPath, storage))
@@ -182,6 +190,10 @@ std::unique_ptr<StorageBase> StorageBase::create(const Poco::URI& uri, const std
return storage;
}
}
+#else
+ if (false)
+ ;
+#endif
else if (uri.isRelative() || uri.getScheme() == "file")
{
LOG_INF("Public URI [" << uri.toString() << "] is a file.");
@@ -215,6 +227,7 @@ std::unique_ptr<StorageBase> StorageBase::create(const Poco::URI& uri, const std
LOG_ERR("Local Storage is disabled by default. Enable in the config file or on the command-line to enable.");
}
+#ifndef MOBILEAPP
else if (WopiEnabled)
{
LOG_INF("Public URI [" << uri.toString() << "] considered WOPI.");
@@ -226,7 +239,7 @@ std::unique_ptr<StorageBase> StorageBase::create(const Poco::URI& uri, const std
LOG_ERR("No acceptable WOPI hosts found matching the target host [" << targetHost << "] in config.");
throw UnauthorizedRequestException("No acceptable WOPI hosts found matching the target host [" + targetHost + "] in config.");
}
-
+#endif
throw BadRequestException("No Storage configured or invalid URI.");
}
@@ -330,6 +343,8 @@ StorageBase::SaveResult LocalStorage::saveLocalFileToStorage(const Authorization
namespace
{
+#ifndef MOBILEAPP
+
inline
Poco::Net::HTTPClientSession* getHTTPClientSession(const Poco::URI& uri)
{
@@ -341,6 +356,8 @@ Poco::Net::HTTPClientSession* getHTTPClientSession(const Poco::URI& uri)
: new Poco::Net::HTTPClientSession(uri.getHost(), uri.getPort());
}
+#endif
+
void addStorageDebugCookie(Poco::Net::HTTPRequest& request)
{
(void) request;
@@ -380,6 +397,8 @@ Poco::Timestamp iso8601ToTimestamp(const std::string& iso8601Time, const std::st
} // anonymous namespace
+#ifndef MOBILEAPP
+
std::unique_ptr<WopiStorage::WOPIFileInfo> WopiStorage::getWOPIFileInfo(const Authorization& auth)
{
// update the access_token to the one matching to the session
@@ -749,4 +768,6 @@ StorageBase::SaveResult WebDAVStorage::saveLocalFileToStorage(const Authorizatio
return StorageBase::SaveResult(StorageBase::SaveResult::OK);
}
+#endif
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/wsd/TileCache.cpp b/wsd/TileCache.cpp
index 5f995b30d..e76d1c7db 100644
--- a/wsd/TileCache.cpp
+++ b/wsd/TileCache.cpp
@@ -150,10 +150,12 @@ std::unique_ptr<std::fstream> TileCache::lookupTile(const TileDesc& tile)
const std::string fileName = _cacheDir + "/" + cacheFileName(tile);
std::unique_ptr<std::fstream> result(new std::fstream(fileName, std::ios::in));
+
+#ifndef MOBILEAPP
UnitWSD::get().lookupTile(tile.getPart(), tile.getWidth(), tile.getHeight(),
tile.getTilePosX(), tile.getTilePosY(),
tile.getTileWidth(), tile.getTileHeight(), result);
-
+#endif
if (result && result->is_open())
{
LOG_TRC("Found cache tile: " << fileName);
More information about the Libreoffice-commits
mailing list