[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#38602: 26.3; gnutls-negotiate fails to handle :verify-error being se
From: |
Robert Pluim |
Subject: |
bug#38602: 26.3; gnutls-negotiate fails to handle :verify-error being set to t |
Date: |
Sat, 14 Dec 2019 13:59:19 +0100 |
>>>>> On Sat, 14 Dec 2019 13:25:56 +1100, Alexis <flexibeast@gmail.com> said:
Alexis> When establishing a connection to an XMPP server, jabber.el ends up
Alexis> calling `gnutls-negotiate' with :verify-error set to `t'. When
Alexis> `gnutls-negotiate' calls `gnutls-boot-parameters', the lines:
Alexis> (when verify-hostname-error
Alexis> (push :hostname verify-error))
Alexis> in the latter create a dotted list rather than a proper list,
Alexis> resulting in jabber.el returning the error message:
Alexis> connection lost: 'STARTTLS negotiation failed: Wrong type
Alexis> argument: listp, (:hostname . t)'
Thatʼs a misleading error message. Itʼs not a proper list, as you say,
but it *is* a list.
How about this? Producing a list (:hostname t) is not what you want,
since that removes the 'check everything' feature of specifying just
't'.
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index 9b13adaefe..14368bc298 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -345,8 +345,11 @@ gnutls-boot-parameters
(t nil))))
(min-prime-bits (or min-prime-bits gnutls-min-prime-bits)))
- (when verify-hostname-error
- (push :hostname verify-error))
+ ;; Only add :hostname if `verify-error' is not t, since t
+ ;; means "include :hostname" Bug#38602.
+ (and verify-hostname-error
+ (not (eq verify-error t))
+ (push :hostname verify-error))
`(:priority ,priority-string
:hostname ,hostname