Only override context read/write funcs on SSL_connect success.
Fixes #1233
This commit is contained in:
parent
2a7b8fac96
commit
19cfd60d92
7
ssl.c
7
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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user