From 8ccc64679fb4a21bdc7a8f130e15015dc6caf6a6 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Fri, 21 Jul 2017 20:25:32 +0800
Subject: [PATCH] client: fix redirect ssl to ssl

---
 lib/client-handshake.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/lib/client-handshake.c b/lib/client-handshake.c
index ea402f4e..599ed091 100644
--- a/lib/client-handshake.c
+++ b/lib/client-handshake.c
@@ -454,15 +454,6 @@ lws_client_reset(struct lws **pwsi, int ssl, const char *address, int port,
 	}
 	wsi->redirects++;
 
-#ifdef LWS_OPENSSL_SUPPORT
-	wsi->use_ssl = ssl;
-#else
-	if (ssl) {
-		lwsl_err("%s: not configured for ssl\n", __func__);
-		return NULL;
-	}
-#endif
-
 	p = lws_hdr_simple_ptr(wsi, _WSI_TOKEN_CLIENT_ORIGIN);
 	if (p)
 		strncpy(origin, p, sizeof(origin) - 1);
@@ -479,11 +470,15 @@ lws_client_reset(struct lws **pwsi, int ssl, const char *address, int port,
 	if (p)
 		strncpy(method, p, sizeof(iface) - 1);
 
-	lwsl_debug("redirect ads='%s', port=%d, path='%s', ssl = %d\n",
+	lwsl_notice("redirect ads='%s', port=%d, path='%s', ssl = %d\n",
 		   address, port, path, ssl);
 
 	/* close the connection by hand */
 
+#ifdef LWS_OPENSSL_SUPPORT
+	lws_ssl_close(wsi);
+#endif
+
 #ifdef LWS_USE_LIBUV
 	if (LWS_LIBUV_ENABLED(wsi->context)) {
 		lwsl_debug("%s: lws_libuv_closehandle: wsi %p\n", __func__, wsi);
@@ -502,6 +497,15 @@ lws_client_reset(struct lws **pwsi, int ssl, const char *address, int port,
 
 	remove_wsi_socket_from_fds(wsi);
 
+#ifdef LWS_OPENSSL_SUPPORT
+	wsi->use_ssl = ssl;
+#else
+	if (ssl) {
+		lwsl_err("%s: not configured for ssl\n", __func__);
+		return NULL;
+	}
+#endif
+
 	wsi->desc.sockfd = LWS_SOCK_INVALID;
 	wsi->state = LWSS_CLIENT_UNCONNECTED;
 	wsi->protocol = NULL;
-- 
GitLab