From b083ae72b8f6e6235987484f783923c0a35f173d Mon Sep 17 00:00:00 2001 From: Seonah Moon Date: Thu, 9 Mar 2023 17:14:00 +0900 Subject: [PATCH] Accept spaces in URL Change-Id: Ia99ac55593ec6018a1744ea098805199ced18292 --- agent/download-agent-plugin-libcurl.c | 30 ++++++++++++++++++++++++++++-- packaging/download-provider.spec | 2 +- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/agent/download-agent-plugin-libcurl.c b/agent/download-agent-plugin-libcurl.c index 622c06d..7d318ab 100755 --- a/agent/download-agent-plugin-libcurl.c +++ b/agent/download-agent-plugin-libcurl.c @@ -425,6 +425,31 @@ int __http_progress_cb(void *clientp, double dltotal, double dlnow, } #endif +static char *__get_encoded_url(const char *url) +{ + GString *encoded_url = g_string_new(""); + const char *base = url; + + do { + const char *found = strstr(base, " "); + if (!found) { + encoded_url = g_string_append(encoded_url, base); + break; + } + + encoded_url = g_string_append_len(encoded_url, base, found - base); + encoded_url = g_string_append(encoded_url, "%20"); + base = found + 1; + } while (TRUE); + + char *result = encoded_url->str; + g_string_free(encoded_url, FALSE); + + DA_LOGI("encoded url[%s]", result); + + return result; +} + da_ret_t PI_http_start(da_info_t *da_info) { da_ret_t ret = DA_RESULT_OK; @@ -447,8 +472,7 @@ da_ret_t PI_http_start(da_info_t *da_info) #endif NULL_CHECK_GOTO(da_info); NULL_CHECK_GOTO(da_info->req_info); - url = da_info->req_info->url; - NULL_CHECK_GOTO(url); + NULL_CHECK_GOTO(da_info->req_info->url); http_info = da_info->http_info; NULL_CHECK_GOTO(http_info); @@ -477,6 +501,7 @@ da_ret_t PI_http_start(da_info_t *da_info) __set_proxy_on_soup_session(http_info->proxy_info, curl); + url = __get_encoded_url(da_info->req_info->url); curl_easy_setopt(curl, CURLOPT_URL, url); switch (http_method) { case HTTP_METHOD_GET: @@ -588,6 +613,7 @@ da_ret_t PI_http_start(da_info_t *da_info) DA_MUTEX_INIT(&(http_msg->mutex), DA_NULL); ERR: DA_LOGD("Done"); + free(url); return ret; } diff --git a/packaging/download-provider.spec b/packaging/download-provider.spec index faabe95..d868950 100755 --- a/packaging/download-provider.spec +++ b/packaging/download-provider.spec @@ -1,6 +1,6 @@ Name: download-provider Summary: Download the contents in background -Version: 2.3.9 +Version: 2.3.10 Release: 0 Group: Development/Libraries License: Apache-2.0 -- 2.7.4