diff --git a/lib/client-handshake.c b/lib/client-handshake.c
index ea402f4e182c815ad58911701c10ca0a3e89dd34..599ed091814ff2091930c73c78a8527724190cea 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;