Continue open SSL connect loop on recoverable errors
This commit is contained in:
@@ -102,9 +102,11 @@ int tls_start(tls_t *tls)
|
|||||||
succeeds or fails */
|
succeeds or fails */
|
||||||
while (ret < 0) {
|
while (ret < 0) {
|
||||||
ret = SSL_connect(tls->ssl);
|
ret = SSL_connect(tls->ssl);
|
||||||
|
int err = SSL_get_error(tls->ssl, ret);
|
||||||
|
int recoverable = tls_is_recoverable(err);
|
||||||
|
|
||||||
/* wait for something to happen on the sock before looping back */
|
// continue if recoverable
|
||||||
if (ret < 0) {
|
if (recoverable) {
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
|
||||||
@@ -115,6 +117,8 @@ int tls_start(tls_t *tls)
|
|||||||
FD_SET(tls->sock, &fds);
|
FD_SET(tls->sock, &fds);
|
||||||
|
|
||||||
select(tls->sock + 1, &fds, &fds, NULL, &tv);
|
select(tls->sock + 1, &fds, &fds, NULL, &tv);
|
||||||
|
} else {
|
||||||
|
ret = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user