Re: pkgs contain non URL safe characters
- Reply: Aristedes Maniatis : "Re: pkgs contain non URL safe characters"
- In reply to: Aristedes Maniatis : "Re: pkgs contain non URL safe characters"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 01 Mar 2022 13:45:25 UTC
On 3/1/22 14:25, Aristedes Maniatis wrote: > On 1/3/2022 10:57pm, Ronald Klop wrote: > >> >> The + character is not special in this part of the URL. The request send by pkg is compliant to the specs. >> >> I'm aware of having specs and having what browsers and servers do in real life. >> Why does Cloudfront decode a + to a space in this part of the URL? >> >> Regards, >> Ronald. > > > You are exactly correct. Turns out that AWS S3 is not following RFC 1866 <https://datatracker.ietf.org/doc/html/rfc1866> and hasn't since the beginning. And I'm guessing it is now too late. With this new information I've finally found a thread complaining about this (it affects other repos like apt). > > https://forums.aws.amazon.com/thread.jspa?threadID=55746 > > > My little hack of renaming openjdk packages will have to stay I guess. > > > Thanks > > Ari > You could try the untested patch below as "compatibility fix", but I'm not sure if that will not break other valid URLs passed to fetch/pkg. Apparently pkg embeds libfetch statically: https://github.com/freebsd/pkg/tree/master/external/libfetch . This patch is against the FreeBSD base. diff --git a/lib/libfetch/fetch.c b/lib/libfetch/fetch.c index 82a3c5e451a..496425cea47 100644 --- a/lib/libfetch/fetch.c +++ b/lib/libfetch/fetch.c @@ -451,7 +451,7 @@ fetchParseURL(const char *URL) } u->doc = doc; while (*p != '\0') { - if (!isspace((unsigned char)*p)) { + if (!isspace((unsigned char)*p) && *p != '+') { *doc++ = *p++; } else { *doc++ = '%';