Commit 19cfd60d authored by michael-grunder's avatar michael-grunder Committed by Michael Grunder
Browse files

Only override context read/write funcs on SSL_connect success.

Fixes #1233
parent 2a7b8fac
...@@ -364,7 +364,6 @@ static int redisSSLConnect(redisContext *c, SSL *ssl) { ...@@ -364,7 +364,6 @@ static int redisSSLConnect(redisContext *c, SSL *ssl) {
return REDIS_ERR; return REDIS_ERR;
} }
c->funcs = &redisContextSSLFuncs;
rssl->ssl = ssl; rssl->ssl = ssl;
SSL_set_mode(rssl->ssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); SSL_set_mode(rssl->ssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
...@@ -372,15 +371,19 @@ static int redisSSLConnect(redisContext *c, SSL *ssl) { ...@@ -372,15 +371,19 @@ static int redisSSLConnect(redisContext *c, SSL *ssl) {
SSL_set_connect_state(rssl->ssl); SSL_set_connect_state(rssl->ssl);
ERR_clear_error(); ERR_clear_error();
int rv = SSL_connect(rssl->ssl); int rv = SSL_connect(rssl->ssl);
if (rv == 1) { if (rv == 1) {
c->funcs = &redisContextSSLFuncs;
c->privctx = rssl; c->privctx = rssl;
return REDIS_OK; return REDIS_OK;
} }
rv = SSL_get_error(rssl->ssl, rv); rv = SSL_get_error(rssl->ssl, rv);
if (((c->flags & REDIS_BLOCK) == 0) && 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; c->privctx = rssl;
return REDIS_OK; return REDIS_OK;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment