Recently Written · git

sacc

Mirror of git://bitreich.org/sacc, the sacc gopher client from bitreich.org.

git clone https://github.com/equwal/sacc

Log | Files | Refs


commit 7d3b71e31c73e122b62fec68a7196586f1b93082
Quentin Rameau <quinq@fifth.space>
2022-09-12 00:22:30 +0200

tls: Refactor code

 io_tls.c | 73 +++++++++++++++++++++++++++++++---------------------------------
 1 file changed, 35 insertions(+), 38 deletions(-)
diff --git a/io_tls.c b/io_tls.c
index 1b072d4..76f7334 100644
--- a/io_tls.c
+++ b/io_tls.c
@@ -17,12 +17,11 @@ close_tls(struct cnx *c)
 {
 	int r;
 
-	if (tls) {
-		if (c->tls) {
-			do {
-				r = tls_close(c->tls);
-			} while (r == TLS_WANT_POLLIN || r == TLS_WANT_POLLOUT);
-		}
+	if (tls && c->tls) {
+		do {
+			r = tls_close(c->tls);
+		} while (r == TLS_WANT_POLLIN || r == TLS_WANT_POLLOUT);
+
 		tls_free(c->tls);
 	}
 
@@ -33,46 +32,44 @@ static int
 connect_tls(struct cnx *c, struct addrinfo *ai, const char *host)
 {
 	struct tls *t;
-	char *r;
-	int s;
+	char *s;
+	int r;
 
 	c->tls = NULL;
-	s = c->sock;
 
-	if (connect(s, ai->ai_addr, ai->ai_addrlen) == -1)
+	if (connect(c->sock, ai->ai_addr, ai->ai_addrlen) == -1)
 		return -1;
 
-	if (tls) {
-		if ((t = tls_client()) == NULL)
-			return -1;
-		if (tls_connect_socket(t, s, host) == 0) {
-			do {
-				s = tls_handshake(t);
-			} while (s == TLS_WANT_POLLIN || s == TLS_WANT_POLLOUT);
-			if (s == 0) {
-				c->tls = t;
-			} else {
-				diag("Can't establish TLS with \"%s\": %s",
-				     host, tls_error(t));
-				r = uiprompt("Retry on cleartext? [Yn]: ");
-				switch (*r) {
-				case 'Y':
-				case 'y':
-				case '\0':
-					tls = 0;
-					s = -2;
-					break;
-				default:
-					s = -3;
-				}
-				free(r);
-			}
-		} else {
-			s = -1;
+	if (!tls)
+		return 0;
+
+	if ((t = tls_client()) == NULL)
+		return -1;
+	if (tls_connect_socket(t, c->sock, host) == -1)
+		return -1;
+	do {
+		r = tls_handshake(t);
+	} while (r == TLS_WANT_POLLIN || r == TLS_WANT_POLLOUT);
+	if (r == 0) {
+		c->tls = t;
+	} else {
+		diag("Can't establish TLS with \"%s\": %s",
+		     host, tls_error(t));
+		s = uiprompt("Retry on cleartext? [Yn]: ");
+		switch (*s) {
+		case 'Y':
+		case 'y':
+		case '\0':
+			tls = 0;
+			r = -2;
+			break;
+		default:
+			r = -3;
 		}
+		free(s);
 	}
 
-	return s;
+	return r;
 }
 
 static void