summaryrefslogtreecommitdiff
path: root/libavformat/utils.c
diff options
context:
space:
mode:
authorDuncan Salerno <duncan.salerno@gmail.com>2012-10-06 02:02:18 +0300
committerMartin Storsjö <martin@martin.st>2012-10-09 14:16:33 +0300
commit33893e6abcdca865c06c64547be56070c64aa590 (patch)
treedd827552846aa7d98639bd8dbc4e76c093f23312 /libavformat/utils.c
parenteea003814cc5afaea546a6d229690350bd7481af (diff)
url: Handle relative urls starting with two slashes
This is defined by RFC 3986 section 5.4.1 to be handled this way. Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r--libavformat/utils.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 9d0049a9ad..ca52469bdb 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3396,10 +3396,16 @@ void ff_make_absolute_url(char *buf, int size, const char *base,
av_strlcpy(buf, base, size);
sep = strstr(buf, "://");
if (sep) {
- sep += 3;
- sep = strchr(sep, '/');
- if (sep)
- *sep = '\0';
+ /* Take scheme from base url */
+ if (rel[1] == '/') {
+ sep[1] = '\0';
+ } else {
+ /* Take scheme and host from base url */
+ sep += 3;
+ sep = strchr(sep, '/');
+ if (sep)
+ *sep = '\0';
+ }
}
av_strlcat(buf, rel, size);
return;