loolwsd/Storage.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)
New commits: commit c015fecb2cae413e2e9fdc008e088b0a56599779 Author: Michael Meeks <michael.me...@collabora.com> Date: Fri Oct 21 09:57:17 2016 +0100 Improve logging of WOPI protocol errors. diff --git a/loolwsd/Storage.cpp b/loolwsd/Storage.cpp index f12c056..a20691d 100644 --- a/loolwsd/Storage.cpp +++ b/loolwsd/Storage.cpp @@ -263,6 +263,14 @@ Poco::Net::HTTPClientSession* getHTTPClientSession(const Poco::URI& uri) : new Poco::Net::HTTPClientSession(uri.getHost(), uri.getPort()); } +Poco::Dynamic::Var getOrWarn(const Poco::JSON::Object::Ptr &object, const char *key) +{ + const auto value = object->get(key); + if (value.isEmpty()) + Log::error("Missing JSON property: '" + std::string(key) + "'"); + return value; +} + } // anonymous namespace StorageBase::FileInfo WopiStorage::getFileInfo(const Poco::URI& uriPublic) @@ -308,15 +316,18 @@ StorageBase::FileInfo WopiStorage::getFileInfo(const Poco::URI& uriPublic) Poco::JSON::Parser parser; const auto result = parser.parse(stringJSON); const auto& object = result.extract<Poco::JSON::Object::Ptr>(); - filename = object->get("BaseFileName").toString(); - size = std::stoul(object->get("Size").toString(), nullptr, 0); - const auto userIdVar = object->get("UserId"); + filename = getOrWarn(object, "BaseFileName").toString(); + const auto sizeVar = getOrWarn(object, "Size"); + size = std::stoul(sizeVar.toString(), nullptr, 0); + const auto userIdVar = getOrWarn(object, "UserId"); userId = (userIdVar.isString() ? userIdVar.toString() : ""); - const auto userNameVar = object->get("UserFriendlyName"); + const auto userNameVar = getOrWarn(object,"UserFriendlyName"); userName = (userNameVar.isString() ? userNameVar.toString() : "anonymous"); - const auto canWriteVar = object->get("UserCanWrite"); + const auto canWriteVar = getOrWarn(object, "UserCanWrite"); canWrite = canWriteVar.isString() ? (canWriteVar.toString() == "true") : false; } + else + Log::error("WOPI::CheckFileInfo is missing JSON payload"); // WOPI doesn't support file last modified time. _fileInfo = FileInfo({filename, Poco::Timestamp(), size, userId, userName, canWrite}); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits