summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-01-15 10:05:54 +0100
committerLudovic Courtès <ludo@gnu.org>2020-01-15 18:40:43 +0100
commite2922f527ee8d891a41b5086637fa560a1c2ddd8 (patch)
tree94b8088674fffcbe909a603203c3bfa73e707b23
parent44ce3ebb46a4e63a892ef1aac2c7b5fa3dec28ce (diff)
downloadguix-e2922f527ee8d891a41b5086637fa560a1c2ddd8.tar.gz
substitute: 'http-multiple-get' processes each request only once.
Fixes <https://bugs.gnu.org/39090>.
Reported by Gábor Boskovits <boskovits@gmail.com>.
Fixes a regression introduced in 9e3f9ac3c00906f5bc647ea8398e4ed5a370614e.

* guix/scripts/substitute.scm (http-multiple-get): In the "Connection: close"
case, pass (drop requests (+ 1 processed)) to 'loop' as the remaining
REQUESTS value.

Previously, we would pass a list containing duplicates, and thus the
final result would also contain duplicates.  When sent to the daemon,
that list would lead to a daemon error:

  got unexpected path `/gnu/store/…' from substituter
-rwxr-xr-xguix/scripts/substitute.scm2
1 files changed, 1 insertions, 1 deletions
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 3bf9b8735f..dfb975a24a 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -557,7 +557,7 @@ initial connection on which HTTP requests are sent."
                (('connection 'close)
                 (close-port p)
                 (connect #f                       ;try again
-                         (append tail (drop requests processed))
+                         (drop requests (+ 1 processed))
                          result))
                (_
                 (loop tail (+ 1 processed) result)))))))))) ;keep going