* guix/import/github.scm (json-fetch*): Catch 403 HTTP error that may be raised if a github token has not been set.
Signed-off-by: Mathieu OTHACEHE <m.othac...@gmail.com> --- Hi, If too many github requests are made during a guix refresh (> 60/h), github will reject all further requests with a 403 error. The 403 error is not catch in json-fetch* guard, so guix refresh will exit at that point. The user never gets to error message informing that setting a GUIX_GITHUB_TOKEN may fix the problem. Mathieu guix/import/github.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/guix/import/github.scm b/guix/import/github.scm index df5a6b0e0..1e0bb53d9 100644 --- a/guix/import/github.scm +++ b/guix/import/github.scm @@ -32,10 +32,13 @@ (define (json-fetch* url) "Return a representation of the JSON resource URL (a list or hash table), or -#f if URL returns 404." +#f if URL returns 403 or 404." (guard (c ((and (http-get-error? c) - (= 404 (http-get-error-code c))) - #f)) ;"expected" if package is unknown + (let ((error (http-get-error-code c))) + (or (= 403 error) + (= 404 error)))) + #f)) ;; "expected" if there is an authentification error (403), + ;; or if package is unknown (404). ;; Note: github.com returns 403 if we omit a 'User-Agent' header. (let* ((port (http-fetch url)) (result (json->scm port))) -- 2.11.0