From cfd2d8cbadc3c2b744e40c47cdce4344da1eef77 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Mon, 15 Jul 2019 13:04:59 +0200 Subject: [PATCH] Don't delete GnuTLS boot parameters too early To: emacs-devel@gnu.org 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