summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Josefsson <simon@josefsson.org>2005-12-01 11:13:04 +0000
committerSimon Josefsson <simon@josefsson.org>2005-12-01 11:13:04 +0000
commitdd9d4bfd0e3f761ff550b19b8871e7f7a7285945 (patch)
tree58f7ccad9d80fdc6d744f2c9b456a1a6583d3fd3 /src
parent32b68d080f3988893d62e116c06aa03f6f7b3478 (diff)
downloadgnutls-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.c44
1 files changed, 22 insertions, 22 deletions
diff --git a/src/cli.c b/src/cli.c
index 1d6179ae2c..ac5fc31514 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -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))
{