daemon/handler: Refactoring for base64 decoding part
authorSangchul Lee <sc11.lee@samsung.com>
Tue, 16 May 2023 05:00:02 +0000 (14:00 +0900)
committer이상철/Tizen Platform Lab(SR)/삼성전자 <sc11.lee@samsung.com>
Tue, 16 May 2023 06:41:30 +0000 (15:41 +0900)
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
src/daemon/espp_service_handler.c

index 815dea7179ec1253847bc76152add24d495892cd..e63d0bc9bc6f02dfac5268cd2ef790f5e516cd53 100644 (file)
@@ -349,12 +349,29 @@ static void __handle_get_playing_time(handler_userdata_s *hdata, espp_service_da
        result->ret_time = time_ms;
 }
 
+guchar *__get_plain_string(const gchar *base64_str, uint32_t origin_len)
+{
+       guchar *str;
+       gsize len;
+
+       if (!base64_str)
+               return NULL;
+       if (origin_len == 0)
+               return NULL;
+
+       str = g_base64_decode(base64_str, &len);
+       ASSERT(len == origin_len);
+
+       LOG_DEBUG("base64_str[%s]", base64_str);
+
+       return str;
+}
+
 static void __handle_set_audio_stream_info(handler_userdata_s *hdata, espp_service_data_from_client_s *data, espp_service_data_from_server_s *result)
 {
        int ret;
        esplusplayer_audio_stream_info info;
        g_autofree guchar *codec_data = NULL;
-       gsize len;
 
        ASSERT(hdata);
        ASSERT(data);
@@ -373,12 +390,10 @@ static void __handle_set_audio_stream_info(handler_userdata_s *hdata, espp_servi
                return;
 
        /* NOTE that decoding 'codec_data' member with base64 here, see the client side. */
-       if (info.codec_data_length > 0) {
-               LOG_DEBUG("base64 codec_data[%s]", info.codec_data);
-               codec_data = g_base64_decode((gchar *)info.codec_data, &len);
-               ASSERT(len == info.codec_data_length);
-               info.codec_data = (char *)codec_data;
-       }
+       codec_data = __get_plain_string((const gchar *)info.codec_data, info.codec_data_length);
+       g_free(info.codec_data);
+       info.codec_data = (char *)codec_data;
+
        ret = esplusplayer_set_audio_stream_info((esplusplayer_handle)hdata->espp, &info);
        RET_IF(ret != ESPLUSPLAYER_ERROR_TYPE_NONE, "failed to esplusplayer_set_audio_stream_info(), ESPP[%p]", hdata->espp);
 
@@ -392,7 +407,6 @@ static void __handle_set_video_stream_info(handler_userdata_s *hdata, espp_servi
        int ret;
        esplusplayer_video_stream_info info;
        g_autofree guchar *codec_data = NULL;
-       gsize len;
 
        ASSERT(hdata);
        ASSERT(data);
@@ -412,12 +426,10 @@ static void __handle_set_video_stream_info(handler_userdata_s *hdata, espp_servi
                return;
 
        /* NOTE that decoding 'codec_data' member with base64 here, see the client side. */
-       if (info.codec_data_length > 0) {
-               LOG_DEBUG("base64 codec_data[%s]", info.codec_data);
-               codec_data = g_base64_decode((gchar *)info.codec_data, &len);
-               ASSERT(len == info.codec_data_length);
-               info.codec_data = (char *)codec_data;
-       }
+       codec_data = __get_plain_string((const gchar *)info.codec_data, info.codec_data_length);
+       g_free(info.codec_data);
+       info.codec_data = (char *)codec_data;
+
        ret = esplusplayer_set_video_stream_info((esplusplayer_handle)hdata->espp, &info);
        RET_IF(ret != ESPLUSPLAYER_ERROR_TYPE_NONE, "failed to esplusplayer_set_video_stream_info(), ESPP[%p]", hdata->espp);