loolwsd/LOOLSession.cpp | 47 +++++++++++++++++-------- loolwsd/LOOLWSD.cpp | 90 ------------------------------------------------ 2 files changed, 32 insertions(+), 105 deletions(-)
New commits: commit 404b5edbc96521e2911d542696274e8c42691db6 Author: Henry Castro <[email protected]> Date: Fri Jul 17 16:55:49 2015 -0400 loolwsd: FileTransferHandler no longer need it. diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp index 502010a..000b319 100644 --- a/loolwsd/LOOLSession.cpp +++ b/loolwsd/LOOLSession.cpp @@ -504,29 +504,46 @@ void MasterProcessSession::dispatchChild() if (!aUri.empty() && aUri.getScheme() == "file") { - // The process is jail rooted, so it requests loolMain process to transfer files. + Path aSrcFile(aUri.getPath()); + Path aDstFile(Path(getJailPath(childSession->_childId), jailDocumentURL.substr(1)), aSrcFile.getFileName()); + Path aDstPath(getJailPath(childSession->_childId), jailDocumentURL.substr(1)); + Path aJailFile(jailDocumentURL, aSrcFile.getFileName()); + try { - Path aSrcFile(aUri.getPath()); - Path aDstFile(Path(getJailPath(childSession->_childId), jailDocumentURL.substr(1)), aSrcFile.getFileName()); - std::string sCopy(aSrcFile.toString() + " " + aDstFile.toString()); - std::string str; - - DialogSocket ds; - ds.connect(SocketAddress("127.0.0.1", LOOLWSD::FILE_PORT_NUMBER)); - ds.sendMessage(sCopy); - ds.receiveMessage(str); - - if (str != "OK") - Application::instance().logger().error( Util::logPrefix() + - "DataSocket copyTo(\"" + aSrcFile.toString() + "\",\"" + aDstFile.toString() + "\") failed: " + str); + File(aDstPath).createDirectories(); } catch (Exception& exc) { Application::instance().logger().error( Util::logPrefix() + - "FileTransferHanlder failed: " + exc.displayText()); + "createDirectories(\"" + aDstPath.toString() + "\") failed: " + exc.displayText() ); + + } + +#ifdef __linux + Application::instance().logger().information(Util::logPrefix() + "Linking " + aSrcFile.toString() + " to " + aDstFile.toString()); + if (link(aSrcFile.toString().c_str(), aDstFile.toString().c_str()) == -1) + { + // Failed + Application::instance().logger().error( Util::logPrefix() + + "link(\"" + aSrcFile.toString() + "\",\"" + aDstFile.toString() + "\") failed: " + strerror(errno) ); } +#endif + try + { + //fallback + if (!File(aDstFile).exists()) + { + Application::instance().logger().information(Util::logPrefix() + "Copying " + aSrcFile.toString() + " to " + aDstFile.toString()); + File(aSrcFile).copyTo(aDstFile.toString()); + } + } + catch (Exception& exc) + { + Application::instance().logger().error( Util::logPrefix() + + "copyTo(\"" + aSrcFile.toString() + "\",\"" + aDstFile.toString() + "\") failed: " + exc.displayText()); + } } _peer = childSession; diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp index 595f955..76d4a73 100644 --- a/loolwsd/LOOLWSD.cpp +++ b/loolwsd/LOOLWSD.cpp @@ -411,92 +411,6 @@ private: HTTPServer& _srv; }; -class FileTransferHandler : public Runnable -{ -public: - FileTransferHandler() : _socket(ServerSocket(LOOLWSD::FILE_PORT_NUMBER)) - { - } - - void run() override - { - Poco::Timespan span(250000); - - while (true) - { - if (_socket.poll(span, Socket::SELECT_READ)) - { - DialogSocket ds = _socket.acceptConnection(); - - try - { - std::string command; - while (ds.receiveMessage(command)) - { - FastMutex::ScopedLock lock(_mutex); - ds.sendMessage(transferFile(command)); - } - } - catch (Poco::Exception& exc) - { - std::cerr << "FileTransferHandler: " << exc.displayText() << std::endl; - } - } - } - } - - std::string transferFile(std::string command) - { - StringTokenizer tokens(command, " ", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM); - if ( tokens.count() != 2 ) - return "Souce and Destination is needed :" + command; - - Path aSrcFile(tokens[0]); - Path aDstFile(tokens[1]); - Path aDstPath(aDstFile.parent()); - - try - { - File(aDstPath).createDirectories(); - } - catch (Exception& exc) - { - return exc.displayText(); - } - -#ifdef __linux - Application::instance().logger().information(Util::logPrefix() + "Linking " + aSrcFile.toString() + " to " + aDstFile.toString()); - if (link(aSrcFile.toString().c_str(), aDstFile.toString().c_str()) == -1) - { - // Failed - Application::instance().logger().error( Util::logPrefix() + - "link(\"" + aSrcFile.toString() + "\",\"" + aDstFile.toString() + "\") failed: " + strerror(errno) ); - } -#endif - - try - { - //fallback - if (!File(aDstFile).exists()) - { - Application::instance().logger().information(Util::logPrefix() + "Copying " + aSrcFile.toString() + " to " + aDstFile.toString()); - File(aSrcFile).copyTo(aDstFile.toString()); - } - } - catch (Exception& exc) - { - return exc.displayText(); - } - - return "OK"; - } - -private: - Poco::Net::ServerSocket _socket; - mutable Poco::FastMutex _mutex; -}; - - int LOOLWSD::portNumber = DEFAULT_CLIENT_PORT_NUMBER; std::string LOOLWSD::cache = LOOLWSD_CACHEDIR; std::string LOOLWSD::sysTemplate; @@ -1118,10 +1032,6 @@ void LOOLWSD::loolMain() namedMutexLOOL.unlock(); - Thread threadFile; - FileTransferHandler svrFile; - threadFile.start(svrFile); - while (MasterProcessSession::_childProcesses.size() > 0) { int status; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
