This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 9e31cb26bbc [fix](parse_url) fix `parse_url` is not working in some
case to extract the HOST (#25040)
9e31cb26bbc is described below
commit 9e31cb26bbc7b33914d24c34e213efb07f170d06
Author: Guangdong Liu <[email protected]>
AuthorDate: Mon Oct 9 00:14:58 2023 +0800
[fix](parse_url) fix `parse_url` is not working in some case to extract the
HOST (#25040)
Issue Number: close #24452
---
be/src/util/url_parser.cpp | 5 +++++
be/test/vec/function/function_string_test.cpp | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/be/src/util/url_parser.cpp b/be/src/util/url_parser.cpp
index 149398b39a4..ddf09b65cbc 100644
--- a/be/src/util/url_parser.cpp
+++ b/be/src/util/url_parser.cpp
@@ -116,6 +116,11 @@ bool UrlParser::parse_url(const StringRef& url, UrlPart
part, StringRef* result)
}
StringRef host_start = protocol_end.substring(start_pos);
+ // Find first '?'.
+ int32_t query_start_pos = _s_question_search.search(&host_start);
+ if (query_start_pos > 0) {
+ host_start = host_start.substring(0, query_start_pos);
+ }
// Find ':' to strip out port.
int32_t end_pos = _s_colon_search.search(&host_start);
diff --git a/be/test/vec/function/function_string_test.cpp
b/be/test/vec/function/function_string_test.cpp
index 43bfb958cca..e5f4da64eb7 100644
--- a/be/test/vec/function/function_string_test.cpp
+++ b/be/test/vec/function/function_string_test.cpp
@@ -1003,6 +1003,10 @@ TEST(function_string_test, function_parse_url_test) {
{{std::string("facebook.com/path/p1"), std::string("HOST")},
{Null()}},
{{std::string("http://fb.com/path/p1.p?q=1#f"),
std::string("HOST")},
{std::string("fb.com")}},
+
{{std::string("https://www.facebook.com/aa/bb?returnpage=https://www.facebook.com/"
+ "aa/bb/cc"),
+ std::string("HOST")},
+ {std::string("www.facebook.com")}},
{{std::string("http://facebook.com/path/p1.php?query=1"),
std::string("AUTHORITY")},
{std::string("facebook.com")}},
{{std::string("http://facebook.com/path/p1.php?query=1"),
std::string("authority")},
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]