summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorRobert Pluim <rpluim@gmail.com>2019-11-17 21:21:48 +0100
committerRobert Pluim <rpluim@gmail.com>2019-11-25 16:00:09 +0100
commit2d12d4d2d467f5df81e232707ad9191264b7c2b0 (patch)
treecebd1af000cff9ef162f2d976f0bfd632471d2f0 /lisp
parent5a3e96b17c2a948ac952295962dc6e281ec5cad5 (diff)
downloademacs-2d12d4d2d467f5df81e232707ad9191264b7c2b0.tar.gz
emacs-2d12d4d2d467f5df81e232707ad9191264b7c2b0.tar.bz2
emacs-2d12d4d2d467f5df81e232707ad9191264b7c2b0.zip
Handle auth-source-search failures in open-network-stream
If the user cancels the gpg decryption pop-up, auth-source-search fails *and* epa pops up an error buffer. Fix epa to allow suppressing that, and ignore errors returned from auth-source-search. * lisp/epa.el (epa-suppress-error-buffer): New defvar. Bind non-nil to stop epa popping up an error buffer. * lisp/net/network-stream.el: require epa when byte-compiling. (network-stream-certificate): ignore errors when calling auth-source-search, and suppress the epa error buffer.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/epa.el4
-rw-r--r--lisp/net/network-stream.el13
2 files changed, 12 insertions, 5 deletions
diff --git a/lisp/epa.el b/lisp/epa.el
index a2be9a3dbd2..13708d046d6 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -179,6 +179,7 @@ You should bind this variable with `let', but do not set it globally.")
(defvar epa-list-keys-arguments nil)
(defvar epa-info-buffer nil)
(defvar epa-error-buffer nil)
+(defvar epa-suppress-error-buffer nil)
(defvar epa-last-coding-system-specified nil)
(defvar epa-key-list-mode-map
@@ -578,7 +579,8 @@ If SECRET is non-nil, list secret keys instead of public keys."
(message "%s" info)))
(defun epa-display-error (context)
- (unless (equal (epg-context-error-output context) "")
+ (unless (or (equal (epg-context-error-output context) "")
+ epa-suppress-error-buffer)
(let ((buffer (get-buffer-create "*Error*")))
(save-selected-window
(unless (and epa-error-buffer (buffer-live-p epa-error-buffer))
diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el
index 9a796d93ab8..1e9317bc18c 100644
--- a/lisp/net/network-stream.el
+++ b/lisp/net/network-stream.el
@@ -46,6 +46,9 @@
(require 'nsm)
(require 'puny)
+(eval-when-compile
+ (require 'epa)) ; for epa-suppress-error-buffer
+
(declare-function starttls-available-p "starttls" ())
(declare-function starttls-negotiate "starttls" (process))
(declare-function starttls-open-stream "starttls" (name buffer host port))
@@ -225,10 +228,12 @@ gnutls-boot (as returned by `gnutls-boot-parameters')."
;; Either nil or a list with a key/certificate pair.
spec)
((eq spec t)
- (let* ((auth-info
- (car (auth-source-search :max 1
- :host host
- :port service)))
+ (let* ((epa-suppress-error-buffer t)
+ (auth-info
+ (ignore-errors
+ (car (auth-source-search :max 1
+ :host host
+ :port service))))
(key (plist-get auth-info :key))
(cert (plist-get auth-info :cert)))
(and key cert (file-readable-p key) (file-readable-p cert)