[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: publish: Remove "Guix-Nar-Compression" header from responses.

From: Ludovic Courtès
Subject: 02/02: publish: Remove "Guix-Nar-Compression" header from responses.
Date: Tue, 9 Jan 2018 17:39:19 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 297e04d66010ada31a40f40143d81bf6b62affcc
Author: Ludovic Courtès <address@hidden>
Date:   Tue Jan 9 22:38:47 2018 +0100

    publish: Remove "Guix-Nar-Compression" header from responses.
    This was harmless but non-compliant and unnecessary.
    * guix/scripts/publish.scm <top level>: Rename "Guix-Nar-Compression" to
    "X-Nar-Compression" as should have always been.
    (render-nar, nar-response-port): Adjust accordingly.
    (strip-headers): New procedure.
    (sans-content-length, with-content-length): Use it.
 guix/scripts/publish.scm | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 6eb5397..1673fb9 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -505,10 +505,10 @@ requested using POOL."
-;; XXX: Declare the 'Guix-Compression' HTTP header, which is in fact for
+;; XXX: Declare the 'X-Nar-Compression' HTTP header, which is in fact for
 ;; internal consumption: it allows us to pass the compression info to
 ;; 'http-write', as part of the workaround to <>.
-(declare-header! "Guix-Nar-Compression"
+(declare-header! "X-Nar-Compression"
                  (lambda (str)
                    (match (call-with-input-string str read)
                      (('compression type level)
@@ -529,7 +529,7 @@ requested using POOL."
     (if (valid-path? store store-path)
         (values `((content-type . (application/x-nix-archive
                                    (charset . "ISO-8859-1")))
-                  (guix-nar-compression . ,compression))
+                  (x-nar-compression . ,compression))
                 ;; XXX: We're not returning the actual contents, deferring
                 ;; instead to 'http-write'.  This is a hack to work around
                 ;; <>.
@@ -638,20 +638,22 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")."
 (define %http-write
   (@@ (web server http) http-write))
+(define (strip-headers response)
+  "Return RESPONSE's headers minus 'Content-Length' and our internal headers."
+  (fold alist-delete
+        (response-headers response)
+        '(content-length x-raw-file x-nar-compression)))
 (define (sans-content-length response)
   "Return RESPONSE without its 'content-length' header."
   (set-field response (response-headers)
-             (alist-delete 'content-length
-                           (response-headers response)
-                           eq?)))
+             (strip-headers response)))
 (define (with-content-length response length)
   "Return RESPONSE with a 'content-length' header set to LENGTH."
   (set-field response (response-headers)
              (alist-cons 'content-length length
-                         (fold alist-delete
-                               (response-headers response)
-                               '(content-length x-raw-file)))))
+                         (strip-headers response))))
 (define-syntax-rule (swallow-EPIPE exp ...)
   "Swallow EPIPE errors raised by EXP..."
@@ -673,7 +675,7 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")."
 (define (nar-response-port response)
   "Return a port on which to write the body of RESPONSE, the response of a
 /nar request, according to COMPRESSION."
-  (match (assoc-ref (response-headers response) 'guix-nar-compression)
+  (match (assoc-ref (response-headers response) 'x-nar-compression)
     (($ <compression> 'gzip level)
      ;; Note: We cannot used chunked encoding here because
      ;; 'make-gzip-output-port' wants a file port.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]