summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 2646809..becd6a3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -106,6 +106,9 @@ static int event_handling_loop
struct timeval tv;
fd_set in_set, out_set;
int fd_max, error;
+ int timeouts;
+
+ timeouts = 0;
for (;;)
{
@@ -161,6 +164,24 @@ static int event_handling_loop
strerror(error)
);
}
+ else if (error == 0)
+ {
+ timeouts += 1;
+
+ /* 1200 timeouts => 5min */
+ if ((timeouts >= 1200) && (JH_irc_test_connection(irc) != 0))
+ {
+ JH_S_ERROR(stderr, "Timed out.");
+
+ JH_irc_finalize(irc);
+
+ return -1;
+ }
+ }
+ else
+ {
+ timeouts = 0;
+ }
if (JH_irc_post_select(irc, &in_set, &out_set) < 0)
{