summary refs log tree commit diff
path: root/irc.c
diff options
context:
space:
mode:
Diffstat (limited to 'irc.c')
-rw-r--r--irc.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/irc.c b/irc.c
index 02a9f64..b718b13 100644
--- a/irc.c
+++ b/irc.c
@@ -15,16 +15,17 @@
  */
 
 #include <err.h>
+#include <fcntl.h>
+#include <netdb.h>
+#include <netinet/in.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/socket.h>
 #include <sysexits.h>
 #include <tls.h>
 #include <unistd.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
 
 #include "chat.h"
 
@@ -68,6 +69,9 @@ int ircConnect(const char *host, const char *port, const char *webPass) {
 	int sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
 	if (sock < 0) err(EX_OSERR, "socket");
 
+	error = fcntl(sock, F_SETFD, FD_CLOEXEC);
+	if (error) err(EX_IOERR, "fcntl");
+
 	error = connect(sock, ai->ai_addr, ai->ai_addrlen);
 	if (error) err(EX_UNAVAILABLE, "connect");
 	freeaddrinfo(ai);
@@ -111,7 +115,7 @@ void ircRead(void) {
 	ssize_t read = tls_read(client, &buf[len], sizeof(buf) - len);
 	if (read < 0) errx(EX_IOERR, "tls_read: %s", tls_error(client));
 	if (!read) {
-		uiHide();
+		uiExit();
 		exit(EX_OK);
 	}
 	len += read;