Browse Source

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

pull/2776/head
Alessandro Ros 1 year 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" @@ -4,9 +4,19 @@ import "net/url"
// LocationWithTrailingSlash returns the URL in a relative format, with a trailing slash.
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 != "" {
l += "?" + u.RawQuery
}
return l
}

7
internal/protocols/httpserv/location_with_trailing_slash_test.go

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

Loading…
Cancel
Save