From ccd4e4fff6de26364d782994086f118eb4457912 Mon Sep 17 00:00:00 2001 From: michael-grunder Date: Tue, 2 Apr 2024 12:52:50 -0700 Subject: [PATCH] Only override context read/write funcs on SSL_connect success. Fixes #1233 --- ssl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ssl.c b/ssl.c index 21ff35932..c2f6178ac 100644 --- a/ssl.c +++ b/ssl.c @@ -364,7 +364,6 @@ static int redisSSLConnect(redisContext *c, SSL *ssl) { return REDIS_ERR; } - c->funcs = &redisContextSSLFuncs; rssl->ssl = ssl; SSL_set_mode(rssl->ssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); @@ -372,15 +371,19 @@ static int redisSSLConnect(redisContext *c, SSL *ssl) { SSL_set_connect_state(rssl->ssl); ERR_clear_error(); + int rv = SSL_connect(rssl->ssl); if (rv == 1) { + c->funcs = &redisContextSSLFuncs; c->privctx = rssl; return REDIS_OK; } rv = SSL_get_error(rssl->ssl, rv); if (((c->flags & REDIS_BLOCK) == 0) && - (rv == SSL_ERROR_WANT_READ || rv == SSL_ERROR_WANT_WRITE)) { + (rv == SSL_ERROR_WANT_READ || rv == SSL_ERROR_WANT_WRITE)) + { + c->funcs = &redisContextSSLFuncs; c->privctx = rssl; return REDIS_OK; }