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

Rémi Denis-Courmont remi at remlab.net
Fri Oct 9 10:21:11 CEST 2020


When I open a playlist with a whitespace in the URL, it gets turned into %20. When I follow a redirect, ditto.

URL on CLI don't work nicely, never will, no matter how much it annoys me that I can't just do:
# vlc https://tube.example.com/videos/?item=1234&playlist=abcd
It can perhaps be improved but access is not the place for CLI specific hacks.

Le 9 octobre 2020 11:01:36 GMT+03:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>"VLC should automatically replace spaces with %20 like all browsers do"
>
>It's not the case when I type: ./vlc "https://server/file name.mp3"
>
>So, how can you say that #3435 is fixed?
>
>You are right about one point, it should not be done in http modules,
>but at a higher level when we know the url come from an user.
>
>
>On Fri, Oct 9, 2020, at 09:59, Rémi Denis-Courmont wrote:
>> 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é. 
>> _______________________________________________
>> 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/390e20c9/attachment.html>


More information about the vlc-devel mailing list