[vlc-devel] [PATCH 1/2] http2: fix up URLs

Rémi Denis-Courmont remi at remlab.net
Fri Oct 9 09:59:24 CEST 2020


Hi,

#3435 is fixed. VLC can parse file paths and insufficiently encoded URLs from playlists or redirects just fine. We have to do the fixup there in the producer so that relative-to-absolute resolution works.m properly.

Validation must be done in access because it can't be done earlier due to the different rules for different MRL schemes.

Le 9 octobre 2020 10:41:28 GMT+03:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>I remember a previous discussion where we said it was the
>responsibility of the access modules to do this fixup.
>
>cf. https://trac.videolan.org/vlc/ticket/18991 and
>https://git.videolan.org/?p=vlc.git;a=commit;h=762ca1e8a01278b34ddb34765f3339690aad5d2e
>
>I'm not sure that URLs are fixed up at this point.
>
>How do you propose to fix #3435
><https://trac.videolan.org/vlc/ticket/3435> then? Because you said it
>was fixed but it is *not*. VLC can't handle unvalid http URLs with a "
>". Every other player or browsers can.
>
>On Fri, Oct 9, 2020, at 09:26, Rémi Denis-Courmont wrote:
>> URLs are already fixed up when they get to this point. Fixing up URLs
>twice is a recipe for disaster. We've tried.
>> 
>> -1
>> 
>> Le 9 octobre 2020 09:56:58 GMT+03:00, Thomas Guillem <thomas at gllm.fr>
>a écrit :
>>> This will allow VLC to open unvalid URLs (using a space instead of
>the
>>> %20 encoding, for example). Every other browsers or players are
>doing
>>> this fixup.
>>> 
>>> Fixes #3435 modules/access/http/access.c | 12 ++++++++++--
>>>  1 file changed, 10 insertions(+), 2 deletions(-)
>>> 
>>> diff --git a/modules/access/http/access.c
>b/modules/access/http/access.c
>>> index a3805d0d426..123daaf51d3 100644
>>> --- a/modules/access/http/access.c
>>> +++ b/modules/access/http/access.c
>>> @@ -171,19 +171,27 @@ static int Open(vlc_object_t *obj)
>>>      struct vlc_url_t crd_url;
>>>      char *psz_realm = NULL;
>>>  
>>> -    vlc_UrlParse(&crd_url, access->psz_url);
>>> +    char *url_fixup = vlc_uri_fixup(access->psz_url);
>>> +    if (url_fixup == NULL)
>>> +        goto error;
>>> +
>>> +    vlc_UrlParse(&crd_url, url_fixup);
>>>      vlc_credential_init(&crd, &crd_url);
>>>  
>>>      sys->manager = vlc_http_mgr_create(obj, jar);
>>>      if (sys->manager == NULL)
>>> +    {
>>> +        free(url_fixup);
>>>          goto error;
>>> +    }
>>>  
>>>      char *ua = var_InheritString(obj, "http-user-agent");
>>>      char *referer = var_InheritString(obj, "http-referrer");
>>>      bool live = var_InheritBool(obj, "http-continuous");
>>>  
>>>      sys->resource = (live ? vlc_http_live_create :
>vlc_http_file_create)(
>>> -        sys->manager, access->psz_url, ua, referer);
>>> +        sys->manager, url_fixup, ua, referer);
>>> +    free(url_fixup);
>>>      free(referer);
>>>      free(ua); 
>> 
>> -- 
>> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>excuser ma brièveté. 
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel

-- 
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20201009/e84edc39/attachment.html>


More information about the vlc-devel mailing list