guix-commits
[Top][All Lists]
Advanced

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

02/04: publish: Factorize 'content-length' addition.


From: Ludovic Courtès
Subject: 02/04: publish: Factorize 'content-length' addition.
Date: Sun, 4 Dec 2016 21:33:17 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit 42d07286f42b82df2e4ea45e67c40da0f09f26ec
Author: Ludovic Courtès <address@hidden>
Date:   Sun Dec 4 00:38:30 2016 +0100

    publish: Factorize 'content-length' addition.
    
    * guix/scripts/publish.scm (with-content-length): New procedure.
    (http-write) <application/octet-stream>: Use it.
---
 guix/scripts/publish.scm |   17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 1b32f63..33a7b3b 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -365,6 +365,14 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")."
                            (response-headers response)
                            eq?)))
 
+(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
+                         (alist-delete 'content-length
+                                       (response-headers response)
+                                       eq?))))
+
 (define-syntax-rule (swallow-EPIPE exp ...)
   "Swallow EPIPE errors raised by EXP..."
   (catch 'system-error
@@ -432,13 +440,8 @@ blocking."
             (call-with-input-file (utf8->string body)
               (lambda (input)
                 (let* ((size     (stat:size (stat input)))
-                       (headers  (alist-cons 'content-length size
-                                             (alist-delete 'content-length
-                                                           (response-headers 
response)
-                                                           eq?)))
-                       (response (write-response (set-field response
-                                                            (response-headers)
-                                                            headers)
+                       (response (write-response (with-content-length response
+                                                                      size)
                                                  client))
                        (output   (response-port response)))
                   (dump-port input output)



reply via email to

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