Subject: bug#36660: 27.0.50; :nowait fails when failing over when using TLS

From: Robert Pluim <[email-masked]>
Date: Mon, 15 Jul 2019 13:10:01 +0200

O frabjous day! What a bug number :-)

>From cfd2d8cbadc3c2b744e40c47cdce4344da1eef77 Mon Sep 17 00:00:00 2001
From: Robert Pluim <[email-masked]>
Date: Mon, 15 Jul 2019 13:04:59 +0200
Subject: [PATCH] Don't delete GnuTLS boot parameters too early
To: [email-masked]

When falling back from one IP address to another for the same host, we
need to keep the TLS boot parameters around until we've actually
managed to connect, otherwise the fallback connection(s) will use TCP
rather than TLS.  (Bug#36660)

* src/process.c (connect_network_socket): Don't delete the GnuTLS
boot parameters until after we've managed to connect at the IP
level.
---
 src/process.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/process.c b/src/process.c
index cab390c10c..23c9be2b7b 100644
--- a/src/process.c
+++ b/src/process.c
@@ -3682,11 +3682,14 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
       Lisp_Object boot, params = p->gnutls_boot_parameters;
 
       boot = Fgnutls_boot (proc, XCAR (params), XCDR (params));
-      p->gnutls_boot_parameters = Qnil;
 
       if (p->gnutls_initstage == GNUTLS_STAGE_READY)
+        {
 	/* Run sentinels, etc. */
+          p->gnutls_boot_parameters = Qnil;
+
 	finish_after_tls_connection (proc);
+        }
       else if (p->gnutls_initstage != GNUTLS_STAGE_HANDSHAKE_TRIED)
 	{
 	  deactivate_process (proc);
-- 
2.21.0.419.gffac537e6c