summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/httplive
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2014-02-10 16:42:46 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-02-10 16:42:46 +0000
commit8519b8a1298d80949edadce9c8f0963ef62cc3ff (patch)
treed36d166f6f6ad9e745aaad7151102f7b107ef40c /media/libstagefright/httplive
parente2307ccbab9c32a7806f15c2572cfe6ec428f2f5 (diff)
parent8883a38a308fb02a653c990118ec7931a47b749b (diff)
downloadframeworks_av-8519b8a1298d80949edadce9c8f0963ef62cc3ff.zip
frameworks_av-8519b8a1298d80949edadce9c8f0963ef62cc3ff.tar.gz
frameworks_av-8519b8a1298d80949edadce9c8f0963ef62cc3ff.tar.bz2
Merge "M3UParser: Skip query strings when looking for the last slash in a URL"
Diffstat (limited to 'media/libstagefright/httplive')
-rw-r--r--media/libstagefright/httplive/M3UParser.cpp34
1 files changed, 22 insertions, 12 deletions
diff --git a/media/libstagefright/httplive/M3UParser.cpp b/media/libstagefright/httplive/M3UParser.cpp
index dd248cb..292d1c4 100644
--- a/media/libstagefright/httplive/M3UParser.cpp
+++ b/media/libstagefright/httplive/M3UParser.cpp
@@ -416,22 +416,32 @@ static bool MakeURL(const char *baseURL, const char *url, AString *out) {
} else {
// URL is a relative path
- size_t n = strlen(baseURL);
- if (baseURL[n - 1] == '/') {
- out->setTo(baseURL);
- out->append(url);
+ // Check for a possible query string
+ const char *qsPos = strchr(baseURL, '?');
+ size_t end;
+ if (qsPos != NULL) {
+ end = qsPos - baseURL;
} else {
- const char *slashPos = strrchr(baseURL, '/');
-
- if (slashPos > &baseURL[6]) {
- out->setTo(baseURL, slashPos - baseURL);
- } else {
- out->setTo(baseURL);
+ end = strlen(baseURL);
+ }
+ // Check for the last slash before a potential query string
+ for (ssize_t pos - 1 = end; pos >= 0; pos--) {
+ if (baseURL[pos] == '/') {
+ end = pos;
+ break;
}
+ }
- out->append("/");
- out->append(url);
+ // Check whether the found slash actually is part of the path
+ // and not part of the "http://".
+ if (end > 6) {
+ out->setTo(baseURL, end);
+ } else {
+ out->setTo(baseURL);
}
+
+ out->append("/");
+ out->append(url);
}
ALOGV("base:'%s', url:'%s' => '%s'", baseURL, url, out->c_str());