blob: 7e6395c47bf69bac2aaffdbd21b4ee85b04bd527 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
Testing ff_url_decompose:
http://user:pass@ffmpeg:8080/dir/file?query#fragment =>
scheme: http:
authority: //
userinfo: user:pass@
host: ffmpeg
port: :8080
path: /dir/file
query: ?query
fragment: #fragment
http://ffmpeg/dir/file =>
scheme: http:
authority: //
host: ffmpeg
path: /dir/file
file:///dev/null =>
scheme: file:
authority: //
path: /dev/null
file:/dev/null =>
scheme: file:
path: /dev/null
http://[::1]/dev/null =>
scheme: http:
authority: //
host: [::1]
path: /dev/null
http://[::1]:8080/dev/null =>
scheme: http:
authority: //
host: [::1]
port: :8080
path: /dev/null
//ffmpeg/dev/null =>
authority: //
host: ffmpeg
path: /dev/null
Testing ff_make_absolute_url:
(null) baz => baz
/foo/bar baz => /foo/baz
/foo/bar ../baz => /foo/../baz
/foo/bar /baz => /baz
/foo/bar ../../../baz => /foo/../../../baz
http://server/foo/ baz => http://server/foo/baz
http://server/foo/bar baz => http://server/foo/baz
http://server/foo/ ../baz => http://server/baz
http://server/foo/bar/123 ../../baz => http://server/baz
http://server/foo/bar/123 /baz => http://server/baz
http://server/foo/bar/123 https://other/url => https://other/url
http://server/foo/bar?param=value/with/slashes /baz => http://server/baz
http://server/foo/bar?param&otherparam ?someparam => http://server/foo/bar?someparam
http://server/foo/bar //other/url => http://other/url
http://server/foo/bar ../../../../../other/url => http://server/other/url
http://server/foo/bar /../../../../../other/url => http://server/other/url
http://server/foo/bar /test/../../../../../other/url => http://server/other/url
http://server/foo/bar /test/../../test/../../../other/url => http://server/other/url
http://server/foo/bar file:../baz/qux => file:../baz/qux
http://server/foo//bar/ ../../ => http://server/foo/
file:../tmp/foo ../bar/ => file:../tmp/../bar/
file:../tmp/foo file:../bar/ => file:../bar/
http://server/foo/bar ./ => http://server/foo/
http://server/foo/bar .dotfile => http://server/foo/.dotfile
http://server/foo/bar ..doubledotfile => http://server/foo/..doubledotfile
http://server/foo/bar double..dotfile => http://server/foo/double..dotfile
http://server/foo/bar doubledotfile.. => http://server/foo/doubledotfile..
http://a/b/c/d;p?q g:h => g:h
http://a/b/c/d;p?q g => http://a/b/c/g
http://a/b/c/d;p?q ./g => http://a/b/c/g
http://a/b/c/d;p?q g/ => http://a/b/c/g/
http://a/b/c/d;p?q /g => http://a/g
http://a/b/c/d;p?q //g => http://g
http://a/b/c/d;p?q ?y => http://a/b/c/d;p?y
http://a/b/c/d;p?q g?y => http://a/b/c/g?y
http://a/b/c/d;p?q #s => http://a/b/c/d;p?q#s
http://a/b/c/d;p?q g#s => http://a/b/c/g#s
http://a/b/c/d;p?q g?y#s => http://a/b/c/g?y#s
http://a/b/c/d;p?q ;x => http://a/b/c/;x
http://a/b/c/d;p?q g;x => http://a/b/c/g;x
http://a/b/c/d;p?q g;x?y#s => http://a/b/c/g;x?y#s
http://a/b/c/d;p?q => http://a/b/c/d;p?q
http://a/b/c/d;p?q . => http://a/b/c/
http://a/b/c/d;p?q ./ => http://a/b/c/
http://a/b/c/d;p?q .. => http://a/b/
http://a/b/c/d;p?q ../ => http://a/b/
http://a/b/c/d;p?q ../g => http://a/b/g
http://a/b/c/d;p?q ../.. => http://a/
http://a/b/c/d;p?q ../../ => http://a/
http://a/b/c/d;p?q ../../g => http://a/g
http://a/b/c/d;p?q ../../../g => http://a/g
http://a/b/c/d;p?q ../../../../g => http://a/g
http://a/b/c/d;p?q /./g => http://a/g
http://a/b/c/d;p?q /../g => http://a/g
http://a/b/c/d;p?q g. => http://a/b/c/g.
http://a/b/c/d;p?q .g => http://a/b/c/.g
http://a/b/c/d;p?q g.. => http://a/b/c/g..
http://a/b/c/d;p?q ..g => http://a/b/c/..g
http://a/b/c/d;p?q ./../g => http://a/b/g
http://a/b/c/d;p?q ./g/. => http://a/b/c/g/
http://a/b/c/d;p?q g/./h => http://a/b/c/g/h
http://a/b/c/d;p?q g/../h => http://a/b/c/h
http://a/b/c/d;p?q g;x=1/./y => http://a/b/c/g;x=1/y
http://a/b/c/d;p?q g;x=1/../y => http://a/b/c/y
http://a/b/c/d;p?q g?y/./x => http://a/b/c/g?y/./x
http://a/b/c/d;p?q g?y/../x => http://a/b/c/g?y/../x
http://a/b/c/d;p?q g#s/./x => http://a/b/c/g#s/./x
http://a/b/c/d;p?q g#s/../x => http://a/b/c/g#s/../x
Testing av_url_split:
/foo/bar => -1 /foo/bar
http://server/foo/ => http server -1 /foo/
http://example.com/foo/bar => http example.com -1 /foo/bar
http://user:pass@localhost:8080/foo/bar/123 => http user:pass localhost 8080 /foo/bar/123
http://server/foo/bar?param=value/with/slashes => http server -1 /foo/bar?param=value/with/slashes
https://1l-lh.a.net/i/1LIVE_HDS@179577/master.m3u8 => https 1l-lh.a.net -1 /i/1LIVE_HDS@179577/master.m3u8
ftp://u:p%2B%2F2@ftp.pbt.com/ExportHD.mpg => ftp u:p%2B%2F2 ftp.pbt.com -1 /ExportHD.mpg
https://key.dns.com?key_id=2&model_id=12345&&access_key= => https key.dns.com -1 ?key_id=2&model_id=12345&&access_key=
http://example.com#tag => http example.com -1 #tag
|