{"action":"created","issue":{"url":"https://api.github.com/repos/mangui/flashls/issues/261","labels_url":"https://api.github.com/repos/mangui/flashls/issues/261/labels{/name}","comments_url":"https://api.github.com/repos/mangui/flashls/issues/261/comments","events_url":"https://api.github.com/repos/mangui/flashls/issues/261/events","html_url":"https://github.com/mangui/flashls/issues/261","id":71699687,"number":261,"title":"relative paths in playlist are broken by 302 redirect","user":{"login":"gkindel","id":1056322,"avatar_url":"https://avatars.githubusercontent.com/u/1056322?v=3","gravatar_id":"","url":"https://api.github.com/users/gkindel","html_url":"https://github.com/gkindel","followers_url":"https://api.github.com/users/gkindel/followers","following_url":"https://api.github.com/users/gkindel/following{/other_user}","gists_url":"https://api.github.com/users/gkindel/gists{/gist_id}","starred_url":"https://api.github.com/users/gkindel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gkindel/subscriptions","organizations_url":"https://api.github.com/users/gkindel/orgs","repos_url":"https://api.github.com/users/gkindel/repos","events_url":"https://api.github.com/users/gkindel/events{/privacy}","received_events_url":"https://api.github.com/users/gkindel/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mangui/flashls/labels/help%20wanted","name":"help wanted","color":"159818"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-04-28T20:54:14Z","updated_at":"2015-06-30T23:20:30Z","closed_at":null,"body":"What:  \r\nRelative paths in m3u8s are wrong if manifest result of redirect.\r\n\r\nSteps:\r\nCreate a rewrite rule which redirects any path to an externally hosted m3u8 which contains relative paths (anything not in the same directory).\r\n\r\nExpect: \r\nURIs in the playlist are resolve relative to the redirect target url.\r\n\r\nActual:\r\nURIs are being resolved relative to the pre-redirect base, which 404.\r\n\r\nSpecs are a bit hard to read on this.  The HLS spec calls out:\r\n> 3.1:\r\n>    A URI in a Playlist, whether it is a URI line or part of a tag, MAY\r\n>    be relative.  Relative URIs MUST be resolved against the URI of the\r\n>   Playlist file that contains it.\r\n\r\nWhile the URI spec:\r\n> 5.1.3.  Base URI from the Retrieval URI\r\n>  ...if the retrieval was the result of a redirected request, the last URI\r\n>   used (i.e., the URI that resulted in the actual retrieval of the\r\n>   representation) is the base URI.\r\n\r\nMore importantly, I've tested against Safari and iOS and they both use the redirect results as base.\r\n\r\nThis is a bit of a corner case and probably one I can patch for you, but wanted to record it here. URLLoader should return the redirect target in the HTTPStatusEvent, if that's available for our runtime. I'll look around.\r\n\r\nReproduced on v0.4.0.5 and v0.3.1."},"comment":{"url":"https://api.github.com/repos/mangui/flashls/issues/comments/117370841","html_url":"https://github.com/mangui/flashls/issues/261#issuecomment-117370841","issue_url":"https://api.github.com/repos/mangui/flashls/issues/261","id":117370841,"user":{"login":"gkindel","id":1056322,"avatar_url":"https://avatars.githubusercontent.com/u/1056322?v=3","gravatar_id":"","url":"https://api.github.com/users/gkindel","html_url":"https://github.com/gkindel","followers_url":"https://api.github.com/users/gkindel/followers","following_url":"https://api.github.com/users/gkindel/following{/other_user}","gists_url":"https://api.github.com/users/gkindel/gists{/gist_id}","starred_url":"https://api.github.com/users/gkindel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gkindel/subscriptions","organizations_url":"https://api.github.com/users/gkindel/orgs","repos_url":"https://api.github.com/users/gkindel/repos","events_url":"https://api.github.com/users/gkindel/events{/privacy}","received_events_url":"https://api.github.com/users/gkindel/received_events","type":"User","site_admin":false},"created_at":"2015-06-30T23:20:30Z","updated_at":"2015-06-30T23:20:30Z","body":"Haven't looked into it for a bit. We were able to workaround by using absolute paths on our dynamically generated manifests, and then other priorities kicked in.  \r\n\r\nWe are actually still on a patched 0.3 version of the player, as last time i pulled trunk we had stability problems that i could not easily diagnose.  I believe they were related to the bug i fixed in 0.3 related to the video never officially ending due to the buffer never being fully drained.  With the rewrite of that class along back buffering, I haven't re-applied the logic to 0.4 to see if it helps us reliably fire a complete event.\r\n\r\nI interested fixing the issue, but I am traveling currently without a computer until mid July.  "}}