summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Monnerat <patrick@monnerat.net>2021-04-23 00:33:46 +0200
committerDaniel Stenberg <daniel@haxx.se>2021-04-23 14:41:39 +0200
commita4554b2c5e7c5788c8198001598818599c60ff7d (patch)
treee677d8dcf15c13b0a81c5d0ac106661dffb5be2a
parent47e169e7a46dd0932ede5225768aa666730820f1 (diff)
downloadcurl-a4554b2c5e7c5788c8198001598818599c60ff7d.tar.gz
vtls: reset ssl use flag upon negotiation failure
Fixes the segfault in ldaps disconnect. Reported-by: Illarion Taev Fixes #6934 Closes #6937
-rw-r--r--lib/vtls/vtls.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
index 2e07df0a0..4bd60f6b9 100644
--- a/lib/vtls/vtls.c
+++ b/lib/vtls/vtls.c
@@ -315,6 +315,8 @@ Curl_ssl_connect(struct Curl_easy *data, struct connectdata *conn,
if(!result)
Curl_pgrsTime(data, TIMER_APPCONNECT); /* SSL is connected */
+ else
+ conn->ssl[sockindex].use = FALSE;
return result;
}
@@ -338,7 +340,9 @@ Curl_ssl_connect_nonblocking(struct Curl_easy *data, struct connectdata *conn,
/* mark this is being ssl requested from here on. */
conn->ssl[sockindex].use = TRUE;
result = Curl_ssl->connect_nonblocking(data, conn, sockindex, done);
- if(!result && *done)
+ if(result)
+ conn->ssl[sockindex].use = FALSE;
+ else if(*done)
Curl_pgrsTime(data, TIMER_APPCONNECT); /* SSL is connected */
return result;
}