From 9dbd7cc5d4baca3047c117f8da531b714a4c2724 Mon Sep 17 00:00:00 2001 From: chanywa Date: Thu, 30 Nov 2017 10:29:40 +0900 Subject: [PATCH] Fix crashes when terminating threads Change-Id: I64000745192439b5e564e82824eb27322a3881eb Signed-off-by: chanywa --- maps-plugin-mapzen.changes | 5 +++++ packaging/maps-plugin-mapzen.spec | 2 +- src/mapzen/mapzen_restcurl.c | 16 +++++++++------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/maps-plugin-mapzen.changes b/maps-plugin-mapzen.changes index 585f2d2..107e3e6 100644 --- a/maps-plugin-mapzen.changes +++ b/maps-plugin-mapzen.changes @@ -1,3 +1,8 @@ +[Version] maps-plugin-mapzen_0.0.8 +[Date] 30 Nov 2017 +[Title] Fix crashes when terminating threads +[Developer] Seechan Kim + [Version] maps-plugin-mapzen_0.0.6 [Date] 30 Oct 2017 [Title] Revise timeout limits for downloading map tiles. diff --git a/packaging/maps-plugin-mapzen.spec b/packaging/maps-plugin-mapzen.spec index bfc045d..85b6264 100644 --- a/packaging/maps-plugin-mapzen.spec +++ b/packaging/maps-plugin-mapzen.spec @@ -1,6 +1,6 @@ Name: maps-plugin-mapzen Summary: Tizen Mapzen Maps Plug-in Library -Version: 0.0.6 +Version: 0.0.8 Release: 1 Group: Location/Libraries License: Apache-2.0 and MIT diff --git a/src/mapzen/mapzen_restcurl.c b/src/mapzen/mapzen_restcurl.c index 913a717..91b799d 100644 --- a/src/mapzen/mapzen_restcurl.c +++ b/src/mapzen/mapzen_restcurl.c @@ -26,6 +26,7 @@ #include "mapzen_util.h" #define RESTCURL_USE_MULTI_CURL +#define TIZEN_CFG_CURL_TIMEOUT 120 CURLM *__cm_handle; pthread_t __CurlThread; @@ -419,6 +420,9 @@ int add_handle(const char *url, mapzen_req_type type, void *user_data) /* some servers don't like requests that are made without a user-agent field, so we provide one */ curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); + /* Timeout for the entire request */ + curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, TIZEN_CFG_CURL_TIMEOUT); + pMultiCurlArg->curl_handle = curl_handle; pMultiCurlArg->req_type = type; pMultiCurlArg->request_id = req_id; @@ -473,7 +477,7 @@ static void __post_curl(mapzen_req_type type, MemoryStruct_s *m_chunk, void *use static void *__curl_thread_handler(void *user_data) { - __thread_running_for_curlmulti = true; + //__thread_running_for_curlmulti = true; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); #ifdef RESTCURL_USE_MULTI_CURL @@ -537,11 +541,10 @@ static void *__curl_thread_handler(void *user_data) } } - if (__thread_running_for_curlmulti && !__MultiCurlArgsRemain) { - pthread_mutex_lock(&__curl_deliver_mutex); + pthread_mutex_lock(&__curl_deliver_mutex); + if (__thread_running_for_curlmulti && !__MultiCurlArgsRemain) pthread_cond_wait(&__curl_delivered_cond, &__curl_deliver_mutex); - pthread_mutex_unlock(&__curl_deliver_mutex); - } + pthread_mutex_unlock(&__curl_deliver_mutex); } #else @@ -597,10 +600,9 @@ int init_curl() int deinit_curl() { #ifdef RESTCURL_USE_MULTI_CURL + pthread_mutex_lock(&__curl_deliver_mutex); __thread_running_for_curlmulti = false; __MultiCurlArgsRemain = 0; - - pthread_mutex_lock(&__curl_deliver_mutex); pthread_cond_signal(&__curl_delivered_cond); pthread_mutex_unlock(&__curl_deliver_mutex); -- 2.7.4