Skip to content

Commit 19cfd60

Browse files
Only override context read/write funcs on SSL_connect success.
Fixes #1233
1 parent 2a7b8fa commit 19cfd60

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

ssl.c

+5-2
Original file line numberDiff line numberDiff line change
@@ -364,23 +364,26 @@ static int redisSSLConnect(redisContext *c, SSL *ssl) {
364364
return REDIS_ERR;
365365
}
366366

367-
c->funcs = &redisContextSSLFuncs;
368367
rssl->ssl = ssl;
369368

370369
SSL_set_mode(rssl->ssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
371370
SSL_set_fd(rssl->ssl, c->fd);
372371
SSL_set_connect_state(rssl->ssl);
373372

374373
ERR_clear_error();
374+
375375
int rv = SSL_connect(rssl->ssl);
376376
if (rv == 1) {
377+
c->funcs = &redisContextSSLFuncs;
377378
c->privctx = rssl;
378379
return REDIS_OK;
379380
}
380381

381382
rv = SSL_get_error(rssl->ssl, rv);
382383
if (((c->flags & REDIS_BLOCK) == 0) &&
383-
(rv == SSL_ERROR_WANT_READ || rv == SSL_ERROR_WANT_WRITE)) {
384+
(rv == SSL_ERROR_WANT_READ || rv == SSL_ERROR_WANT_WRITE))
385+
{
386+
c->funcs = &redisContextSSLFuncs;
384387
c->privctx = rssl;
385388
return REDIS_OK;
386389
}

0 commit comments

Comments
 (0)