diff options
author | Simon Josefsson <simon@josefsson.org> | 2005-12-01 11:13:04 +0000 |
---|---|---|
committer | Simon Josefsson <simon@josefsson.org> | 2005-12-01 11:13:04 +0000 |
commit | dd9d4bfd0e3f761ff550b19b8871e7f7a7285945 (patch) | |
tree | 58f7ccad9d80fdc6d744f2c9b456a1a6583d3fd3 /src | |
parent | 32b68d080f3988893d62e116c06aa03f6f7b3478 (diff) | |
download | gnutls-dd9d4bfd0e3f761ff550b19b8871e7f7a7285945.tar.gz |
Check starttls_alarmed earlier, the signal might be sent before select
is called. Report by Otto Maddox <ottomaddox@fastmail.fm> and
influenced by tiny patch from Nozomu Ando <nand@mac.com>.
Diffstat (limited to 'src')
-rw-r--r-- | src/cli.c | 44 |
1 files changed, 22 insertions, 22 deletions
@@ -632,6 +632,26 @@ after_handshake: for (;;) { + if (starttls_alarmed) + { + if (hd.secure == 0) + { + fprintf (stderr, "*** Starting TLS handshake\n"); + ret = do_handshake (&hd); + if (ret < 0) + { + fprintf (stderr, "*** Handshake has failed\n"); + socket_bye (&hd); + user_term = 1; + } + } + else + { + user_term = 1; + } + continue; + } + FD_ZERO (&rset); FD_SET (fileno (stdin), &rset); FD_SET (sd, &rset); @@ -639,30 +659,10 @@ after_handshake: maxfd = MAX (fileno (stdin), sd); tv.tv_sec = 3; tv.tv_usec = 0; - err = select (maxfd + 1, &rset, NULL, NULL, &tv); + err = select (maxfd + 1, &rset, NULL, NULL, &tv); if (err < 0) - { - if (errno == EINTR && starttls_alarmed) - { - if (hd.secure == 0) - { - fprintf (stderr, "*** Starting TLS handshake\n"); - ret = do_handshake (&hd); - if (ret < 0) - { - fprintf (stderr, "*** Handshake has failed\n"); - socket_bye (&hd); - user_term = 1; - } - } - else - { - user_term = 1; - } - } - continue; - } + continue; if (FD_ISSET (sd, &rset)) { |