summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/download-provider-log.h7
-rw-r--r--src/agent/download-agent-basic.c15
-rw-r--r--src/agent/download-agent-client-mgr.c3
-rw-r--r--src/agent/download-agent-dl-info-util.c3
-rw-r--r--src/agent/download-agent-dl-mgr.c9
-rw-r--r--src/agent/download-agent-file.c3
-rw-r--r--src/agent/download-agent-http-mgr.c4
-rw-r--r--src/download-provider-db.c43
-rw-r--r--src/download-provider-ipc.c12
-rw-r--r--src/download-provider-main.c4
-rw-r--r--src/download-provider-receiver.c136
-rw-r--r--src/download-provider-utils.c5
12 files changed, 129 insertions, 115 deletions
diff --git a/include/download-provider-log.h b/include/download-provider-log.h
index 2416844..3f78795 100644
--- a/include/download-provider-log.h
+++ b/include/download-provider-log.h
@@ -10,9 +10,12 @@
#define LOG_TAG "download-provider"
#define TRACE_DEBUG_MSG(format, ARG...) \
{ \
-LOGD(format"[%s][%d]", ##ARG, __FUNCTION__, __LINE__); \
+LOGE(format"[%s][%d]", ##ARG, __FUNCTION__, __LINE__); \
+}
+#define TRACE_DEBUG_INFO_MSG(format, ARG...) \
+{ \
+LOGI(format"[%s][%d]", ##ARG, __FUNCTION__, __LINE__); \
}
-
#else
#define TRACE_DEBUG_MSG(format, ARG...) ;
#endif
diff --git a/src/agent/download-agent-basic.c b/src/agent/download-agent-basic.c
index db40f45..d069e7e 100644
--- a/src/agent/download-agent-basic.c
+++ b/src/agent/download-agent-basic.c
@@ -64,6 +64,7 @@ da_result_t start_download_with_extension(
client_input_t *client_input = DA_NULL;
client_input_basic_t *client_input_basic = DA_NULL;
download_thread_input *thread_info = DA_NULL;
+ pthread_attr_t thread_attr;
DA_LOG_FUNC_START(Default);
@@ -132,7 +133,7 @@ da_result_t start_download_with_extension(
}
thread_info = (download_thread_input *)calloc(1, sizeof(download_thread_input));
- if(!thread_info) {
+ if (!thread_info) {
DA_LOG_ERR(Default, "DA_ERR_FAIL_TO_MEMALLOC");
ret = DA_ERR_FAIL_TO_MEMALLOC;
goto ERR;
@@ -140,8 +141,18 @@ da_result_t start_download_with_extension(
thread_info->download_id = download_id;
thread_info->client_input = client_input;
}
+ if (pthread_attr_init(&thread_attr) != 0) {
+ ret = DA_ERR_FAIL_TO_CREATE_THREAD;
+ goto ERR;
+ }
+
+ if (pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED) != 0) {
+ ret = DA_ERR_FAIL_TO_CREATE_THREAD;
+ goto ERR;
+ }
- if(pthread_create(&GET_DL_THREAD_ID(download_id), DA_NULL, __thread_start_download, thread_info) < 0) {
+ if (pthread_create(&GET_DL_THREAD_ID(download_id), &thread_attr,
+ __thread_start_download, thread_info) < 0) {
DA_LOG_ERR(Thread, "making thread failed..");
ret = DA_ERR_FAIL_TO_CREATE_THREAD;
} else {
diff --git a/src/agent/download-agent-client-mgr.c b/src/agent/download-agent-client-mgr.c
index c9c04b3..4575fd7 100644
--- a/src/agent/download-agent-client-mgr.c
+++ b/src/agent/download-agent-client-mgr.c
@@ -304,11 +304,12 @@ da_result_t send_client_update_dl_info (
if (http_response_header) {
update_dl_info->http_response_header = strdup(http_response_header);
}
- if (http_chunked_data)
+ if (http_chunked_data) {
update_dl_info->http_chunked_data = calloc (1, file_size);
if (update_dl_info->http_chunked_data)
memcpy(update_dl_info->http_chunked_data, http_chunked_data,
file_size);
+ }
DA_LOG(ClientNoti, "pushing file_size=%lu, download_id=%d, dl_req_id=%d",
file_size, download_id, dl_req_id);
diff --git a/src/agent/download-agent-dl-info-util.c b/src/agent/download-agent-dl-info-util.c
index bf78d9d..98e8ff1 100644
--- a/src/agent/download-agent-dl-info-util.c
+++ b/src/agent/download-agent-dl-info-util.c
@@ -102,9 +102,12 @@ da_result_t deinit_download_mgr(void) {
if (dl_info && dl_info->is_using) {
request_to_abort_http_download(GET_DL_CURRENT_STAGE(i));
DA_LOG_CRITICAL(Thread, "===download id[%d] thread id[%lu] join===",i, GET_DL_THREAD_ID(i));
+/* Because the download daemon can call the deinit function, the resources of pthread are not freed
+ FIXME later : It is needed to change the termination flow again.
if (pthread_join(GET_DL_THREAD_ID(i), &t_return) < 0) {
DA_LOG_ERR(Thread, "join client thread is failed!!!");
}
+*/
DA_LOG_CRITICAL(Thread, "===download id[%d] thread join return[%d]===",i, (char*)t_return);
}
}
diff --git a/src/agent/download-agent-dl-mgr.c b/src/agent/download-agent-dl-mgr.c
index fc654d4..c00d8a5 100644
--- a/src/agent/download-agent-dl-mgr.c
+++ b/src/agent/download-agent-dl-mgr.c
@@ -160,9 +160,6 @@ static da_result_t __cancel_download_with_download_id(int download_id)
}
_da_thread_mutex_unlock (&mutex_download_state[download_id]);
- if (ret != DA_RESULT_OK)
- goto ERR;
-
stage = GET_DL_CURRENT_STAGE(download_id);
if (!stage)
return DA_RESULT_OK;
@@ -278,9 +275,6 @@ static da_result_t __suspend_download_with_download_id(int download_id)
DA_LOG(Default, "download_state = %d", GET_DL_STATE_ON_ID(download_id));
_da_thread_mutex_unlock (&mutex_download_state[download_id]);
- if (ret != DA_RESULT_OK)
- goto ERR;
-
stage = GET_DL_CURRENT_STAGE(download_id);
if (!stage)
return DA_ERR_CANNOT_SUSPEND;
@@ -390,9 +384,6 @@ static da_result_t __resume_download_with_download_id(int download_id)
DA_LOG(Default, "download_state = %d", GET_DL_STATE_ON_ID(download_id));
_da_thread_mutex_unlock (&mutex_download_state[download_id]);
- if (ret != DA_RESULT_OK)
- goto ERR;
-
stage = GET_DL_CURRENT_STAGE(download_id);
ret = request_to_resume_http_download(stage);
diff --git a/src/agent/download-agent-file.c b/src/agent/download-agent-file.c
index 1f29205..cd5d4ad 100644
--- a/src/agent/download-agent-file.c
+++ b/src/agent/download-agent-file.c
@@ -490,9 +490,6 @@ da_result_t __get_candidate_file_name(stage_info *stage, char **out_pure_file_na
return DA_RESULT_OK;
ERR:
- if (pure_file_name)
- free(pure_file_name);
-
if (extension)
free(extension);
diff --git a/src/agent/download-agent-http-mgr.c b/src/agent/download-agent-http-mgr.c
index 02813d9..7f3b36f 100644
--- a/src/agent/download-agent-http-mgr.c
+++ b/src/agent/download-agent-http-mgr.c
@@ -1686,10 +1686,6 @@ ERR:
free(field);
field = NULL;
}
- if (value) {
- free(value);
- value = NULL;
- }
return;
}
diff --git a/src/download-provider-db.c b/src/download-provider-db.c
index 06726b3..5e63b3a 100644
--- a/src/download-provider-db.c
+++ b/src/download-provider-db.c
@@ -608,14 +608,10 @@ void download_provider_db_info_free(download_dbinfo *info)
if (info->saved_path)
free(info->saved_path);
info->saved_path = NULL;
- free(info);
- info = NULL;
}
void download_provider_db_list_free(download_dbinfo_list *list)
{
- TRACE_DEBUG_MSG("");
-
int i = 0;
if (!list)
return;
@@ -745,6 +741,7 @@ download_dbinfo *download_provider_db_get_info(int requestid)
sqlite3_errmsg(g_download_provider_db), errorcode);
__download_provider_db_close();
download_provider_db_info_free(dbinfo);
+ free(dbinfo);
return NULL;
}
_download_provider_sql_close(stmt);
@@ -1016,7 +1013,7 @@ download_dbinfo *download_provider_db_history_get_info(int requestid)
errorcode =
sqlite3_prepare_v2(g_download_provider_db,
- "SELECT uniqueid, packagename, notification, installpath, filename, creationdate, state, url, mimetype, savedpath FROM history WHERE uniqueid = ?",
+ "SELECT packagename, filename, creationdate, state, mimetype, savedpath FROM history WHERE uniqueid = ?",
-1, &stmt, NULL);
if (errorcode != SQLITE_OK) {
TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
@@ -1033,8 +1030,8 @@ download_dbinfo *download_provider_db_history_get_info(int requestid)
if ((errorcode = sqlite3_step(stmt)) == SQLITE_ROW) {
dbinfo = (download_dbinfo *) calloc(1, sizeof(download_dbinfo));
- dbinfo->requestid = sqlite3_column_int(stmt, 0);
- buffer = (char *)(sqlite3_column_text(stmt, 1));
+ dbinfo->requestid = requestid;
+ buffer = (char *)(sqlite3_column_text(stmt, 0));
dbinfo->packagename = NULL;
if (buffer) {
buffer_length = strlen(buffer);
@@ -1044,18 +1041,7 @@ download_dbinfo *download_provider_db_history_get_info(int requestid)
buffer_length * sizeof(char));
dbinfo->packagename[buffer_length] = '\0';
}
- dbinfo->notification = sqlite3_column_int(stmt, 2);
- buffer = (char *)(sqlite3_column_text(stmt, 3));
- dbinfo->installpath = NULL;
- if (buffer) {
- buffer_length = strlen(buffer);
- dbinfo->installpath
- = (char *)calloc(buffer_length + 1, sizeof(char));
- memcpy(dbinfo->installpath, buffer,
- buffer_length * sizeof(char));
- dbinfo->installpath[buffer_length] = '\0';
- }
- buffer = (char *)(sqlite3_column_text(stmt, 4));
+ buffer = (char *)(sqlite3_column_text(stmt, 1));
dbinfo->filename = NULL;
if (buffer) {
buffer_length = strlen(buffer);
@@ -1065,7 +1051,7 @@ download_dbinfo *download_provider_db_history_get_info(int requestid)
buffer_length * sizeof(char));
dbinfo->filename[buffer_length] = '\0';
}
- buffer = (char *)(sqlite3_column_text(stmt, 5));
+ buffer = (char *)(sqlite3_column_text(stmt, 2));
dbinfo->createdate = NULL;
if (buffer) {
buffer_length = strlen(buffer);
@@ -1075,18 +1061,8 @@ download_dbinfo *download_provider_db_history_get_info(int requestid)
buffer_length * sizeof(char));
dbinfo->createdate[buffer_length] = '\0';
}
- dbinfo->state = sqlite3_column_int(stmt, 6);
- buffer = (char *)(sqlite3_column_text(stmt, 7));
- dbinfo->url = NULL;
- if (buffer) {
- buffer_length = strlen(buffer);
- dbinfo->url
- = (char *)calloc(buffer_length + 1, sizeof(char));
- memcpy(dbinfo->url, buffer,
- buffer_length * sizeof(char));
- dbinfo->url[buffer_length] = '\0';
- }
- buffer = (char *)(sqlite3_column_text(stmt, 8));
+ dbinfo->state = sqlite3_column_int(stmt, 3);
+ buffer = (char *)(sqlite3_column_text(stmt, 4));
dbinfo->mimetype = NULL;
if (buffer) {
buffer_length = strlen(buffer);
@@ -1096,7 +1072,7 @@ download_dbinfo *download_provider_db_history_get_info(int requestid)
buffer_length * sizeof(char));
dbinfo->mimetype[buffer_length] = '\0';
}
- buffer = (char *)(sqlite3_column_text(stmt, 9));
+ buffer = (char *)(sqlite3_column_text(stmt, 5));
dbinfo->saved_path = NULL;
if (buffer) {
buffer_length = strlen(buffer);
@@ -1111,6 +1087,7 @@ download_dbinfo *download_provider_db_history_get_info(int requestid)
sqlite3_errmsg(g_download_provider_db), errorcode);
__download_provider_db_close();
download_provider_db_info_free(dbinfo);
+ free(dbinfo);
return NULL;
}
_download_provider_sql_close(stmt);
diff --git a/src/download-provider-ipc.c b/src/download-provider-ipc.c
index 7cfb54f..18627a8 100644
--- a/src/download-provider-ipc.c
+++ b/src/download-provider-ipc.c
@@ -162,7 +162,7 @@ int ipc_receive_request_msg(download_clientinfo *clientinfo)
requestinfo->
client_packagename.
length] = '\0';
- TRACE_DEBUG_MSG("request client_packagename [%s]",
+ TRACE_DEBUG_INFO_MSG("request client_packagename [%s]",
clientinfo->requestinfo->client_packagename.
str);
}
@@ -179,7 +179,7 @@ int ipc_receive_request_msg(download_clientinfo *clientinfo)
}
clientinfo->requestinfo->url.str[clientinfo->requestinfo->url.
length] = '\0';
- TRACE_DEBUG_MSG("request url [%s]",
+ TRACE_DEBUG_INFO_MSG("request url [%s]",
clientinfo->requestinfo->url.str);
}
if (clientinfo->requestinfo->install_path.length > 1) {
@@ -201,7 +201,7 @@ int ipc_receive_request_msg(download_clientinfo *clientinfo)
requestinfo->
install_path.length] =
'\0';
- TRACE_DEBUG_MSG("request install_path [%s]",
+ TRACE_DEBUG_INFO_MSG("request install_path [%s]",
clientinfo->requestinfo->install_path.str);
}
if (clientinfo->requestinfo->filename.length > 1) {
@@ -221,7 +221,7 @@ int ipc_receive_request_msg(download_clientinfo *clientinfo)
}
clientinfo->requestinfo->filename.str[clientinfo->requestinfo->
filename.length] = '\0';
- TRACE_DEBUG_MSG("request filename [%s]",
+ TRACE_DEBUG_INFO_MSG("request filename [%s]",
clientinfo->requestinfo->filename.str);
}
if (clientinfo->requestinfo->service_data.length > 1) {
@@ -289,7 +289,7 @@ int ipc_receive_request_msg(download_clientinfo *clientinfo)
return -1;
}
if (clientinfo->requestinfo->headers.str[i].length > 1) {
- TRACE_DEBUG_MSG("headers[%d] length[%d]", i,
+ TRACE_DEBUG_INFO_MSG("headers[%d] length[%d]", i,
clientinfo->requestinfo->
headers.str[i].length);
clientinfo->requestinfo->headers.str[i].str =
@@ -310,7 +310,7 @@ int ipc_receive_request_msg(download_clientinfo *clientinfo)
clientinfo->requestinfo->headers.str[i].
str[clientinfo->requestinfo->headers.str[i].
length] = '\0';
- TRACE_DEBUG_MSG("headers[%d][%s]", i,
+ TRACE_DEBUG_INFO_MSG("headers[%d][%s]", i,
clientinfo->requestinfo->
headers.str[i].str);
}
diff --git a/src/download-provider-main.c b/src/download-provider-main.c
index 907a22e..46a0334 100644
--- a/src/download-provider-main.c
+++ b/src/download-provider-main.c
@@ -16,7 +16,7 @@ void *run_manage_download_server(void *args);
void TerminateDaemon(int signo)
{
- TRACE_DEBUG_MSG("Received SIGTERM");
+ TRACE_DEBUG_INFO_MSG("Received SIGTERM");
if (g_main_loop_is_running(gMainLoop))
g_main_loop_quit(gMainLoop);
}
@@ -81,7 +81,7 @@ int main()
g_main_loop_run(gMainLoop);
- TRACE_DEBUG_MSG("Download-Provider will be terminated.");
+ TRACE_DEBUG_INFO_MSG("Download-Provider will be terminated.");
pthread_cancel(gRequestThreadPid);
pthread_join(gRequestThreadPid, NULL);
diff --git a/src/download-provider-receiver.c b/src/download-provider-receiver.c
index 452ab69..2af1fb0 100644
--- a/src/download-provider-receiver.c
+++ b/src/download-provider-receiver.c
@@ -170,7 +170,7 @@ void *_start_download(void *args)
// if start_download() return error cause of maximun download limitation, set state to DOWNLOAD_STATE_PENDED.
if (da_ret == DA_ERR_ALREADY_MAX_DOWNLOAD) {
- TRACE_DEBUG_MSG("change to pended request [%d]", da_ret);
+ TRACE_DEBUG_INFO_MSG("change to pended request [%d]", da_ret);
CLIENT_MUTEX_LOCK(&(clientinfo->client_mutex));
clientinfo->state = DOWNLOAD_STATE_PENDED;
clientinfo->err = DOWNLOAD_ERROR_TOO_MANY_DOWNLOADS;
@@ -180,7 +180,7 @@ void *_start_download(void *args)
CLIENT_MUTEX_UNLOCK(&(clientinfo->client_mutex));
return 0;
} else if (da_ret != DA_RESULT_OK) {
- TRACE_DEBUG_MSG("Fail to request start [%d]", da_ret);
+ TRACE_DEBUG_INFO_MSG("Fail to request start [%d]", da_ret);
/* FIXME : need to seperate in detail according to error return values */
CLIENT_MUTEX_LOCK(&(clientinfo->client_mutex));
clientinfo->state = DOWNLOAD_STATE_FAILED;
@@ -194,7 +194,7 @@ void *_start_download(void *args)
CLIENT_MUTEX_LOCK(&(clientinfo->client_mutex));
- TRACE_DEBUG_MSG("started download [%d]", da_ret);
+ TRACE_DEBUG_INFO_MSG("started download [%d]", da_ret);
clientinfo->req_id = req_dl_id;
clientinfo->state = DOWNLOAD_STATE_DOWNLOADING;
@@ -229,7 +229,7 @@ int _handle_new_connection(download_clientinfo_slot *clientinfo_list, download_c
(request_clientinfo->clientfd, SOL_SOCKET,
SO_PEERCRED, &request_clientinfo->credentials,
&cr_len) == 0) {
- TRACE_DEBUG_MSG
+ TRACE_DEBUG_INFO_MSG
("Client Info : pid=%d, uid=%d, gid=%d\n",
request_clientinfo->credentials.pid,
request_clientinfo->credentials.uid,
@@ -239,7 +239,7 @@ int _handle_new_connection(download_clientinfo_slot *clientinfo_list, download_c
download_controls type =
ipc_receive_header(request_clientinfo->clientfd);
- TRACE_DEBUG_MSG("[ACCEPT] HEADER : [%d] ", type);
+ TRACE_DEBUG_INFO_MSG("[ACCEPT] HEADER : [%d] ", type);
// first of all, receive requestinfo .
if (type <= 0 || ipc_receive_request_msg(request_clientinfo) < 0) {
TRACE_DEBUG_MSG("Ignore this connection, Invalid command");
@@ -257,7 +257,7 @@ int _handle_new_connection(download_clientinfo_slot *clientinfo_list, download_c
(clientinfo_list,
request_clientinfo->requestinfo->requestid);
if (type == DOWNLOAD_CONTROL_STOP) {
- TRACE_DEBUG_MSG("Request : DOWNLOAD_CONTROL_STOP");
+ TRACE_DEBUG_INFO_MSG("Request : DOWNLOAD_CONTROL_STOP");
if (searchindex >= 0) {
if (da_cancel_download
(clientinfo_list[searchindex].clientinfo->req_id)
@@ -327,7 +327,7 @@ int _handle_new_connection(download_clientinfo_slot *clientinfo_list, download_c
int searchindex = get_same_request_slot_index(clientinfo_list,
request_clientinfo->requestinfo->requestid);
if (searchindex < 0) {
- TRACE_DEBUG_MSG("Not Found Same Request ID");
+ TRACE_DEBUG_INFO_MSG("Not Found Same Request ID");
// Invalid id
request_clientinfo->state = DOWNLOAD_STATE_FAILED;
request_clientinfo->err = DOWNLOAD_ERROR_INVALID_PARAMETER;
@@ -336,7 +336,7 @@ int _handle_new_connection(download_clientinfo_slot *clientinfo_list, download_c
return 0;
} else { // found request id. // how to deal etag ?
// connect to slot.
- TRACE_DEBUG_MSG("Found Same Request ID slot[%d]", searchindex);
+ TRACE_DEBUG_INFO_MSG("Found Same Request ID slot[%d]", searchindex);
CLIENT_MUTEX_LOCK(&(request_clientinfo->client_mutex));
// close previous socket.
if (clientinfo_list[searchindex].clientinfo->clientfd > 0)
@@ -380,7 +380,7 @@ int _handle_new_connection(download_clientinfo_slot *clientinfo_list, download_c
clientinfo_list[searchslot].clientinfo = request_clientinfo;
- TRACE_DEBUG_MSG("New Connection slot [%d] max [%d] max once [%d]",
+ TRACE_DEBUG_INFO_MSG("New Connection slot [%d] max [%d] max once [%d]",
searchslot,
MAX_CLIENT,
DA_MAX_DOWNLOAD_REQ_AT_ONCE);
@@ -395,7 +395,7 @@ int _handle_new_connection(download_clientinfo_slot *clientinfo_list, download_c
(clientinfo_list[searchslot].clientinfo,
DOWNLOAD_DB_STATE);
ipc_send_request_stateinfo(clientinfo_list[searchslot].clientinfo);
- TRACE_DEBUG_MSG ("Pended Request is saved to [%d/%d]",
+ TRACE_DEBUG_INFO_MSG ("Pended Request is saved to [%d/%d]",
searchslot, MAX_CLIENT);
CLIENT_MUTEX_UNLOCK(&(clientinfo_list[searchslot].clientinfo->client_mutex));
sleep(5); // provider need the time of refresh.
@@ -406,8 +406,8 @@ int _handle_new_connection(download_clientinfo_slot *clientinfo_list, download_c
(&clientinfo_list[searchslot].clientinfo->thread_pid,
&g_download_provider_thread_attr, _start_download,
&clientinfo_list[searchslot]) != 0) {
- TRACE_DEBUG_MSG("failed to call pthread_create for client");
- TRACE_DEBUG_MSG("Change to pended job");
+ TRACE_DEBUG_INFO_MSG("failed to call pthread_create for client");
+ TRACE_DEBUG_INFO_MSG("Change to pended job");
CLIENT_MUTEX_LOCK(&(clientinfo_list[searchslot].clientinfo->client_mutex));
clientinfo_list[searchslot].clientinfo->state =
DOWNLOAD_STATE_PENDED;
@@ -437,7 +437,7 @@ int _handle_client_request(download_clientinfo* clientinfo)
switch (msgType = ipc_receive_header(clientinfo->clientfd)) {
case DOWNLOAD_CONTROL_STOP:
- TRACE_DEBUG_MSG("DOWNLOAD_CONTROL_STOP");
+ TRACE_DEBUG_INFO_MSG("DOWNLOAD_CONTROL_STOP");
da_ret = da_cancel_download(clientinfo->req_id);
CLIENT_MUTEX_LOCK(&(clientinfo->client_mutex));
if (da_ret != DA_RESULT_OK) {
@@ -460,7 +460,7 @@ int _handle_client_request(download_clientinfo* clientinfo)
CLIENT_MUTEX_UNLOCK(&(clientinfo->client_mutex));
break;
case DOWNLOAD_CONTROL_PAUSE:
- TRACE_DEBUG_MSG("DOWNLOAD_CONTROL_PAUSE");
+ TRACE_DEBUG_INFO_MSG("DOWNLOAD_CONTROL_PAUSE");
da_ret = da_suspend_download(clientinfo->req_id);
CLIENT_MUTEX_LOCK(&(clientinfo->client_mutex));
if (da_ret != DA_RESULT_OK) {
@@ -476,7 +476,7 @@ int _handle_client_request(download_clientinfo* clientinfo)
CLIENT_MUTEX_UNLOCK(&(clientinfo->client_mutex));
break;
case DOWNLOAD_CONTROL_RESUME:
- TRACE_DEBUG_MSG("DOWNLOAD_CONTROL_RESUME");
+ TRACE_DEBUG_INFO_MSG("DOWNLOAD_CONTROL_RESUME");
da_ret = da_resume_download(clientinfo->req_id);
CLIENT_MUTEX_LOCK(&(clientinfo->client_mutex));
if (da_ret != DA_RESULT_OK) {
@@ -492,13 +492,13 @@ int _handle_client_request(download_clientinfo* clientinfo)
CLIENT_MUTEX_UNLOCK(&(clientinfo->client_mutex));
break;
case DOWNLOAD_CONTROL_GET_STATE_INFO: // sync call
- TRACE_DEBUG_MSG("DOWNLOAD_CONTROL_GET_STATE_INFO");
+ TRACE_DEBUG_INFO_MSG("DOWNLOAD_CONTROL_GET_STATE_INFO");
CLIENT_MUTEX_LOCK(&(clientinfo->client_mutex));
ipc_send_stateinfo(clientinfo);
CLIENT_MUTEX_UNLOCK(&(clientinfo->client_mutex));
break;
case DOWNLOAD_CONTROL_GET_DOWNLOAD_INFO: // sync call
- TRACE_DEBUG_MSG("DOWNLOAD_CONTROL_GET_DOWNLOAD_INFO");
+ TRACE_DEBUG_INFO_MSG("DOWNLOAD_CONTROL_GET_DOWNLOAD_INFO");
CLIENT_MUTEX_LOCK(&(clientinfo->client_mutex));
ipc_send_downloadinfo(clientinfo);
CLIENT_MUTEX_UNLOCK(&(clientinfo->client_mutex));
@@ -577,7 +577,7 @@ void *run_manage_download_server(void *args)
}
maxfd = listenfd;
- TRACE_DEBUG_MSG("Ready to listen IPC [%d][%s]", listenfd,
+ TRACE_DEBUG_INFO_MSG("Ready to listen IPC [%d][%s]", listenfd,
DOWNLOAD_PROVIDER_IPC);
// allocation the array structure for managing the clients.
@@ -625,6 +625,7 @@ void *run_manage_download_server(void *args)
rset = g_download_provider_socket_readset;
exceptset = g_download_provider_socket_exceptset;
+ memset(&timeout, 0x00, sizeof(struct timeval));
timeout.tv_sec = flexible_timeout;
if (select((maxfd + 1), &rset, 0, &exceptset, &timeout) < 0) {
@@ -647,7 +648,7 @@ void *run_manage_download_server(void *args)
if (clientinfo_list[i].clientinfo->clientfd <= 0)
continue;
if (FD_ISSET(clientinfo_list[i].clientinfo->clientfd, &rset) > 0) {
- TRACE_DEBUG_MSG("FD_ISSET [%d] readset slot[%d]",
+ TRACE_DEBUG_INFO_MSG("FD_ISSET [%d] readset slot[%d]",
clientinfo_list[i].clientinfo->clientfd, i);
_handle_client_request(clientinfo_list[i].clientinfo);
} else if (FD_ISSET(clientinfo_list[i].clientinfo->clientfd, &exceptset) > 0) {
@@ -661,7 +662,7 @@ void *run_manage_download_server(void *args)
TerminateDaemon(SIGTERM);
break;
} else if (FD_ISSET(listenfd, &rset) > 0) { // new connection
- TRACE_DEBUG_MSG("FD_ISSET listenfd rset");
+ TRACE_DEBUG_INFO_MSG("FD_ISSET listenfd rset");
// reset timeout.
flexible_timeout =
DOWNLOAD_PROVIDER_CARE_CLIENT_MIN_INTERVAL;
@@ -718,7 +719,7 @@ void *run_manage_download_server(void *args)
if (clientinfo_list[searchslot].clientinfo) {
if (clientinfo_list[searchslot].clientinfo->state ==
DOWNLOAD_STATE_PENDED) {
- TRACE_DEBUG_MSG
+ TRACE_DEBUG_INFO_MSG
("Retry Pended Request [%d/%d] state [%d/%d]",
searchslot, MAX_CLIENT,
count_downloading_threads,
@@ -744,31 +745,61 @@ void *run_manage_download_server(void *args)
DA_MAX_DOWNLOAD_REQ_AT_ONCE) {
// Auto re-download feature. ethernet may be connected with other downloading items.
connection_h network_handle = NULL;
- connection_ethernet_state_e system_network_state
- = CONNECTION_ETHERNET_STATE_DISCONNECTED;
if (connection_create(&network_handle) < 0) {
TRACE_DEBUG_MSG
("Failed connection_create");
continue;
}
+
+ connection_ethernet_state_e system_network_state
+ = CONNECTION_ETHERNET_STATE_DISCONNECTED;
if (connection_get_ethernet_state(network_handle,
&system_network_state) !=
CONNECTION_ERROR_NONE)
TRACE_DEBUG_MSG
("Failed connection_get_ethernet_state");
+ TRACE_DEBUG_INFO_MSG
+ ("ethernet check result : [%d]", (int)system_network_state);
+
+ connection_cellular_state_e system_cellular_state
+ = CONNECTION_CELLULAR_STATE_OUT_OF_SERVICE;
+ if (connection_get_cellular_state(network_handle,
+ &system_cellular_state) !=
+ CONNECTION_ERROR_NONE)
+ TRACE_DEBUG_MSG
+ ("Failed connection_get_ethernet_state");
+ TRACE_DEBUG_INFO_MSG
+ ("cellula check result : [%d]", (int)system_cellular_state);
+
+ connection_wifi_state_e system_wifi_state
+ = CONNECTION_WIFI_STATE_DEACTIVATED;
+ if (connection_get_wifi_state(network_handle,
+ &system_wifi_state) !=
+ CONNECTION_ERROR_NONE)
+ TRACE_DEBUG_MSG
+ ("Failed connection_get_ethernet_state");
+ TRACE_DEBUG_INFO_MSG
+ ("wifi check result : [%d]", (int)system_wifi_state);
+
if (connection_destroy(network_handle) !=
CONNECTION_ERROR_NONE)
TRACE_DEBUG_MSG
("Failed connection_destroy");
- if (system_network_state !=
- CONNECTION_ETHERNET_STATE_CONNECTED)
+
+ if (!(system_network_state
+ == CONNECTION_ETHERNET_STATE_CONNECTED
+ || system_cellular_state
+ == CONNECTION_CELLULAR_STATE_AVAILABLE
+ || system_wifi_state
+ == CONNECTION_WIFI_STATE_CONNECTED))
continue;
+
// check auto-retrying list regardless state. pended state is also included to checking list.
int i = 0;
download_dbinfo_list *db_list =
download_provider_db_get_list(DOWNLOAD_STATE_NONE);
if (!db_list || db_list->count <= 0) {
- TRACE_DEBUG_MSG
+ TRACE_DEBUG_INFO_MSG
("provider does not need to check DB anymore. in this life.");
check_retry = 0; // provider does not need to check DB anymore. in this life.
if (db_list)
@@ -784,14 +815,14 @@ void *run_manage_download_server(void *args)
if (get_same_request_slot_index
(clientinfo_list,db_list->item[i].requestid) < 0) {
// not found requestid in memory
- TRACE_DEBUG_MSG
+ TRACE_DEBUG_INFO_MSG
("Retry download [%d]",
db_list->item[i].requestid);
//search empty slot. copy db info to slot.
searchslot =
get_empty_slot_index(clientinfo_list);
if (searchslot < 0) {
- TRACE_DEBUG_MSG
+ TRACE_DEBUG_INFO_MSG
("download-provider is busy, try later");
flexible_timeout =
flexible_timeout * 2;
@@ -816,7 +847,7 @@ void *run_manage_download_server(void *args)
clientinfo_list[searchslot].clientinfo =
request_clientinfo;
- TRACE_DEBUG_MSG
+ TRACE_DEBUG_INFO_MSG
("Retry download [%d/%d][%d/%d]",
searchslot, MAX_CLIENT,
count_downloading_threads,
@@ -853,7 +884,7 @@ void *run_manage_download_server(void *args)
DOWNLOAD_PROVIDER_CARE_CLIENT_MAX_INTERVAL)
flexible_timeout =
DOWNLOAD_PROVIDER_CARE_CLIENT_MAX_INTERVAL;
- TRACE_DEBUG_MSG("Next Timeout after [%ld] sec",
+ TRACE_DEBUG_INFO_MSG("Next Timeout after [%ld] sec",
flexible_timeout);
} // if (i >= MAX_CLIENT) { // timeout
@@ -898,8 +929,8 @@ void __download_info_cb(user_download_info_t *download_info, void *user_data)
TRACE_DEBUG_MSG("[CRITICAL] clientinfo is NULL");
return;
}
- TRACE_DEBUG_MSG("id[%d],size[%lu]",
- download_info->da_dl_req_id, download_info->file_size)
+ TRACE_DEBUG_INFO_MSG("id[%d],size[%lu]",
+ download_info->da_dl_req_id, download_info->file_size);
if (clientinfo->req_id != download_info->da_dl_req_id) {
TRACE_DEBUG_MSG("[CRITICAL] req_id[%d] da_dl_req_id[%d}",
@@ -914,7 +945,7 @@ void __download_info_cb(user_download_info_t *download_info, void *user_data)
if (clientinfo->downloadinfo)
clientinfo->downloadinfo->file_size = download_info->file_size;
if (download_info->file_type) {
- TRACE_DEBUG_MSG("mime[%s]", download_info->file_type);
+ TRACE_DEBUG_INFO_MSG("mime[%s]", download_info->file_type);
len = strlen(download_info->file_type);
if (len > (DP_MAX_STR_LEN - 1))
@@ -928,7 +959,7 @@ void __download_info_cb(user_download_info_t *download_info, void *user_data)
}
if (download_info->tmp_saved_path) {
char *str = NULL;
- TRACE_DEBUG_MSG("tmp path[%s]", download_info->tmp_saved_path);
+ TRACE_DEBUG_INFO_MSG("tmp path[%s]", download_info->tmp_saved_path);
clientinfo->tmp_saved_path =
strdup(download_info->tmp_saved_path);
download_provider_db_requestinfo_update_column(clientinfo,
@@ -944,7 +975,7 @@ void __download_info_cb(user_download_info_t *download_info, void *user_data)
str, len);
download_provider_db_requestinfo_update_column
(clientinfo, DOWNLOAD_DB_FILENAME);
- TRACE_DEBUG_MSG("content_name[%s]",
+ TRACE_DEBUG_INFO_MSG("content_name[%s]",
clientinfo->downloadinfo->
content_name);
}
@@ -988,13 +1019,18 @@ void __downloading_info_cb(user_downloading_info_t *download_info,
clientinfo->downloadinginfo->received_size =
download_info->total_received_size;
if (download_info->saved_path) {
- TRACE_DEBUG_MSG("tmp path[%s]", download_info->saved_path);
+ TRACE_DEBUG_INFO_MSG("tmp path[%s]", download_info->saved_path);
len = strlen(download_info->saved_path);
if (len > (DP_MAX_PATH_LEN - 1))
len = DP_MAX_PATH_LEN - 1;
if (clientinfo->downloadinginfo)
strncpy(clientinfo->downloadinginfo->saved_path,
download_info->saved_path, len);
+ /* FIXME : This should be reviewd again after smack rules is applied */
+ if (chown(clientinfo->downloadinginfo->saved_path,
+ clientinfo->credentials.uid,
+ clientinfo->credentials.gid) < 0)
+ TRACE_DEBUG_INFO_MSG("Fail to chown [%s]", strerror(errno));
}
static size_t updated_second;
@@ -1027,7 +1063,7 @@ void __notify_cb(user_notify_info_t *notify_info, void *user_data)
return;
}
- TRACE_DEBUG_MSG("id[%d],state[%d],err[%d]",
+ TRACE_DEBUG_INFO_MSG("id[%d],state[%d],err[%d]",
notify_info->da_dl_req_id,
notify_info->state, notify_info->err);
if (clientinfo->req_id != notify_info->da_dl_req_id) {
@@ -1049,11 +1085,11 @@ void __notify_cb(user_notify_info_t *notify_info, void *user_data)
requestinfo->requestid);
}
download_provider_db_history_new(clientinfo);
- TRACE_DEBUG_MSG("[TEST]Finish clientinfo[%p],fd[%d]",
+ TRACE_DEBUG_INFO_MSG("[TEST]Finish clientinfo[%p],fd[%d]",
clientinfo, clientinfo->clientfd);
}
- TRACE_DEBUG_MSG("state[%d]", clientinfo->state);
+ TRACE_DEBUG_INFO_MSG("state[%d]", clientinfo->state);
ipc_send_stateinfo(clientinfo);
CLIENT_MUTEX_UNLOCK(&(clientinfo->client_mutex));
@@ -1065,44 +1101,44 @@ int __change_state(da_state state)
switch (state) {
case DA_STATE_WAITING:
case DA_STATE_DOWNLOAD_STARTED:
- TRACE_DEBUG_MSG("DA_STATE_DOWNLOAD_STARTED");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_DOWNLOAD_STARTED");
ret = DOWNLOAD_STATE_READY;
break;
case DA_STATE_DOWNLOADING:
- TRACE_DEBUG_MSG("DA_STATE_DOWNLOADING");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_DOWNLOADING");
ret = DOWNLOAD_STATE_DOWNLOADING;
break;
case DA_STATE_DOWNLOAD_COMPLETE:
- TRACE_DEBUG_MSG("DA_STATE_COMPLETE");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_COMPLETE");
ret = DOWNLOAD_STATE_INSTALLING;
break;
case DA_STATE_CANCELED:
- TRACE_DEBUG_MSG("DA_STATE_CANCELED");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_CANCELED");
ret = DOWNLOAD_STATE_STOPPED;
break;
case DA_STATE_CANCELED_ALL:
- TRACE_DEBUG_MSG("DA_STATE_CANCELED_ALL");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_CANCELED_ALL");
break;
case DA_STATE_SUSPENDED:
- TRACE_DEBUG_MSG("DA_STATE_SUSPENDED");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_SUSPENDED");
ret = DOWNLOAD_STATE_PAUSED;
break;
case DA_STATE_SUSPENDED_ALL:
- TRACE_DEBUG_MSG("DA_STATE_SUSPENDED_ALL");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_SUSPENDED_ALL");
break;
case DA_STATE_RESUMED:
- TRACE_DEBUG_MSG("DA_STATE_RESUMED");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_RESUMED");
ret = DOWNLOAD_STATE_DOWNLOADING;
break;
case DA_STATE_RESUMED_ALL:
- TRACE_DEBUG_MSG("DA_STATE_RESUMED_ALL");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_RESUMED_ALL");
break;
case DA_STATE_FINISHED:
- TRACE_DEBUG_MSG("DA_STATE_FINISHED");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_FINISHED");
ret = DOWNLOAD_STATE_FINISHED;
break;
case DA_STATE_FAILED:
- TRACE_DEBUG_MSG("DA_STATE_FAILED");
+ TRACE_DEBUG_INFO_MSG("DA_STATE_FAILED");
ret = DOWNLOAD_STATE_FAILED;
break;
default:
diff --git a/src/download-provider-utils.c b/src/download-provider-utils.c
index 2270534..59b19ca 100644
--- a/src/download-provider-utils.c
+++ b/src/download-provider-utils.c
@@ -27,7 +27,7 @@ int get_download_request_id(void)
uniquetime = uniquetime + (tval.tv_usec + 1) % 0xfffff;
else
uniquetime = uniquetime + tval.tv_usec;
- TRACE_DEBUG_MSG("ID : %d", uniquetime);
+ TRACE_DEBUG_INFO_MSG("ID : %d", uniquetime);
} while (last_uniquetime == uniquetime);
last_uniquetime = uniquetime; // store
return uniquetime;
@@ -49,7 +49,7 @@ void clear_socket(download_clientinfo *clientinfo)
void clear_clientinfo(download_clientinfo *clientinfo)
{
- TRACE_DEBUG_MSG("[TEST] clear [%p]",clientinfo);
+ TRACE_DEBUG_INFO_MSG("[TEST] clear [%p]",clientinfo);
// clear this slot
if (!clientinfo)
return;
@@ -111,7 +111,6 @@ void clear_clientinfo(download_clientinfo *clientinfo)
void clear_clientinfoslot(download_clientinfo_slot *clientinfoslot)
{
- TRACE_DEBUG_MSG("");
// clear this slot
if (!clientinfoslot)
return;