summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-07-14 15:19:07 +0200
committerLudovic Courtès <ludo@gnu.org>2016-07-14 19:07:07 +0200
commita7a3b390600351014bee523cadb25c9a242064e9 (patch)
tree096eb01921d6745f7675b08b6fafa421ff053591
parent6619f9c7696d2cae54a8f4e235bfed0e3e36f36d (diff)
downloadguix-a7a3b390600351014bee523cadb25c9a242064e9.tar.gz
substitute: Gracefully handle trailing slashes in URLs.
Previously, using something like
"--substitute-urls=http://example.org///" would lead to a
'cache-narinfo!' call with #f as its second argument.

It would also do the wrong thing for URLs with a non-empty initial path
component, such as "http://example.org/foo/bar".

* guix/scripts/substitute.scm (fetch-narinfos)[handle-narinfo-response]:
Add call to 'basename' for PATH.
-rwxr-xr-xguix/scripts/substitute.scm3
1 files changed, 2 insertions, 1 deletions
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 5722aa821d..8827c45fb8 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -610,7 +610,8 @@ if file doesn't exist, and the narinfo otherwise."
             (update-progress!)
             (cons narinfo result))
           (let* ((path      (uri-path (request-uri request)))
-                 (hash-part (string-drop-right path 8))) ; drop ".narinfo"
+                 (hash-part (basename
+                             (string-drop-right path 8)))) ;drop ".narinfo"
             (if len
                 (get-bytevector-n port len)
                 (read-to-eof port))