]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_http_media_cache.c: Fix merge errors from 18 -> master
authorSean Bright <sean.bright@gmail.com>
Fri, 2 Jul 2021 15:15:05 +0000 (11:15 -0400)
committerGeorge Joseph <gjoseph@digium.com>
Mon, 19 Jul 2021 17:38:25 +0000 (12:38 -0500)
ASTERISK-27871 #close

Change-Id: I6624f2d3a57f76a89bb372ef54a124929a0338d7

res/res_http_media_cache.c
tests/test_http_media_cache.c

index ba9428d597ce19ce2a0560bbf6dc93108b492706..54105662a4f680d9835180aa4f98cdf254f6ad4c 100644 (file)
@@ -40,6 +40,7 @@
 #include "asterisk/bucket.h"
 #include "asterisk/sorcery.h"
 #include "asterisk/threadstorage.h"
+#include "asterisk/uri.h"
 
 #define GLOBAL_USERAGENT "asterisk-libcurl-agent/1.0"
 
@@ -229,84 +230,23 @@ static char *file_extension_from_content_type(struct ast_bucket_file *bucket_fil
        return NULL;
 }
 
-/* The URL parsing API was introduced in 7.62.0 */
-#if LIBCURL_VERSION_NUM >= 0x073e00
-
 static char *file_extension_from_url_path(struct ast_bucket_file *bucket_file, char *buffer, size_t capacity)
 {
-       char *path;
-       CURLU *h;
-
-       h = curl_url();
-       if (!h) {
-               ast_log(LOG_ERROR, "Failed to allocate cURL URL handle\n");
-               return NULL;
-       }
+       struct ast_uri *uri;
 
-       if (curl_url_set(h, CURLUPART_URL, ast_sorcery_object_get_id(bucket_file), 0)) {
-               ast_log(LOG_ERROR, "Failed to parse URL: %s\n",
+       uri = ast_uri_parse(ast_sorcery_object_get_id(bucket_file));
+       if (!uri) {
+               ast_log(LOG_ERROR, "Failed to parse URI: %s\n",
                        ast_sorcery_object_get_id(bucket_file));
-               curl_url_cleanup(h);
                return NULL;
        }
 
-       curl_url_get(h, CURLUPART_PATH, &path, 0);
-
        /* Just parse it as a string like before, but without the extra cruft */
-       buffer = file_extension_from_string(path, buffer, capacity);
-
-       curl_free(path);
-       curl_url_cleanup(h);
-
+       buffer = file_extension_from_string(ast_uri_path(uri), buffer, capacity);
+       ao2_cleanup(uri);
        return buffer;
 }
 
-#elif defined(HAVE_URIPARSER)
-
-#include <uriparser/Uri.h>
-
-static char *file_extension_from_url_path(struct ast_bucket_file *bucket_file, char *buffer, size_t capacity)
-{
-       UriParserStateA state;
-       UriUriA full_uri;
-       char *path;
-
-       state.uri = &full_uri;
-       if (uriParseUriA(&state, ast_sorcery_object_get_id(bucket_file)) != URI_SUCCESS
-          || !full_uri.scheme.first
-          || !full_uri.scheme.afterLast
-          || !full_uri.pathTail) {
-               ast_log(LOG_ERROR, "Failed to parse URL: %s\n",
-                       ast_sorcery_object_get_id(bucket_file));
-               uriFreeUriMembersA(&full_uri);
-               return NULL;
-       }
-
-       if (ast_asprintf(&path,
-                       "%.*s",
-                       (int) (full_uri.pathTail->text.afterLast - full_uri.pathTail->text.first),
-                       full_uri.pathTail->text.first) != -1) {
-               /* Just parse it as a string like before, but without the extra cruft */
-               file_extension_from_string(path, buffer, capacity);
-               ast_free(path);
-               uriFreeUriMembersA(&full_uri);
-               return buffer;
-       }
-
-       uriFreeUriMembersA(&full_uri);
-       return NULL;
-}
-
-#else
-
-static char *file_extension_from_url_path(struct ast_bucket_file *bucket_file, char *buffer, size_t capacity)
-{
-       /* NOP */
-       return NULL;
-}
-
-#endif
-
 static void bucket_file_set_extension(struct ast_bucket_file *bucket_file)
 {
        /* We will attempt to determine an extension in the following order for backwards
index dfb28b703e0e0372d37e14be08ab8f5a688ea118..90d1aef716857ed4110fb74b65623710422d24f1 100644 (file)
 #include "asterisk/bucket.h"
 #include "asterisk/test.h"
 
-#undef INCLUDE_URI_PARSING_TESTS
-#if defined(HAVE_CURL)
-# include <curl/curl.h>
-#endif
-#if (defined(HAVE_CURL) && LIBCURL_VERSION_NUM >= 0x073e00) || defined(HAVE_URIPARSER)
-# define INCLUDE_URI_PARSING_TESTS 1
-#endif
-
 #define CATEGORY "/res/http_media_cache/"
 
 #define TEST_URI "test_media_cache"
@@ -268,7 +260,6 @@ AST_TEST_DEFINE(retrieve_content_type)
        return AST_TEST_PASS;
 }
 
-#ifdef INCLUDE_URI_PARSING_TESTS
 AST_TEST_DEFINE(retrieve_parsed_uri)
 {
        RAII_VAR(struct ast_bucket_file *, bucket_file, NULL, bucket_file_cleanup);
@@ -302,7 +293,6 @@ AST_TEST_DEFINE(retrieve_parsed_uri)
 
        return AST_TEST_PASS;
 }
-#endif
 
 AST_TEST_DEFINE(retrieve_cache_control_directives)
 {
@@ -754,11 +744,8 @@ static int load_module(void)
        AST_TEST_REGISTER(retrieve_etag_expired);
        AST_TEST_REGISTER(retrieve_cache_control_age);
        AST_TEST_REGISTER(retrieve_cache_control_directives);
-       AST_TEST_REGISTER(retrieve_content_type);
-
-#ifdef INCLUDE_URI_PARSING_TESTS
        AST_TEST_REGISTER(retrieve_parsed_uri);
-#endif
+       AST_TEST_REGISTER(retrieve_content_type);
 
        ast_test_register_init(CATEGORY, pre_test_cb);
 
@@ -777,11 +764,8 @@ static int unload_module(void)
        AST_TEST_UNREGISTER(retrieve_etag_expired);
        AST_TEST_UNREGISTER(retrieve_cache_control_age);
        AST_TEST_UNREGISTER(retrieve_cache_control_directives);
-       AST_TEST_REGISTER(retrieve_content_type);
-
-#ifdef INCLUDE_URI_PARSING_TESTS
        AST_TEST_REGISTER(retrieve_parsed_uri);
-#endif
+       AST_TEST_REGISTER(retrieve_content_type);
 
        return 0;
 }