diff options
author | Rodrigo Arias Mallo <rodarima@gmail.com> | 2024-01-11 20:50:09 +0100 |
---|---|---|
committer | Rodrigo Arias Mallo <rodarima@gmail.com> | 2024-01-15 19:03:38 +0100 |
commit | f53fe9bc1fefbb15d3626912093112b511a632c8 (patch) | |
tree | 72183cb3788e666e792cd252c713f0d0f69f1812 /src | |
parent | cced4fae9d424c3d715244c301b2f124f894fa8d (diff) |
Remove fd watch while perforing TLS check
Avoids calling the callback while the TLS dialog is opened, which was
causing and infinite loop of recursive calls to Tls_connect().
Fixes: https://github.com/dillo-browser/dillo/issues/49
Diffstat (limited to 'src')
-rw-r--r-- | src/IO/tls_openssl.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/IO/tls_openssl.c b/src/IO/tls_openssl.c index 18367e64..d686c472 100644 --- a/src/IO/tls_openssl.c +++ b/src/IO/tls_openssl.c @@ -1087,6 +1087,8 @@ static void Tls_connect(int fd, int connkey) ret = SSL_connect(conn->ssl); + a_IOwatch_remove_fd(fd, -1); + if (ret <= 0) { int err1_ret = SSL_get_error(conn->ssl, ret); if (err1_ret == SSL_ERROR_WANT_READ || @@ -1095,7 +1097,6 @@ static void Tls_connect(int fd, int connkey) _MSG("iowatching fd %d for tls -- want %s\n", fd, err1_ret == SSL_ERROR_WANT_READ ? "read" : "write"); - a_IOwatch_remove_fd(fd, -1); a_IOwatch_add_fd(fd, want, Tls_connect_cb, INT2VOIDP(connkey)); ongoing = TRUE; failed = FALSE; |