[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/06: lint: Extract network-related exception handling.
From: |
Ludovic Courtès |
Subject: |
02/06: lint: Extract network-related exception handling. |
Date: |
Sat, 28 Oct 2017 03:46:10 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 4b879e0acf30e7ac941cff5581107b23c29e1883
Author: Ludovic Courtès <address@hidden>
Date: Fri Oct 27 14:23:40 2017 -0700
lint: Extract network-related exception handling.
* guix/scripts/lint.scm (call-with-networking-fail-safe): New procedure.
(with-networking-fail-safe): New macro.
(current-vulnerabilities*): Rewrite in terms of 'with-networking-fail-safe'.
---
guix/scripts/lint.scm | 41 +++++++++++++++++++++++++----------------
1 file changed, 25 insertions(+), 16 deletions(-)
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index 0338d4c..ec6446e 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -792,35 +792,44 @@ be determined."
((? origin?)
(and=> (origin-actual-file-name patch) basename))))
-(define (current-vulnerabilities*)
- "Like 'current-vulnerabilities', but return the empty list upon networking
-or HTTP errors. This allows network-less operation and makes problems with
-the NIST server non-fatal.."
+(define (call-with-networking-fail-safe message error-value proc)
+ "Call PROC catching any network-related errors. Upon a networking error,
+display a message including MESSAGE and return ERROR-VALUE."
(guard (c ((http-get-error? c)
- (warning (G_ "failed to retrieve CVE vulnerabilities \
-from ~s: ~a (~s)~%")
+ (warning (G_ "~a: HTTP GET error for ~a: ~a (~s)~%")
+ message
(uri->string (http-get-error-uri c))
(http-get-error-code c)
(http-get-error-reason c))
- (warning (G_ "assuming no CVE vulnerabilities~%"))
- '()))
+ error-value))
(catch #t
- (lambda ()
- (current-vulnerabilities))
+ proc
(match-lambda*
(('getaddrinfo-error errcode)
- (warning (G_ "failed to lookup NIST host: ~a~%")
+ (warning (G_ "~a: host lookup failure: ~a~%")
+ message
(gai-strerror errcode))
- (warning (G_ "assuming no CVE vulnerabilities~%"))
- '())
+ error-value)
(('tls-certificate-error args ...)
- (warning (G_ "TLS certificate error: ~a")
+ (warning (G_ "~a: TLS certificate error: ~a")
+ message
(tls-certificate-error-string args))
- (warning (G_ "assuming no CVE vulnerabilities~%"))
- '())
+ error-value)
(args
(apply throw args))))))
+(define-syntax-rule (with-networking-fail-safe message error-value exp ...)
+ (call-with-networking-fail-safe message error-value
+ (lambda () exp ...)))
+
+(define (current-vulnerabilities*)
+ "Like 'current-vulnerabilities', but return the empty list upon networking
+or HTTP errors. This allows network-less operation and makes problems with
+the NIST server non-fatal."
+ (with-networking-fail-safe (G_ "while retrieving CVE vulnerabilities")
+ '()
+ (current-vulnerabilities)))
+
(define package-vulnerabilities
(let ((lookup (delay (vulnerabilities->lookup-proc
(current-vulnerabilities*)))))
- branch master updated (ed1f071 -> 34b1f33), Ludovic Courtès, 2017/10/28
- 02/06: lint: Extract network-related exception handling.,
Ludovic Courtès <=
- 06/06: graph: Remove mention of Graphviz from the summary line., Ludovic Courtès, 2017/10/28
- 05/06: import: elpa: Do not abort when failing to download the archive., Ludovic Courtès, 2017/10/28
- 04/06: import: github: Gracefully handle multiple-URL origins., Ludovic Courtès, 2017/10/28
- 03/06: lint: 'refresh' gracefully handles lack of networking access., Ludovic Courtès, 2017/10/28
- 01/06: scripts: Factorize option parsing sans 'GUIX_BUILD_OPTIONS'., Ludovic Courtès, 2017/10/28