aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2023-09-09 12:33:22 +0100
committerChristopher Baines <mail@cbaines.net>2023-09-12 13:11:00 +0100
commit500b14d65fe1a458aa34286572e1ddbf53249ddf (patch)
tree5592e36bb16824ff4cb3c5a5f24ea6e36277a25c /scripts
parent3b996e52e36a574451cb5a5860116a638062db09 (diff)
downloadnar-herder-500b14d65fe1a458aa34286572e1ddbf53249ddf.tar
nar-herder-500b14d65fe1a458aa34286572e1ddbf53249ddf.tar.gz
Use fibers timeouts for all http requests
Diffstat (limited to 'scripts')
-rw-r--r--scripts/nar-herder.in61
1 files changed, 32 insertions, 29 deletions
diff --git a/scripts/nar-herder.in b/scripts/nar-herder.in
index ac3002b..e9d3150 100644
--- a/scripts/nar-herder.in
+++ b/scripts/nar-herder.in
@@ -474,35 +474,38 @@
(string->uri
(string-append (assq-ref opts 'mirror)
"/latest-database-dump"))))
- (call-with-values
- (lambda ()
- (simple-format (current-error-port)
- "starting downloading the database\n")
- (http-get database-uri
- #:decode-body? #f
- #:streaming? #t))
- (lambda (response body)
- (when (not (= (response-code response) 200))
- (error "unable to fetch database from mirror"))
-
- (let* ((reporter (progress-reporter/file
- (uri->string database-uri)
- (response-content-length response)
- (current-error-port)))
- (port
- (progress-report-port
- reporter
- body
- #:download-size (response-content-length response))))
-
- (call-with-output-file (assq-ref opts 'database)
- (lambda (output-port)
- (dump-port port output-port)))
-
- (close-port port))
-
- (simple-format (current-error-port)
- "finished downloading the database\n")))))
+ (with-fibers-port-timeouts
+ (lambda ()
+ (call-with-values
+ (lambda ()
+ (simple-format (current-error-port)
+ "starting downloading the database\n")
+ (http-get database-uri
+ #:decode-body? #f
+ #:streaming? #t))
+ (lambda (response body)
+ (when (not (= (response-code response) 200))
+ (error "unable to fetch database from mirror"))
+
+ (let* ((reporter (progress-reporter/file
+ (uri->string database-uri)
+ (response-content-length response)
+ (current-error-port)))
+ (port
+ (progress-report-port
+ reporter
+ body
+ #:download-size (response-content-length response))))
+
+ (call-with-output-file (assq-ref opts 'database)
+ (lambda (output-port)
+ (dump-port port output-port)))
+
+ (close-port port))
+
+ (simple-format (current-error-port)
+ "finished downloading the database\n"))))
+ #:timeout 30)))
(add-handler! lgr port-log)
(open-log! lgr)