Browse Source

hls, webrtc: fix appending slash to paths that contain slashes (#2773)

pull/2776/head
Alessandro Ros 2 years ago committed by GitHub
parent
commit
3e12f83732
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      internal/protocols/httpserv/location_with_trailing_slash.go
  2. 7
      internal/protocols/httpserv/location_with_trailing_slash_test.go

12
internal/protocols/httpserv/location_with_trailing_slash.go

@ -4,9 +4,19 @@ import "net/url"
// LocationWithTrailingSlash returns the URL in a relative format, with a trailing slash. // LocationWithTrailingSlash returns the URL in a relative format, with a trailing slash.
func LocationWithTrailingSlash(u *url.URL) string { func LocationWithTrailingSlash(u *url.URL) string {
l := "./" + u.Path[1:] + "/" l := "./"
for i := 1; i < len(u.Path); i++ {
if u.Path[i] == '/' {
l += "../"
}
}
l += u.Path[1:] + "/"
if u.RawQuery != "" { if u.RawQuery != "" {
l += "?" + u.RawQuery l += "?" + u.RawQuery
} }
return l return l
} }

7
internal/protocols/httpserv/location_with_trailing_slash_test.go

@ -28,6 +28,13 @@ func TestLocationWithTrailingSlash(t *testing.T) {
}, },
"./www.example.com/", "./www.example.com/",
}, },
{
"slashes in path",
&url.URL{
Path: "/my/path",
},
"./../my/path/",
},
} { } {
t.Run(ca.name, func(t *testing.T) { t.Run(ca.name, func(t *testing.T) {
require.Equal(t, ca.loc, LocationWithTrailingSlash(ca.url)) require.Equal(t, ca.loc, LocationWithTrailingSlash(ca.url))

Loading…
Cancel
Save