aboutsummaryrefslogtreecommitdiff
path: root/guix/scripts/publish.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-12-09 18:11:14 +0100
committerLudovic Courtès <ludo@gnu.org>2016-12-09 18:11:14 +0100
commitf80b4d2ce09b0b7770cbdf2f90704d41b0a168c5 (patch)
treeec47c7ee5d5579cfa00f13b5038ff3d8c87e4a48 /guix/scripts/publish.scm
parent13b5f44b475aa385d580f7e19b907210bc1d6d99 (diff)
parent2608e40988ba8cf51723fe0d21bdedf6b3997c9c (diff)
downloadgnu-guix-f80b4d2ce09b0b7770cbdf2f90704d41b0a168c5.tar
gnu-guix-f80b4d2ce09b0b7770cbdf2f90704d41b0a168c5.tar.gz
Merge remote-tracking branch 'origin/master' into staging
Diffstat (limited to 'guix/scripts/publish.scm')
-rw-r--r--guix/scripts/publish.scm17
1 files changed, 10 insertions, 7 deletions
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 1b32f639ea..33a7b3bd42 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)