summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-05-11 10:23:27 +0200
committerLudovic Courtès <ludo@gnu.org>2017-05-11 18:05:42 +0200
commit24b21720f7c3a368efc32017c126e107a5d76f52 (patch)
tree326f165b42f7b21d703984626ec44144cf0ed67f /guix
parent5899fafbfefcd7682aec8f2caaaad3add678a3c4 (diff)
publish: Advertise a short TTL for "baking" 404s.
* guix/scripts/publish.scm (not-found): Add #:phrase and #:ttl parameters and honor them. * tests/publish.scm ("with cache"): Check the 'cache-control' header on of the 404 response.
Diffstat (limited to 'guix')
-rw-r--r--guix/scripts/publish.scm15
1 files changed, 11 insertions, 4 deletions
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index efaa549676..8da75cb825 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -300,10 +300,15 @@ References: ~a~%~a"
(canonical-sexp->string (signed-string info)))))
(format #f "~aSignature: 1;~a;~a~%" info (gethostname) signature)))
-(define (not-found request)
+(define* (not-found request
+ #:key (phrase "Resource not found")
+ ttl)
"Render 404 response for REQUEST."
- (values (build-response #:code 404)
- (string-append "Resource not found: "
+ (values (build-response #:code 404
+ #:headers (if ttl
+ `((cache-control (max-age . ,ttl)))
+ '()))
+ (string-append phrase ": "
(uri-path (request-uri request)))))
(define (render-nix-cache-info)
@@ -434,7 +439,9 @@ requested using POOL."
(file-expiration-time ttl)
#:delete-entry delete-entry
#:cleanup-period ttl))))
- (not-found request))
+ (not-found request
+ #:phrase "We're baking it"
+ #:ttl 300)) ;should be available within 5m
(else
(not-found request)))))