res_http_media_cache.c: Fix merge errors from 18 -> master

ASTERISK-27871 #close

Change-Id: I6624f2d3a57f76a89bb372ef54a124929a0338d7
19.0
Sean Bright 4 years ago committed by George Joseph
parent 237285a9a8
commit d5bb27a06f

@ -40,6 +40,7 @@
#include "asterisk/bucket.h" #include "asterisk/bucket.h"
#include "asterisk/sorcery.h" #include "asterisk/sorcery.h"
#include "asterisk/threadstorage.h" #include "asterisk/threadstorage.h"
#include "asterisk/uri.h"
#define GLOBAL_USERAGENT "asterisk-libcurl-agent/1.0" #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; 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) static char *file_extension_from_url_path(struct ast_bucket_file *bucket_file, char *buffer, size_t capacity)
{ {
char *path; struct ast_uri *uri;
CURLU *h;
h = curl_url();
if (!h) {
ast_log(LOG_ERROR, "Failed to allocate cURL URL handle\n");
return NULL;
}
if (curl_url_set(h, CURLUPART_URL, ast_sorcery_object_get_id(bucket_file), 0)) { uri = ast_uri_parse(ast_sorcery_object_get_id(bucket_file));
ast_log(LOG_ERROR, "Failed to parse URL: %s\n", if (!uri) {
ast_log(LOG_ERROR, "Failed to parse URI: %s\n",
ast_sorcery_object_get_id(bucket_file)); ast_sorcery_object_get_id(bucket_file));
curl_url_cleanup(h);
return NULL; return NULL;
} }
curl_url_get(h, CURLUPART_PATH, &path, 0);
/* Just parse it as a string like before, but without the extra cruft */ /* Just parse it as a string like before, but without the extra cruft */
buffer = file_extension_from_string(path, buffer, capacity); buffer = file_extension_from_string(ast_uri_path(uri), buffer, capacity);
ao2_cleanup(uri);
curl_free(path);
curl_url_cleanup(h);
return buffer; 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) 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 /* We will attempt to determine an extension in the following order for backwards

@ -41,14 +41,6 @@
#include "asterisk/bucket.h" #include "asterisk/bucket.h"
#include "asterisk/test.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 CATEGORY "/res/http_media_cache/"
#define TEST_URI "test_media_cache" #define TEST_URI "test_media_cache"
@ -268,7 +260,6 @@ AST_TEST_DEFINE(retrieve_content_type)
return AST_TEST_PASS; return AST_TEST_PASS;
} }
#ifdef INCLUDE_URI_PARSING_TESTS
AST_TEST_DEFINE(retrieve_parsed_uri) AST_TEST_DEFINE(retrieve_parsed_uri)
{ {
RAII_VAR(struct ast_bucket_file *, bucket_file, NULL, bucket_file_cleanup); 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; return AST_TEST_PASS;
} }
#endif
AST_TEST_DEFINE(retrieve_cache_control_directives) 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_etag_expired);
AST_TEST_REGISTER(retrieve_cache_control_age); AST_TEST_REGISTER(retrieve_cache_control_age);
AST_TEST_REGISTER(retrieve_cache_control_directives); AST_TEST_REGISTER(retrieve_cache_control_directives);
AST_TEST_REGISTER(retrieve_content_type);
#ifdef INCLUDE_URI_PARSING_TESTS
AST_TEST_REGISTER(retrieve_parsed_uri); AST_TEST_REGISTER(retrieve_parsed_uri);
#endif AST_TEST_REGISTER(retrieve_content_type);
ast_test_register_init(CATEGORY, pre_test_cb); 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_etag_expired);
AST_TEST_UNREGISTER(retrieve_cache_control_age); AST_TEST_UNREGISTER(retrieve_cache_control_age);
AST_TEST_UNREGISTER(retrieve_cache_control_directives); AST_TEST_UNREGISTER(retrieve_cache_control_directives);
AST_TEST_REGISTER(retrieve_content_type);
#ifdef INCLUDE_URI_PARSING_TESTS
AST_TEST_REGISTER(retrieve_parsed_uri); AST_TEST_REGISTER(retrieve_parsed_uri);
#endif AST_TEST_REGISTER(retrieve_content_type);
return 0; return 0;
} }

Loading…
Cancel
Save