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;