diff options
Diffstat (limited to 'indra/newview/llwebprofile.cpp')
-rw-r--r-- | indra/newview/llwebprofile.cpp | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/indra/newview/llwebprofile.cpp b/indra/newview/llwebprofile.cpp index f2d7e4585a..4528ad012d 100644 --- a/indra/newview/llwebprofile.cpp +++ b/indra/newview/llwebprofile.cpp @@ -1,25 +1,25 @@ -/** +/** * @file llwebprofile.cpp * @brief Web profile access. * * $LicenseInfo:firstyear=2011&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2011, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -38,11 +38,12 @@ // newview #include "llavataractions.h" // for getProfileURL() #include "llviewermedia.h" // FIXME: don't use LLViewerMedia internals +#include "llnotificationsutil.h" #include "llcorehttputil.h" // third-party -#include "json/reader.h" // JSON + /* * Workflow: @@ -74,8 +75,8 @@ void LLWebProfile::uploadImage(LLPointer<LLImageFormatted> image, const std::str // static void LLWebProfile::setAuthCookie(const std::string& cookie) { - LL_DEBUGS("Snapshots") << "Setting auth cookie: " << cookie << LL_ENDL; - sAuthCookie = cookie; + LL_DEBUGS("Snapshots") << "Setting auth cookie: " << cookie << LL_ENDL; + sAuthCookie = cookie; } @@ -134,6 +135,10 @@ void LLWebProfile::uploadImageCoro(LLPointer<LLImageFormatted> image, std::strin { LL_WARNS("Snapshots") << "Failed to get image upload config" << LL_ENDL; LLWebProfile::reportImageUploadStatus(false); + if (image->getDataSize() > MAX_WEB_DATASIZE) + { + LLNotificationsUtil::add("CannotUploadSnapshotWebTooBig"); + } return; } @@ -148,7 +153,7 @@ void LLWebProfile::uploadImageCoro(LLPointer<LLImageFormatted> image, std::strin httpHeaders->append(HTTP_OUT_HEADER_COOKIE, getAuthCookie()); httpHeaders->remove(HTTP_OUT_HEADER_CONTENT_TYPE); httpHeaders->append(HTTP_OUT_HEADER_CONTENT_TYPE, "multipart/form-data; boundary=" + boundary); - + LLCore::BufferArray::ptr_t body = LLWebProfile::buildPostData(data, image, boundary); result = httpAdapter->postAndSuspend(httpRequest, uploadUrl, body, httpOpts, httpHeaders); @@ -161,6 +166,10 @@ void LLWebProfile::uploadImageCoro(LLPointer<LLImageFormatted> image, std::strin { LL_WARNS("Snapshots") << "Failed to upload image data." << LL_ENDL; LLWebProfile::reportImageUploadStatus(false); + if (image->getDataSize() > MAX_WEB_DATASIZE) + { + LLNotificationsUtil::add("CannotUploadSnapshotWebTooBig"); + } return; } @@ -188,6 +197,10 @@ void LLWebProfile::uploadImageCoro(LLPointer<LLImageFormatted> image, std::strin { LL_WARNS("Snapshots") << "Failed to upload image." << LL_ENDL; LLWebProfile::reportImageUploadStatus(false); + if (image->getDataSize() > MAX_WEB_DATASIZE) + { + LLNotificationsUtil::add("CannotUploadSnapshotWebTooBig"); + } return; } @@ -196,8 +209,6 @@ void LLWebProfile::uploadImageCoro(LLPointer<LLImageFormatted> image, std::strin LL_INFOS("Snapshots") << "Image uploaded." << LL_ENDL; //LL_DEBUGS("Snapshots") << "Uploading image succeeded. Response: [" << raw.asString() << "]" << LL_ENDL; LLWebProfile::reportImageUploadStatus(true); - - } /*static*/ @@ -239,10 +250,12 @@ LLCore::BufferArray::ptr_t LLWebProfile::buildPostData(const LLSD &data, LLPoint << "Content-Disposition: form-data; name=\"file\"; filename=\"snapshot.png\"\r\n" << "Content-Type: image/png\r\n\r\n"; + LLImageDataSharedLock lock(image); + // Insert the image data. //char *datap = (char *)(image->getData()); //bas.write(datap, image->getDataSize()); - U8* image_data = image->getData(); + const U8* image_data = image->getData(); for (S32 i = 0; i < image->getDataSize(); ++i) { bas << image_data[i]; @@ -256,15 +269,15 @@ LLCore::BufferArray::ptr_t LLWebProfile::buildPostData(const LLSD &data, LLPoint // static void LLWebProfile::reportImageUploadStatus(bool ok) { - if (mStatusCallback) - { - mStatusCallback(ok); - } + if (mStatusCallback) + { + mStatusCallback(ok); + } } // static std::string LLWebProfile::getAuthCookie() { - // This is needed to test image uploads on Linux viewer built with OpenSSL 1.0.0 (0.9.8 works fine). - return LLStringUtil::getenv("LL_SNAPSHOT_COOKIE", sAuthCookie); + // This is needed to test image uploads on Linux viewer built with OpenSSL 1.0.0 (0.9.8 works fine). + return LLStringUtil::getenv("LL_SNAPSHOT_COOKIE", sAuthCookie); } |