Subject: Re: bug#19840: "Bad uri header component" when downloading from gitorious.org

From: Mark H Weaver <[email-masked]>
Date: Thu, 19 Feb 2015 03:42:24 -0500

Ricardo Wurmus <[email-masked]> writes:

> Downloading archives from gitorious fails:
>
>     ~/dev/guix $ ./pre-inst-env guix download https://gitorious.org/lv2-synths/lv2-mdametapiano/archive/0.0.1.tar.gz
>     starting download of `/tmp/guix-file.gqYdZs' from `https://gitorious.org/lv2-synths/lv2-mdametapiano/archive/0.0.1.tar.gz'...
>     ERROR: Bad uri header component: /lv2-synths/lv2-mdametapiano/archive/ceb5345396425ad526be34c79eae2b4dfe886d5b.tar.gz

Guile's parsing and validation of HTTP "Location" headers was based on
the now obsolete RFC 2616 section 14.30, which required it to be an
absolute URI.  However, RFC 7231 section 7.1.2 allows it to be any URI
reference, which can include relative URIs.

This will be fixed in Guile 2.0.12.

Additionally, the possibility of HTTP redirects to relative URIs
requires us to determine the target URI based on a relative URI and base
URI, using the algorithm described in RFC 3986 section 5.2.2.

I just pushed commit 04dec194d8 to master which resolves both of these
issues.  I'm closing this bug now.

     Thanks!
       Mark