Accept spaces in URL 36/289536/2
authorSeonah Moon <seonah1.moon@samsung.com>
Thu, 9 Mar 2023 08:14:00 +0000 (17:14 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Thu, 9 Mar 2023 08:19:39 +0000 (17:19 +0900)
Change-Id: I1a9023e77596c04b736ce56b21eb1e4a6c70a30f

agent/download-agent-plugin-libcurl.c
packaging/download-provider.spec

index e3023dd..e87a338 100755 (executable)
@@ -422,6 +422,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;
@@ -444,8 +469,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);
 
@@ -474,6 +498,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:
@@ -585,6 +610,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;
 
 }
index 2e50fcf..ba4f7a4 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       download-provider
 Summary:    Download the contents in background
-Version:    2.3.7
+Version:    2.3.8
 Release:    0
 Group:      Development/Libraries
 License:    Apache-2.0