summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlemens Nanni2021-06-20 22:18:33 +0000
committerC. McEnroe2021-06-21 17:58:28 -0400
commit2b7f62dbd486172de70bd740005af538e46567f7 (patch)
tree3b731cf3c25c18cd786e9f9082fae22668c1fd79
parenta79a3fc9f6d508f93a76fb3fd1bc64e0f51378ea (diff)
Handle EINTR from connect(2) gracefully
Resizing the window early on may return early due to SIGWINCH. Continue asynchronously in that case instead of exiting.
-rw-r--r--irc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/irc.c b/irc.c
index 3f0de3c..41739a3 100644
--- a/irc.c
+++ b/irc.c
@@ -27,6 +27,7 @@
#include <assert.h>
#include <err.h>
+#include <errno.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdarg.h>
@@ -148,6 +149,7 @@ int ircConnect(const char *bindHost, const char *host, const char *port) {
error = connect(sock, ai->ai_addr, ai->ai_addrlen);
if (!error) break;
+ if (error && errno == EINTR) break; // connect continues asynchronously
close(sock);
sock = -1;