X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fimaging%2Fcommon%2Ffile-download.cpp;h=6930618655a2953aaf02d94d3015813ed765c336;hb=52c8c18bc454ba364c60cc2cdf74973a90dd26f8;hp=965226d5f2a1bb179c72a94871c79a2b8810be9a;hpb=bee0089c015812605383de712572247788a0a1a1;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/imaging/common/file-download.cpp b/dali/internal/imaging/common/file-download.cpp index 965226d..6930618 100755 --- a/dali/internal/imaging/common/file-download.cpp +++ b/dali/internal/imaging/common/file-download.cpp @@ -22,16 +22,11 @@ #include #include #include -#include #include // INTERNAL INCLUDES #include -#ifdef TPK_CURL_ENABLED -#include -#endif // TPK_CURL_ENABLED - using namespace Dali::Integration; namespace Dali @@ -44,6 +39,7 @@ namespace // unnamed namespace { const int CONNECTION_TIMEOUT_SECONDS( 30L ); +const int TIMEOUT_SECONDS( 120L ); const long VERBOSE_MODE = 0L; // 0 == off, 1 == on const long CLOSE_CONNECTION_ON_ERROR = 1L; // 0 == off, 1 == on const long EXCLUDE_HEADER = 0L; @@ -65,13 +61,9 @@ void ConfigureCurlOptions( CURL* curlHandle, const std::string& url ) // CURLOPT_FAILONERROR is not fail-safe especially when authentication is involved ( see manual ) // Removed CURLOPT_FAILONERROR option curl_easy_setopt( curlHandle, CURLOPT_CONNECTTIMEOUT, CONNECTION_TIMEOUT_SECONDS ); + curl_easy_setopt( curlHandle, CURLOPT_TIMEOUT, TIMEOUT_SECONDS ); curl_easy_setopt( curlHandle, CURLOPT_HEADER, INCLUDE_HEADER ); curl_easy_setopt( curlHandle, CURLOPT_NOBODY, EXCLUDE_BODY ); - -#ifdef TPK_CURL_ENABLED - // Apply certificate pinning on Tizen - curl_easy_setopt( curlHandle, CURLOPT_SSL_CTX_FUNCTION, tpkp_curl_ssl_ctx_callback ); -#endif // TPK_CURL_ENABLED } // Without a write function or a buffer (file descriptor) to write to, curl will pump out @@ -213,80 +205,25 @@ bool DownloadFile( CURL* curlHandle, namespace Network { -std::mutex* CurlEnvironment::mMutexs = NULL; - CurlEnvironment::CurlEnvironment() { // Must be called before we attempt any loads. e.g. by using curl_easy_init() // and before we start any threads. curl_global_init(CURL_GLOBAL_ALL); - - // libcurl with openssl needs locking_function and thread id for threadsafe - // https://curl.haxx.se/libcurl/c/threadsafe.html - // https://www.openssl.org/docs/man1.0.2/crypto/threads.html#DESCRIPTION - // SetLockingFunction sets locking_function and get thread id by the guide. - SetLockingFunction(); } CurlEnvironment::~CurlEnvironment() { - UnsetLockingFunction(); - curl_global_cleanup(); } -// libcurl with openssl needs locking_function and thread id for threadsafe -// https://curl.haxx.se/libcurl/c/threadsafe.html -// https://www.openssl.org/docs/man1.0.2/crypto/threads.html#DESCRIPTION -void CurlEnvironment::OnOpenSSLLocking( int mode, int n, const char* file, int line ) -{ - if( mode & CRYPTO_LOCK ) - { - mMutexs[n].lock(); - } - else - { - mMutexs[n].unlock(); - } -} - -unsigned long CurlEnvironment::GetThreadId() -{ - // If dali uses c++ thread, we may replace pthread_self() to this_thread::get_id() - return static_cast< unsigned long >( pthread_self() ); -} - -void CurlEnvironment::SetLockingFunction() -{ - if( mMutexs != NULL ) - { - return; - } - - mMutexs = new std::mutex[ CRYPTO_num_locks() ]; - - CRYPTO_set_id_callback( &CurlEnvironment::GetThreadId ); - CRYPTO_set_locking_callback( &CurlEnvironment::OnOpenSSLLocking ); -} - -void CurlEnvironment::UnsetLockingFunction() -{ - if( mMutexs == NULL ) - { - return; - } - - CRYPTO_set_id_callback( NULL ); - CRYPTO_set_locking_callback( NULL ); - delete [] mMutexs; - mMutexs = NULL; -} - bool DownloadRemoteFileIntoMemory( const std::string& url, Dali::Vector& dataBuffer, size_t& dataSize, size_t maximumAllowedSizeBytes ) { + bool result = false; + if( url.empty() ) { DALI_LOG_WARNING("empty url requested \n"); @@ -297,17 +234,13 @@ bool DownloadRemoteFileIntoMemory( const std::string& url, // thread we need to explicity call curl_global_init() on startup from a single thread. CURL* curlHandle = curl_easy_init(); + if ( curlHandle ) + { + result = DownloadFile( curlHandle, url, dataBuffer, dataSize, maximumAllowedSizeBytes); - bool result = DownloadFile( curlHandle, url, dataBuffer, dataSize, maximumAllowedSizeBytes); - - // clean up session - curl_easy_cleanup( curlHandle ); - -#ifdef TPK_CURL_ENABLED - // Clean up tpkp(the module for certificate pinning) resources on Tizen - tpkp_curl_cleanup(); -#endif // TPK_CURL_ENABLED - + // clean up session + curl_easy_cleanup( curlHandle ); + } return result; }