android: #if(n)def MOBILEAPP -> #if (!)MOBILEAPP for better reliability.

Change-Id: I5f9c9420b6c83601db1c8fdba4ae5a10b17b2107
private/mmeeks/thread-png
Jan Holesovsky 2019-02-12 12:16:40 +01:00
parent d15fc93f31
commit f76b36193d
26 changed files with 157 additions and 156 deletions

View File

@ -195,7 +195,7 @@ namespace
namespace FileUtil
{
#ifndef MOBILEAPP
#if !MOBILEAPP
void registerFileSystemForDiskSpaceChecks(const std::string& path)
{
const std::string::size_type lastSlash = path.rfind('/');
@ -245,7 +245,7 @@ namespace FileUtil
{
assert(!path.empty());
#ifndef MOBILEAPP
#if !MOBILEAPP
bool hookResult;
if (UnitBase::get().filterCheckDiskSpace(path, hookResult))
return hookResult;

View File

@ -142,7 +142,7 @@ namespace Log
Source.setName(name);
std::ostringstream oss;
oss << Source.getName();
#ifndef MOBILEAPP // Just one process in a mobile app, the pid is uninteresting.
#if !MOBILEAPP // Just one process in a mobile app, the pid is uninteresting.
oss << '-'
<< std::setw(5) << std::setfill('0') << Poco::Process::id();
#endif

View File

@ -130,7 +130,7 @@ bool encodeSubBufferToPNG(unsigned char* pixmap, size_t startX, size_t startY,
return false;
}
#ifdef MOBILEAPP
#if MOBILEAPP
png_set_compression_level(png_ptr, Z_BEST_SPEED);
#endif

View File

@ -41,7 +41,7 @@
std::atomic<bool> TerminationFlag(false);
std::atomic<bool> DumpGlobalState(false);
#ifndef MOBILEAPP
#if !MOBILEAPP
std::atomic<bool> ShutdownRequestFlag(false);
std::mutex SigHandlerTrap;

View File

@ -13,7 +13,7 @@
#include <atomic>
#include <mutex>
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Flag to commence clean shutdown
extern std::atomic<bool> ShutdownRequestFlag;
#else
@ -26,7 +26,7 @@ extern std::atomic<bool> TerminationFlag;
/// Flag to dump internal state
extern std::atomic<bool> DumpGlobalState;
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Mutex to trap signal handler, if any,
/// and prevent _Exit while collecting backtrace.

View File

@ -30,7 +30,7 @@ static Poco::Thread TimeoutThread("unit timeout");
UnitBase *UnitBase::linkAndCreateUnit(UnitType type, const std::string &unitLibPath)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
void *dlHandle = dlopen(unitLibPath.c_str(), RTLD_GLOBAL|RTLD_NOW);
if (!dlHandle)
{

View File

@ -146,7 +146,7 @@ namespace Util
return newTmp;
}
#ifndef MOBILEAPP
#if !MOBILEAPP
int getProcessThreadCount()
{
DIR *fdDir = opendir("/proc/self/task");
@ -294,7 +294,7 @@ namespace Util
return std::getenv("DISPLAY") != nullptr;
}
#ifndef MOBILEAPP
#if !MOBILEAPP
static const char *startsWith(const char *line, const char *tag)
{

View File

@ -54,7 +54,7 @@ namespace Util
/// Create randomized temporary directory
std::string createRandomTmpDir();
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Get number of threads in this process or -1 on error
int getProcessThreadCount();
@ -73,7 +73,7 @@ namespace Util
bool windowingAvailable();
#if !defined(BUILDING_TESTS) && !defined(KIT_IN_PROCESS) && !defined(MOBILEAPP)
#if !defined(BUILDING_TESTS) && !defined(KIT_IN_PROCESS) && !MOBILEAPP
/// Send a message to all clients.
void alertAllUsers(const std::string& msg);
@ -117,7 +117,7 @@ namespace Util
#endif
}
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Print given number of bytes in human-understandable form (KB,MB, etc.)
std::string getHumanizedBytes(unsigned long nBytes);

View File

@ -461,7 +461,7 @@ AS_IF([test "$ENABLE_GTKAPP" = true],
AM_CONDITIONAL([ENABLE_DEBUG], [test "$ENABLE_DEBUG" = "true"])
mobile_app=
MOBILEAPP=
MOBILEAPP=0
AC_MSG_CHECKING([Is this a mobile app])
if test "$enable_gtkapp" = "yes" -o "$enable_iosapp" = "yes" -o "$enable_androidapp"; then
AC_MSG_RESULT([Yes])

View File

@ -3,7 +3,7 @@ bin_PROGRAMS = mobile
include_paths = -I${top_srcdir}/common -I${top_srcdir}/net -I${top_srcdir}/kit -I${top_srcdir}/wsd -I${top_srcdir}
warning_flags = -Wall -Werror -Wno-parentheses -Wno-sign-compare -Wno-unused-variable -Wno-stringop-overflow
define_flags = -DMOBILEAPP
define_flags = -DMOBILEAPP=1
AM_CPPFLAGS = -pthread \
-DLOOLWSD_DATADIR='"@LOOLWSD_DATADIR@"' \

View File

@ -25,7 +25,7 @@
#include <Poco/URI.h>
#include <Poco/BinaryReader.h>
#include <Poco/Base64Decoder.h>
#ifndef MOBILEAPP
#if !MOBILEAPP
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/HTTPSClientSession.h>
#include <Poco/Net/SSLManager.h>
@ -369,7 +369,7 @@ bool ChildSession::_handleInput(const char *buffer, int length)
{
askSignatureStatus(buffer, length, tokens);
}
#ifndef MOBILEAPP
#if !MOBILEAPP
else if (tokens[0] == "uploadsigneddocument")
{
return uploadSignedDocument(buffer, length, tokens);
@ -392,7 +392,7 @@ bool ChildSession::_handleInput(const char *buffer, int length)
return true;
}
#ifndef MOBILEAPP
#if !MOBILEAPP
// add to common / tools
size_t getFileSize(const std::string& filename)
@ -948,7 +948,7 @@ bool ChildSession::insertFile(const char* /*buffer*/, int /*length*/, const std:
{
std::string name, type;
#ifndef MOBILEAPP
#if !MOBILEAPP
if (tokens.size() != 3 ||
!getTokenString(tokens[1], "name", name) ||
!getTokenString(tokens[2], "type", type))
@ -972,7 +972,7 @@ bool ChildSession::insertFile(const char* /*buffer*/, int /*length*/, const std:
{
std::string url;
#ifndef MOBILEAPP
#if !MOBILEAPP
if (type == "graphic")
url = "file://" + std::string(JAILED_DOCUMENT_ROOT) + "insertfile/" + name;
else if (type == "graphicurl")
@ -1402,7 +1402,7 @@ bool ChildSession::signDocumentContent(const char* buffer, int length, const std
return bResult;
}
#ifndef MOBILEAPP
#if !MOBILEAPP
bool ChildSession::exportSignAndUploadDocument(const char* buffer, int length, const std::vector<std::string>& /*tokens*/)
{

View File

@ -68,7 +68,7 @@
#include <Util.hpp>
#include "Delta.hpp"
#ifndef MOBILEAPP
#if !MOBILEAPP
#include <common/SigUtil.hpp>
#include <common/Seccomp.hpp>
#endif
@ -78,7 +78,7 @@
#include <wsd/LOOLWSD.hpp>
#endif
#ifdef MOBILEAPP
#if MOBILEAPP
#include "LOOLWSD.hpp"
#endif
@ -124,7 +124,7 @@ static std::string ObfuscatedFileId;
# define ADD_DEBUG_RENDERID(s) (s)
#endif
#ifndef MOBILEAPP
#if !MOBILEAPP
static LokHookFunction2* initFunction = nullptr;
@ -781,7 +781,7 @@ private:
std::vector<unsigned char> _pixmap;
};
#ifndef MOBILEAPP
#if !MOBILEAPP
static FILE* ProcSMapsFile = nullptr;
#endif
@ -934,7 +934,7 @@ public:
}
num_sessions = _sessions.size();
#ifndef MOBILEAPP
#if !MOBILEAPP
if (num_sessions == 0)
{
LOG_FTL("Document [" << anonymizeUrl(_url) << "] has no more views, exiting bluntly.");
@ -1433,7 +1433,7 @@ private:
if (viewCount == 1)
{
std::unique_lock<std::mutex> lock(_mutex);
#ifndef MOBILEAPP
#if !MOBILEAPP
if (_sessions.empty())
{
LOG_INF("Document [" << anonymizeUrl(_url) << "] has no more views, exiting bluntly.");
@ -1881,7 +1881,7 @@ private:
Util::setThreadName("lokit_" + _docId);
LOG_DBG("Thread started.");
#ifndef MOBILEAPP
#if !MOBILEAPP
// Update memory stats and editor every 5 seconds.
const int memStatsPeriodMs = 5000;
auto lastMemStatsTime = std::chrono::steady_clock::now();
@ -1894,7 +1894,7 @@ private:
const TileQueue::Payload input = _tileQueue->get(POLL_TIMEOUT_MS * 2);
if (input.empty())
{
#ifndef MOBILEAPP
#if !MOBILEAPP
auto duration = (std::chrono::steady_clock::now() - lastMemStatsTime);
std::chrono::milliseconds::rep durationMs = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
if (durationMs > memStatsPeriodMs)
@ -2124,7 +2124,7 @@ protected:
{
std::string message(data.data(), data.size());
#ifndef MOBILEAPP
#if !MOBILEAPP
if (UnitKit::get().filterKitMessage(this, message))
return;
#endif
@ -2198,7 +2198,7 @@ protected:
}
else if (tokens.size() == 3 && tokens[0] == "setconfig")
{
#ifndef MOBILEAPP
#if !MOBILEAPP
// Currently onlly rlimit entries are supported.
if (!Rlimit::handleSetrlimitCommand(tokens))
{
@ -2214,7 +2214,7 @@ protected:
void onDisconnect() override
{
#ifndef MOBILEAPP
#if !MOBILEAPP
LOG_WRN("Kit connection lost without exit arriving from wsd. Setting TerminationFlag");
TerminationFlag = true;
#endif
@ -2229,7 +2229,7 @@ void documentViewCallback(const int type, const char* payload, void* data)
#ifndef BUILDING_TESTS
void lokit_main(
#ifndef MOBILEAPP
#if !MOBILEAPP
const std::string& childRoot,
const std::string& jailId,
const std::string& sysTemplate,
@ -2245,7 +2245,7 @@ void lokit_main(
#endif
)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
#ifndef FUZZER
SigUtil::setFatalSignals();
@ -2303,7 +2303,7 @@ void lokit_main(
try
{
#ifndef MOBILEAPP
#if !MOBILEAPP
jailPath = Path::forDirectory(childRoot + "/" + jailId);
LOG_INF("Jail path: " << jailPath.toString());
File(jailPath).createDirectories();
@ -2524,7 +2524,7 @@ void lokit_main(
SocketPoll mainKit("kit");
mainKit.runOnClientThread(); // We will do the polling on this thread.
#ifndef MOBILEAPP
#if !MOBILEAPP
mainKit.insertNewWebSocketSync(uri, std::make_shared<KitWebSocketHandler>("child_ws_" + pid, loKit, jailId, mainKit));
#else
mainKit.insertNewWebSocketSync(docBrokerSocket, std::make_shared<KitWebSocketHandler>("child_ws_" + pid, loKit, jailId, mainKit));
@ -2532,7 +2532,7 @@ void lokit_main(
LOG_INF("New kit client websocket inserted.");
#ifndef MOBILEAPP
#if !MOBILEAPP
if (bTraceStartup && LogLevel != "trace")
{
LOG_INF("Kit initialization complete: setting log-level to [" << LogLevel << "] as configured.");
@ -2544,7 +2544,7 @@ void lokit_main(
{
mainKit.poll(SocketPoll::DefaultPollTimeoutMs);
#ifndef MOBILEAPP
#if !MOBILEAPP
if (document && document->purgeSessions() == 0)
{
LOG_INF("Last session discarded. Setting TerminationFlag");
@ -2555,7 +2555,7 @@ void lokit_main(
LOG_INF("Kit poll terminated.");
#ifdef MOBILEAPP
#if MOBILEAPP
SocketPoll::wakeupWorld();
#endif
@ -2571,7 +2571,7 @@ void lokit_main(
LOG_ERR("Exception: " << exc.what());
}
#ifndef MOBILEAPP
#if !MOBILEAPP
// Trap the signal handler, if invoked,
// to prevent exiting.
@ -2593,7 +2593,7 @@ std::string anonymizeUrl(const std::string& url)
#endif
}
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Initializes LibreOfficeKit for cross-fork re-use.
bool globalPreinit(const std::string &loTemplate)

View File

@ -14,7 +14,7 @@
#include <common/Util.hpp>
#ifdef MOBILEAPP
#if MOBILEAPP
#include "ClientSession.hpp"
#include "DocumentBroker.hpp"
@ -23,7 +23,7 @@
#endif
void lokit_main(
#ifndef MOBILEAPP
#if !MOBILEAPP
const std::string& childRoot,
const std::string& jailId,
const std::string& sysTemplate,

View File

@ -10,7 +10,7 @@
#ifndef INCLUDED_FAKESOCKET_H
#define INCLUDED_FAKESOCKET_H
#ifdef MOBILEAPP
#if MOBILEAPP
#include <string>

View File

@ -47,7 +47,7 @@ public:
/// Returns true on success only.
bool listen(const int backlog = 64)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
const int rc = ::listen(getFD(), backlog);
#else
const int rc = fakeSocketListen(getFD());
@ -64,7 +64,7 @@ public:
{
// Accept a connection (if any) and set it to non-blocking.
// There still need the client's address to filter request from POST(call from REST) here.
#ifndef MOBILEAPP
#if !MOBILEAPP
struct sockaddr_in6 clientInfo;
socklen_t addrlen = sizeof(clientInfo);
const int rc = ::accept4(getFD(), (struct sockaddr *)&clientInfo, &addrlen, SOCK_NONBLOCK);
@ -77,7 +77,7 @@ public:
// Create a socket object using the factory.
if (rc != -1)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
char addrstr[INET6_ADDRSTRLEN];
const void *inAddr;

View File

@ -28,7 +28,7 @@
#include <SigUtil.hpp>
#include "ServerSocket.hpp"
#ifndef MOBILEAPP
#if !MOBILEAPP
#include "SslSocket.hpp"
#endif
#include "WebSocketHandler.hpp"
@ -39,7 +39,7 @@ std::atomic<bool> Socket::InhibitThreadChecks(false);
int Socket::createSocket(Socket::Type type)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
int domain = type == Type::IPv4 ? AF_INET : AF_INET6;
return socket(domain, SOCK_STREAM | SOCK_NONBLOCK, 0);
#else
@ -71,7 +71,7 @@ SocketPoll::SocketPoll(const std::string& threadName)
{
// Create the wakeup fd.
if (
#ifndef MOBILEAPP
#if !MOBILEAPP
::pipe2(_wakeup, O_CLOEXEC | O_NONBLOCK) == -1
#else
fakeSocketPipe2(_wakeup) == -1
@ -99,7 +99,7 @@ SocketPoll::~SocketPoll()
getWakeupsArray().erase(it);
}
#ifndef MOBILEAPP
#if !MOBILEAPP
::close(_wakeup[0]);
::close(_wakeup[1]);
#else
@ -190,14 +190,14 @@ void SocketPoll::wakeupWorld()
}
void SocketPoll::insertNewWebSocketSync(
#ifndef MOBILEAPP
#if !MOBILEAPP
const Poco::URI &uri,
#else
int peerSocket,
#endif
const std::shared_ptr<SocketHandlerInterface>& websocketHandler)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
LOG_INF("Connecting to " << uri.getHost() << " : " << uri.getPort() << " : " << uri.getPath());
// FIXME: put this in a ClientSocket class ?
@ -380,7 +380,7 @@ void SocketPoll::dumpState(std::ostream& os)
/// Returns true on success only.
bool ServerSocket::bind(Type type, int port)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
// Enable address reuse to avoid stalling after
// recycling, when previous socket is TIME_WAIT.
//TODO: Might be worth refactoring out.
@ -430,7 +430,7 @@ bool ServerSocket::bind(Type type, int port)
#endif
}
#ifndef MOBILEAPP
#if !MOBILEAPP
bool StreamSocket::parseHeader(const char *clientName,
Poco::MemoryInputStream &message,

View File

@ -116,7 +116,7 @@ public:
LOG_TRC("#" << getFD() << " Socket dtor.");
// Doesn't block on sockets; no error handling needed.
#ifndef MOBILEAPP
#if !MOBILEAPP
::close(_fd);
#else
fakeSocketClose(_fd);
@ -144,7 +144,7 @@ public:
virtual void shutdown()
{
LOG_TRC("#" << _fd << ": socket shutdown RDWR.");
#ifndef MOBILEAPP
#if !MOBILEAPP
::shutdown(_fd, SHUT_RDWR);
#else
fakeSocketShutdown(_fd);
@ -165,14 +165,14 @@ public:
/// manage latency issues around packet aggregation
void setNoDelay()
{
#ifndef MOBILEAPP
#if !MOBILEAPP
const int val = 1;
::setsockopt(_fd, IPPROTO_TCP, TCP_NODELAY,
(char *) &val, sizeof(val));
#endif
}
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Sets the kernel socket send buffer in size bytes.
/// Note: TCP will allocate twice this size for admin purposes,
/// so a subsequent call to getSendBufferSize will return
@ -218,14 +218,14 @@ public:
/// Gets our fast cache of the socket buffer size
int getSendBufferSize() const
{
#ifndef MOBILEAPP
#if !MOBILEAPP
return _sendBufferSize;
#else
return INT_MAX; // We want to always send a single record in one go
#endif
}
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Sets the receive buffer size in bytes.
/// Note: TCP will allocate twice this size for admin purposes,
/// so a subsequent call to getReceieveBufferSize will return
@ -318,7 +318,7 @@ protected:
_owner = std::this_thread::get_id();
LOG_DBG("#" << _fd << " Thread affinity set to " << Log::to_string(_owner) << ".");
#ifndef MOBILEAPP
#if !MOBILEAPP
#if ENABLE_DEBUG
if (std::getenv("LOOL_ZERO_BUFFER_SIZE"))
{
@ -401,7 +401,7 @@ public:
{
LOG_DBG("Stopping " << _name << ".");
_stop = true;
#ifdef MOBILEAPP
#if MOBILEAPP
{
// We don't want to risk some callbacks in _newCallbacks being invoked when we start
// running a thread for this SocketPoll again.
@ -485,7 +485,7 @@ public:
int rc;
do
{
#ifndef MOBILEAPP
#if !MOBILEAPP
rc = ::poll(&_pollFds[0], size + 1, std::max(timeoutMaxMs,0));
#else
LOG_TRC("SocketPoll Poll");
@ -504,7 +504,7 @@ public:
std::lock_guard<std::mutex> lock(_mutex);
// Clear the data.
#ifndef MOBILEAPP
#if !MOBILEAPP
int dump = ::read(_wakeup[0], &dump, sizeof(dump));
#else
LOG_TRC("Wakeup pipe read");
@ -588,7 +588,7 @@ public:
// wakeup the main-loop.
int rc;
do {
#ifndef MOBILEAPP
#if !MOBILEAPP
rc = ::write(fd, "w", 1);
#else
#if 0
@ -645,7 +645,7 @@ public:
/// Inserts a new websocket to be polled.
/// NOTE: The DNS lookup is synchronous.
void insertNewWebSocketSync(
#ifndef MOBILEAPP
#if !MOBILEAPP
const Poco::URI &uri,
#else
int peerSocket,
@ -864,7 +864,7 @@ public:
{
assertCorrectThread();
#ifndef MOBILEAPP
#if !MOBILEAPP
// SSL decodes blocks of 16Kb, so for efficiency we use the same.
char buf[16 * 1024];
ssize_t len;
@ -1081,7 +1081,7 @@ protected:
virtual int readData(char* buf, int len)
{
assertCorrectThread();
#ifndef MOBILEAPP
#if !MOBILEAPP
return ::read(getFD(), buf, len);
#else
return fakeSocketRead(getFD(), buf, len);
@ -1092,7 +1092,7 @@ protected:
virtual int writeData(const char* buf, const int len)
{
assertCorrectThread();
#ifndef MOBILEAPP
#if !MOBILEAPP
return ::write(getFD(), buf, len);
#else
struct pollfd p;

View File

@ -113,7 +113,7 @@ public:
static_cast<unsigned>(statusCode) << ", message: " << statusMessage);
_shuttingDown = true;
#ifndef MOBILEAPP
#if !MOBILEAPP
const size_t len = statusMessage.size();
std::vector<char> buf(2 + len);
buf[0] = ((((int)statusCode) >> 8) & 0xff);
@ -136,7 +136,7 @@ public:
if (len == 0)
return false; // avoid logging.
#ifndef MOBILEAPP
#if !MOBILEAPP
if (len < 2) // partial read
{
LOG_TRC("#" << socket->getFD() << ": Still incomplete WebSocket message, have " << len << " bytes");
@ -215,7 +215,7 @@ public:
socket->getInBuffer().erase(socket->getInBuffer().begin(), socket->getInBuffer().begin() + headerLen + payloadLen);
#ifndef MOBILEAPP
#if !MOBILEAPP
// FIXME: fin, aggregating payloads into _wsPayload etc.
LOG_TRC("#" << socket->getFD() << ": Incoming WebSocket message code " << static_cast<unsigned>(code) <<
@ -270,7 +270,7 @@ public:
#endif
#ifndef MOBILEAPP
#if !MOBILEAPP
if (doClose)
{
if (!_shuttingDown)
@ -312,7 +312,7 @@ public:
std::shared_ptr<StreamSocket> socket = _socket.lock();
#ifdef MOBILEAPP
#if MOBILEAPP
// No separate "upgrade" is going on
if (socket != nullptr && !socket->isWebSocket())
socket->setWebSocket();
@ -322,7 +322,7 @@ public:
{
LOG_ERR("No socket associated with WebSocketHandler " << this);
}
#ifndef MOBILEAPP
#if !MOBILEAPP
else if (_isClient && !socket->isWebSocket())
handleClientUpgrade();
#endif
@ -345,7 +345,7 @@ public:
return POLLIN;
}
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Send a ping message
void sendPingOrPong(std::chrono::steady_clock::time_point now,
const char* data, const size_t len,
@ -388,7 +388,7 @@ public:
/// Do we need to handle a timeout ?
void checkTimeout(std::chrono::steady_clock::time_point now) override
{
#ifndef MOBILEAPP
#if !MOBILEAPP
if (_isClient)
return;
@ -445,7 +445,7 @@ private:
socket->assertCorrectThread();
std::vector<char>& out = socket->getOutBuffer();
#ifndef MOBILEAPP
#if !MOBILEAPP
const size_t oldSize = out.size();
out.push_back(flags);
@ -551,7 +551,7 @@ protected:
LOG_TRC("#" << socket->getFD() << ": Upgrading to WebSocket.");
assert(!socket->isWebSocket());
#ifndef MOBILEAPP
#if !MOBILEAPP
// create our websocket goodness ...
const int wsVersion = std::stoi(req.get("Sec-WebSocket-Version", "13"));
const std::string wsKey = req.get("Sec-WebSocket-Key", "");
@ -579,7 +579,7 @@ protected:
setWebSocket();
}
#ifndef MOBILEAPP
#if !MOBILEAPP
// Handle incoming upgrade to full socket as client WS.
void handleClientUpgrade()
{

View File

@ -25,8 +25,9 @@
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#define MOBILEAPP // A bit ugly, but currently FakeSocket.hpp is surrounded by a MOBILEAPP ifdef,
// and probably it is not a good idea to remove that?
#undef MOBILEAPP
#define MOBILEAPP 1 // A bit ugly, but currently FakeSocket.hpp is surrounded by a MOBILEAPP ifdef,
// and probably it is not a good idea to remove that?
#include "FakeSocket.hpp"
class FakeSocketTest : public CPPUNIT_NS::TestFixture

View File

@ -14,7 +14,7 @@
#include <cassert>
#include <string>
#ifndef MOBILEAPP
#if !MOBILEAPP
#include <Poco/Crypto/RSADigestEngine.h>
#include <Poco/Crypto/RSAKey.h>
#endif
@ -33,7 +33,7 @@ public:
virtual bool verify(const std::string& token) = 0;
};
#ifndef MOBILEAPP
#if !MOBILEAPP
/// JWT Authorization.
class JWTAuth : public AuthBase

View File

@ -683,7 +683,7 @@ bool ClientSession::handleKitToClientMessage(const char* buffer, const int lengt
return false;
}
#ifndef MOBILEAPP
#if !MOBILEAPP
LOOLWSD::dumpOutgoingTrace(docBroker->getJailId(), getId(), firstLine);
#endif
@ -774,7 +774,7 @@ bool ClientSession::handleKitToClientMessage(const char* buffer, const int lengt
return false;
}
}
#ifndef MOBILEAPP
#if !MOBILEAPP
else if (tokens.size() == 3 && tokens[0] == "saveas:")
{
bool isConvertTo = static_cast<bool>(_saveAsSocket);

View File

@ -210,7 +210,7 @@ void DocumentBroker::pollThread()
_threadStart = std::chrono::steady_clock::now();
// Request a kit process for this doc.
#ifndef MOBILEAPP
#if !MOBILEAPP
do
{
static const int timeoutMs = COMMAND_TIMEOUT_MS * 5;
@ -260,7 +260,7 @@ void DocumentBroker::pollThread()
static const size_t IdleDocTimeoutSecs = LOOLWSD::getConfigValue<int>(
"per_document.idle_timeout_secs", 3600);
#ifndef MOBILEAPP
#if !MOBILEAPP
// Used to accumulate B/W deltas.
uint64_t adminSent = 0;
uint64_t adminRecv = 0;
@ -278,7 +278,7 @@ void DocumentBroker::pollThread()
const auto now = std::chrono::steady_clock::now();
#ifndef MOBILEAPP
#if !MOBILEAPP
if (!_isLoaded && (limit_load_secs > 0) && (now > loadDeadline))
{
// Brutal but effective.
@ -386,7 +386,7 @@ void DocumentBroker::pollThread()
_poll->stop();
_poll->removeSockets();
#ifndef MOBILEAPP
#if !MOBILEAPP
// Async cleanup.
LOOLWSD::doHousekeeping();
#endif
@ -411,7 +411,7 @@ DocumentBroker::~DocumentBroker()
{
assertCorrectThread();
#ifndef MOBILEAPP
#if !MOBILEAPP
Admin::instance().rmDoc(_docKey);
#endif
@ -499,7 +499,7 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
std::string userExtraInfo;
std::string watermarkText;
#ifndef MOBILEAPP
#if !MOBILEAPP
std::chrono::duration<double> getInfoCallDuration(0);
WopiStorage* wopiStorage = dynamic_cast<WopiStorage*>(_storage.get());
@ -655,7 +655,7 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
{
std::string localPath = _storage->loadStorageFileToLocal(session->getAuthorization());
#ifndef MOBILEAPP
#if !MOBILEAPP
// Check if we have a prefilter "plugin" for this document format
for (const auto& plugin : LOOLWSD::PluginConfigurations)
{
@ -731,7 +731,7 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
_tileCache->setThreadOwner(std::this_thread::get_id());
}
#ifndef MOBILEAPP
#if !MOBILEAPP
LOOLWSD::dumpNewSessionTrace(getJailId(), sessionId, _uriOrig, _storage->getRootFilePath());
// Since document has been loaded, send the stats if its WOPI
@ -1131,7 +1131,7 @@ size_t DocumentBroker::addSessionInternal(const std::shared_ptr<ClientSession>&
const std::string aMessage = "session " + id + ' ' + _docKey + ' ' + _docId;
_childProcess->sendTextFrame(aMessage);
#ifndef MOBILEAPP
#if !MOBILEAPP
// Tell the admin console about this new doc
Admin::instance().addDoc(_docKey, getPid(), getFilename(), id, session->getUserName(), session->getUserId());
#endif
@ -1187,13 +1187,13 @@ size_t DocumentBroker::removeSessionInternal(const std::string& id)
assertCorrectThread();
try
{
#ifndef MOBILEAPP
#if !MOBILEAPP
Admin::instance().rmDoc(_docKey, id);
#endif
auto it = _sessions.find(id);
if (it != _sessions.end())
{
#ifndef MOBILEAPP
#if !MOBILEAPP
LOOLWSD::dumpEndSessionTrace(getJailId(), id, _uriOrig);
#endif
@ -1269,7 +1269,7 @@ bool DocumentBroker::handleInput(const std::vector<char>& payload)
const auto& msg = message->abbr();
LOG_TRC("DocumentBroker handling child message: [" << msg << "].");
#ifndef MOBILEAPP
#if !MOBILEAPP
LOOLWSD::dumpOutgoingTrace(getJailId(), "0", msg);
#endif
@ -1298,7 +1298,7 @@ bool DocumentBroker::handleInput(const std::vector<char>& payload)
LOG_CHECK_RET(kind != "", false);
Util::alertAllUsers(cmd, kind);
}
#ifndef MOBILEAPP
#if !MOBILEAPP
else if (command == "procmemstats:")
{
int dirty;
@ -1680,7 +1680,7 @@ void DocumentBroker::setModified(const bool value)
if (_isModified != value)
{
_isModified = value;
#ifndef MOBILEAPP
#if !MOBILEAPP
Admin::instance().modificationAlert(_docKey, getPid(), value);
#endif
}
@ -1870,7 +1870,7 @@ void DocumentBroker::broadcastMessage(const std::string& message)
void DocumentBroker::updateLastActivityTime()
{
_lastActivityTime = std::chrono::steady_clock::now();
#ifndef MOBILEAPP
#if !MOBILEAPP
Admin::instance().updateLastActivityTime(_docKey);
#endif
}

View File

@ -129,7 +129,7 @@ public:
if (_pid < 0)
return;
#ifndef MOBILEAPP
#if !MOBILEAPP
if (::kill(_pid, 0) == 0)
{
LOG_INF("Killing child [" << _pid << "].");
@ -176,7 +176,7 @@ public:
/// time after the other end-point closes. So this isn't accurate.
bool isAlive() const
{
#ifndef MOBILEAPP
#if !MOBILEAPP
try
{
return _pid > 1 && _ws && ::kill(_pid, 0) == 0;

View File

@ -49,7 +49,7 @@
#include <sstream>
#include <thread>
#ifndef MOBILEAPP
#if !MOBILEAPP
#include <Poco/Net/Context.h>
#include <Poco/Net/HTMLForm.h>
@ -111,7 +111,7 @@ using Poco::Net::PartHandler;
#include "FileServer.hpp"
#include <FileUtil.hpp>
#include <IoUtil.hpp>
#if defined KIT_IN_PROCESS || defined MOBILEAPP
#if defined KIT_IN_PROCESS || MOBILEAPP
# include <Kit.hpp>
#endif
#include <Log.hpp>
@ -135,7 +135,7 @@ using Poco::Net::PartHandler;
#include <ServerSocket.hpp>
#ifdef MOBILEAPP
#if MOBILEAPP
#ifdef IOS
#include "ios.h"
#elif GTKAPP
@ -213,7 +213,7 @@ std::atomic<unsigned> LOOLWSD::NumConnections;
std::string LOOLWSD::Cache = LOOLWSD_CACHEDIR;
std::set<std::string> LOOLWSD::EditFileExtensions;
#ifdef MOBILEAPP
#if MOBILEAPP
// Or can this be retreieved in some other way?
int LOOLWSD::prisonerServerSocketFD;
@ -255,7 +255,7 @@ inline void shutdownLimitReached(WebSocketHandler& ws)
inline void checkSessionLimitsAndWarnClients()
{
#ifndef MOBILEAPP
#if !MOBILEAPP
if (DocBrokers.size() > LOOLWSD::MaxDocuments || LOOLWSD::NumConnections >= LOOLWSD::MaxConnections)
{
@ -274,7 +274,7 @@ inline void checkSessionLimitsAndWarnClients()
#endif
}
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Internal implementation to alert all clients
/// connected to any document.
void alertAllUsersInternal(const std::string& msg)
@ -297,7 +297,7 @@ void alertAllUsersInternal(const std::string& msg)
static void checkDiskSpaceAndWarnClients(const bool cacheLastCheck)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
try
{
const std::string fs = FileUtil::checkDiskSpaceOnRegisteredFileSystems(cacheLastCheck);
@ -355,7 +355,7 @@ void cleanupDocBrokers()
}
}
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Forks as many children as requested.
/// Returns the number of children requested to spawn,
@ -479,7 +479,7 @@ static size_t addNewChild(const std::shared_ptr<ChildProcess>& child)
}
std::shared_ptr<ChildProcess> getNewChild_Blocks(
#ifdef MOBILEAPP
#if MOBILEAPP
const std::string& uri
#endif
)
@ -488,7 +488,7 @@ std::shared_ptr<ChildProcess> getNewChild_Blocks(
const auto startTime = std::chrono::steady_clock::now();
#ifndef MOBILEAPP
#if !MOBILEAPP
LOG_DBG("getNewChild: Rebalancing children.");
int numPreSpawn = LOOLWSD::NumPreSpawnedChildren;
++numPreSpawn; // Replace the one we'll dispatch just now.
@ -558,7 +558,7 @@ std::shared_ptr<ChildProcess> getNewChild_Blocks(
return nullptr;
}
#ifndef MOBILEAPP
#if !MOBILEAPP
/// Handles the filename part of the convert-to POST request payload.
class ConvertToPartHandler : public PartHandler
@ -735,7 +735,7 @@ LOOLWSD::~LOOLWSD()
void LOOLWSD::initialize(Application& self)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
if (geteuid() == 0)
{
throw std::runtime_error("Do not run as root. Please run as lool user.");
@ -827,7 +827,7 @@ void LOOLWSD::initialize(Application& self)
AutoPtr<AppConfigMap> defConfig(new AppConfigMap(DefAppConfig));
conf.addWriteable(defConfig, PRIO_SYSTEM); // Lowest priority
#ifndef MOBILEAPP
#if !MOBILEAPP
// Load default configuration files, if present.
if (loadConfiguration(PRIO_DEFAULT) == 0)
@ -1019,7 +1019,7 @@ void LOOLWSD::initialize(Application& self)
}
LOG_INF("NumPreSpawnedChildren set to " << NumPreSpawnedChildren << ".");
#ifndef MOBILEAPP
#if !MOBILEAPP
const auto maxConcurrency = getConfigValue<int>(conf, "per_document.max_concurrency", 4);
if (maxConcurrency > 0)
{
@ -1129,13 +1129,13 @@ void LOOLWSD::initialize(Application& self)
TraceDumper.reset(new TraceFileWriter(path, recordOutgoing, compress, takeSnapshot, filters));
}
#ifndef MOBILEAPP
#if !MOBILEAPP
FileServerRequestHandler::initialize();
#endif
StorageBase::initialize();
#ifndef MOBILEAPP
#if !MOBILEAPP
ServerApplication::initialize(self);
DocProcSettings docProcSettings;
@ -1243,7 +1243,7 @@ void LOOLWSD::dumpOutgoingTrace(const std::string& id, const std::string& sessio
void LOOLWSD::defineOptions(OptionSet& optionSet)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
ServerApplication::defineOptions(optionSet);
optionSet.addOption(Option("help", "", "Display help information on command line arguments.")
@ -1307,7 +1307,7 @@ void LOOLWSD::defineOptions(OptionSet& optionSet)
void LOOLWSD::handleOption(const std::string& optionName,
const std::string& value)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
ServerApplication::handleOption(optionName, value);
if (optionName == "help")
@ -1360,7 +1360,7 @@ void LOOLWSD::handleOption(const std::string& optionName,
#endif
}
#ifndef MOBILEAPP
#if !MOBILEAPP
void LOOLWSD::displayHelp()
{
@ -1493,7 +1493,7 @@ void LOOLWSD::autoSave(const std::string& docKey)
/// Really do the house-keeping
void PrisonerPoll::wakeupHook()
{
#ifndef MOBILEAPP
#if !MOBILEAPP
if (!LOOLWSD::checkAndRestoreForKit())
{
// No children have died.
@ -1529,7 +1529,7 @@ void PrisonerPoll::wakeupHook()
cleanupDocBrokers();
}
#ifndef MOBILEAPP
#if !MOBILEAPP
bool LOOLWSD::createForKit()
{
@ -1812,7 +1812,7 @@ private:
try
{
#ifndef MOBILEAPP
#if !MOBILEAPP
size_t requestSize = 0;
if (!socket->parseHeader("Prisoner", message, request, &requestSize))
@ -2020,7 +2020,7 @@ private:
// LOG_TRC("***** ClientRequestDispatcher::handleIncomingMessage()");
std::shared_ptr<StreamSocket> socket = _socket.lock();
#ifndef MOBILEAPP
#if !MOBILEAPP
if (!LOOLWSD::isSSLEnabled() && socket->sniffSSL())
{
LOG_ERR("Looks like SSL/TLS traffic on plain http port");
@ -2171,7 +2171,7 @@ private:
{
}
#ifndef MOBILEAPP
#if !MOBILEAPP
void handleFileServerRequest(const Poco::Net::HTTPRequest& request, Poco::MemoryInputStream& message)
{
std::shared_ptr<StreamSocket> socket = _socket.lock();
@ -2713,7 +2713,7 @@ private:
/// Process the discovery.xml file and return as string.
static std::string getDiscoveryXML()
{
#if defined __linux && defined MOBILEAPP
#if defined __linux && MOBILEAPP
// discovery.xml is in the top directory
std::string discoveryPath = Path(Application::instance().commandPath()).parent().parent().toString() + "discovery.xml";
#else
@ -2809,7 +2809,7 @@ class PlainSocketFactory final : public SocketFactory
std::shared_ptr<Socket> create(const int physicalFd) override
{
int fd = physicalFd;
#ifndef MOBILEAPP
#if !MOBILEAPP
if (SimulatedLatencyMs > 0)
fd = Delay::create(SimulatedLatencyMs, physicalFd);
#endif
@ -2828,7 +2828,7 @@ class SslSocketFactory final : public SocketFactory
{
int fd = physicalFd;
#ifndef MOBILEAPP
#if !MOBILEAPP
if (SimulatedLatencyMs > 0)
fd = Delay::create(SimulatedLatencyMs, physicalFd);
#endif
@ -2884,13 +2884,13 @@ public:
std::shared_ptr<ServerSocket> serverSocket(findServerPort(port));
_acceptPoll.insertNewSocket(serverSocket);
#ifdef MOBILEAPP
#if MOBILEAPP
loolwsd_server_socket_fd = serverSocket->getFD();
#endif
WebServerPoll.startThread();
#ifndef MOBILEAPP
#if !MOBILEAPP
Admin::instance().start();
#endif
}
@ -2929,7 +2929,7 @@ public:
os << "Prisoner poll:\n";
PrisonerPoll.dumpState(os);
#ifndef MOBILEAPP
#if !MOBILEAPP
os << "Admin poll:\n";
Admin::instance().dumpState(os);
@ -3010,7 +3010,7 @@ private:
}
MasterPortNumber = port;
#ifndef MOBILEAPP
#if !MOBILEAPP
LOG_INF("Listening to prisoner connections on port " << port);
#else
LOOLWSD::prisonerServerSocketFD = socket->getFD();
@ -3052,7 +3052,7 @@ private:
ClientPortNumber = port;
#ifndef MOBILEAPP
#if !MOBILEAPP
LOG_INF("Listening to client connections on port " << port);
#else
LOG_INF("Listening to client connections on #" << socket->getFD());
@ -3065,7 +3065,7 @@ static LOOLWSDServer srv;
int LOOLWSD::innerMain()
{
#if !defined FUZZER && !defined MOBILEAPP
#if !defined FUZZER && !MOBILEAPP
SigUtil::setUserSignals();
SigUtil::setFatalSignals();
SigUtil::setTerminationSignals();
@ -3075,7 +3075,7 @@ int LOOLWSD::innerMain()
// down-pay all the forkit linking cost once & early.
Environment::set("LD_BIND_NOW", "1");
#ifndef MOBILEAPP
#if !MOBILEAPP
if (DisplayVersion)
{
std::string version, hash;
@ -3091,7 +3091,7 @@ int LOOLWSD::innerMain()
::setenv("LC_ALL", "en_US.UTF-8", 1);
setlocale(LC_ALL, "en_US.UTF-8");
#ifndef MOBILEAPP
#if !MOBILEAPP
if (access(Cache.c_str(), R_OK | W_OK | X_OK) != 0)
{
const auto err = "Unable to access cache [" + Cache +
@ -3142,7 +3142,7 @@ int LOOLWSD::innerMain()
srv.startPrisoners(MasterPortNumber);
// No need to "have at least one child" beforehand on mobile
#ifndef MOBILEAPP
#if !MOBILEAPP
#ifndef KIT_IN_PROCESS
{
@ -3266,7 +3266,7 @@ int LOOLWSD::innerMain()
DocBrokers.clear();
#if !defined(KIT_IN_PROCESS) && !defined(MOBILEAPP)
#if !defined(KIT_IN_PROCESS) && !MOBILEAPP
// Terminate child processes
LOG_INF("Requesting forkit process " << ForKitProcId << " to terminate.");
SigUtil::killChild(ForKitProcId);
@ -3281,7 +3281,7 @@ int LOOLWSD::innerMain()
child->terminate();
}
#ifndef MOBILEAPP
#if !MOBILEAPP
#ifndef KIT_IN_PROCESS
// Wait for forkit process finish.
LOG_INF("Waiting for forkit process to exit");
@ -3307,7 +3307,7 @@ int LOOLWSD::innerMain()
void LOOLWSD::cleanup()
{
#ifndef MOBILEAPP
#if !MOBILEAPP
FileServerRequestHandler::uninitialize();
#if ENABLE_SSL
@ -3324,7 +3324,7 @@ void LOOLWSD::cleanup()
int LOOLWSD::main(const std::vector<std::string>& /*args*/)
{
#ifdef MOBILEAPP
#if MOBILEAPP
TerminationFlag = false;
#endif
@ -3346,14 +3346,14 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
LOG_INF("Process [loolwsd] finished.");
#ifdef MOBILEAPP
#if MOBILEAPP
fakeSocketDumpState();
#endif
return returnValue;
}
#ifndef MOBILEAPP
#if !MOBILEAPP
void UnitWSD::testHandleRequest(TestRequest type, UnitHTTPServerRequest& /* request */, UnitHTTPServerResponse& /* response */)
{
@ -3412,7 +3412,7 @@ void dump_state()
LOG_TRC(msg);
}
#ifndef MOBILEAPP
#if !MOBILEAPP
POCO_SERVER_MAIN(LOOLWSD)

View File

@ -29,7 +29,7 @@ class TraceFileWriter;
class DocumentBroker;
std::shared_ptr<ChildProcess> getNewChild_Blocks(
#ifdef MOBILEAPP
#if MOBILEAPP
const std::string& uri
#endif
);
@ -248,7 +248,7 @@ private:
/// Settings passed from the command-line to override those in the config file.
std::map<std::string, std::string> _overrideSettings;
#ifdef MOBILEAPP
#if MOBILEAPP
public:
static int prisonerServerSocketFD;
#endif

View File

@ -24,7 +24,7 @@
#include <Poco/JSON/Object.h>
#include <Poco/JSON/Parser.h>
#ifndef MOBILEAPP
#if !MOBILEAPP
#include <Poco/Net/AcceptCertificateHandler.h>
#include <Poco/Net/Context.h>
@ -59,7 +59,7 @@ bool StorageBase::FilesystemEnabled;
bool StorageBase::WopiEnabled;
Util::RegexListMatcher StorageBase::WopiHosts;
#ifndef MOBILEAPP
#if !MOBILEAPP
std::string StorageBase::getLocalRootPath() const
{
@ -86,7 +86,7 @@ size_t StorageBase::getFileSize(const std::string& filename)
void StorageBase::initialize()
{
#ifndef MOBILEAPP
#if !MOBILEAPP
const auto& app = Poco::Util::Application::instance();
FilesystemEnabled = app.config().getBool("storage.filesystem[@allow]", false);
@ -146,7 +146,7 @@ bool StorageBase::allowedWopiHost(const std::string& host)
return WopiEnabled && WopiHosts.match(host);
}
#ifndef MOBILEAPP
#if !MOBILEAPP
bool isLocalhost(const std::string& targetHost)
{
@ -238,7 +238,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
#if !MOBILEAPP
else if (WopiEnabled)
{
LOG_INF("Public URI [" << LOOLWSD::anonymizeUrl(uri.toString()) << "] considered WOPI.");
@ -274,7 +274,7 @@ std::unique_ptr<LocalStorage::LocalFileInfo> LocalStorage::getLocalFileInfo()
std::string LocalStorage::loadStorageFileToLocal(const Authorization& /*auth*/)
{
#ifndef MOBILEAPP
#if !MOBILEAPP
// /chroot/jailId/user/doc/childId/file.ext
const std::string filename = Poco::Path(getUri().getPath()).getFileName();
setRootFilePath(Poco::Path(getLocalRootPath(), filename).toString());
@ -363,7 +363,7 @@ StorageBase::SaveResult LocalStorage::saveLocalFileToStorage(const Authorization
return StorageBase::SaveResult(StorageBase::SaveResult::OK);
}
#ifndef MOBILEAPP
#if !MOBILEAPP
namespace
{